想把自己的一个项目尝试改为均衡负载+弹性伸缩方案,其他无节点化的改进方案都有了,但唯独代码更新这一块还没找到好的方案。
我现在只有一台 ECS,上面放前端和后端的代码,平时有更新的时候,后端代码用 git pull 就 OK 了,前端代码就 webpack 打包好后上传到服务器。
看过 Jenkins,我理解这个主要是用 git 的 webhooks 来通知 Jenkins 进行一系列自定义命令操作。
但这种方法在没有弹性伸缩的情况下才有用吧,我甚至不用 Jenkins,登陆负载均衡集群里的一台机,进行 rsync 操作也可以,但如果加上了弹性伸缩,我无法知道我每次更新当前集群有多少台机以及每台机的 IP (内网)是多少
我在这里就卡住了,也搜不到什么相关的方案,可能是我关键字没命中到?求各位大佬指教了~
1
yufeng0681 2019-04-26 23:21:10 +08:00
弹性伸缩这种大型方案,你这几百字哪里够……
我看阿里云有卖 弹性伸缩方案,可以按他的思路看看。买来用用 |
2
opengps 2019-04-26 23:31:32 +08:00
每次去做个更新系统模版,然后逐步把所有机器更新系统
|
3
opengps 2019-04-26 23:36:09 +08:00
弹性伸缩是云的架构出来之后才开始后的,市面上确实不多见。算不上是关键字查询不到的问题
不过真用到弹性架构了,那么主要依赖的是系统镜像。因为同样任务的机器数量很大,逐台更新不现实,自动检测更新也不够靠谱。 一般建议是配合 slb 的权重 0,创建一批机器 0 权重的机器,然后尽量修改权重切换到新版本机器上,然后释放掉旧版本的服务器 |
4
defunct9 2019-04-26 23:40:34 +08:00
k8s
|
5
xdays 2019-04-26 23:59:01 +08:00
你这个场景要解决两个问题:
1. 已有机器的部署,这块需要像 ansible 之类的工具,每次动态拿到当前的机器列表,ansible 应该有阿里云的动态 inventory 脚本 2. 对于那部分由弹性伸缩创建出来的机器,一般云厂商都支持创建机器的时候运行一个启动脚本,这个脚本就是用来初始化机器的,你要在这个脚本里完成代码环境和代码本身的安装和部署。 |
6
shynome 2019-04-27 00:26:02 +08:00 via Android
阿里云的 k8s 好像能做到,不过就是弹性伸缩的机器比较贵
|
7
tomczhen 2019-04-27 00:43:44 +08:00
需要可以通过云平台 api 管理云设施。
1。利用云平台启动脚本完成 ansible / saltstack 的节点初始化工作,再使用 ansible / saltstack 完成环境初始化,部署,更新,加入或移除负载需要通过云平台 api 完成。 2。云平台的 k8s 集群一般都有开箱可用方案,但是需要对项目做容器化改造适应。 |
8
EileenJ 2019-04-27 17:22:05 +08:00 via Android
代码放在文件存储 NAS 上面,系统只有运行环境
|
9
fire9 2019-04-27 18:44:17 +08:00
如果你用的是 aws auto scaling, 这个是根据设定监控的阈值来做自动的伸缩.举个栗子,如果你的设定 cpu 达到 70%负载的时候,就可以出发自动启动一台或多台实例,它也会自动使用 lb 来添加节点.反之也可以关闭实例.
|
10
fire9 2019-04-27 18:45:13 +08:00
如果你使用 Jenkins 来做,估计需要编写大量的代码了.另外,webhook 只是一种.jenkins 可以通过多种方式来实现 CD.
|