弹性伸缩的方案中如何部署更新代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
raysonlu

弹性伸缩的方案中如何部署更新代码?

  •  
  •   raysonlu Apr 26, 2019 3359 views
    This topic created in 2558 days ago, the information mentioned may be changed or developed.

    想把自己的一个项目尝试改为均衡负载+弹性伸缩方案,其他无节点化的改进方案都有了,但唯独代码更新这一块还没找到好的方案。

    我现在只有一台 ECS,上面放前端和后端的代码,平时有更新的时候,后端代码用 git pull 就 OK 了,前端代码就 webpack 打包好后上传到服务器。

    看过 Jenkins,我理解这个主要是用 git 的 webhooks 来通知 Jenkins 进行一系列自定义命令操作。

    但这种方法在没有弹性伸缩的情况下才有用吧,我甚至不用 Jenkins,登陆负载均衡集群里的一台机,进行 rsync 操作也可以,但如果加上了弹性伸缩,我无法知道我每次更新当前集群有多少台机以及每台机的 IP (内网)是多少

    我在这里就卡住了,也搜不到什么相关的方案,可能是我关键字没命中到?求各位大佬指教了~

    10 replies    2019-04-27 18:45:13 +08:00
    yufeng0681
        1
    yufeng0681  
       Apr 26, 2019
    弹性伸缩这种大型方案,你这几百字哪里够……
    我看阿里云有卖 弹性伸缩方案,可以按他的思路看看。买来用用
    opengps
        2
    opengps  
       Apr 26, 2019
    每次去做个更新系统模版,然后逐步把所有机器更新系统
    opengps
        3
    opengps  
       Apr 26, 2019
    弹性伸缩是云的架构出来之后才开始后的,市面上确实不多见。算不上是关键字查询不到的问题
    不过真用到弹性架构了,那么主要依赖的是系统镜像。因为同样任务的机器数量很大,逐台更新不现实,自动检测更新也不够靠谱。
    一般建议是配合 slb 的权重 0,创建一批机器 0 权重的机器,然后尽量修改权重切换到新版本机器上,然后释放掉旧版本的服务器
    defunct9
        4
    defunct9  
       Apr 26, 2019
    k8s
    xdays
        5
    xdays  
       Apr 26, 2019
    你这个场景要解决两个问题:

    1. 已有机器的部署,这块需要像 ansible 之类的工具,每次动态拿到当前的机器列表,ansible 应该有阿里云的动态 inventory 脚本
    2. 对于那部分由弹性伸缩创建出来的机器,一般云厂商都支持创建机器的时候运行一个启动脚本,这个脚本就是用来初始化机器的,你要在这个脚本里完成代码环境和代码本身的安装和部署。
    shynome
        6
    shynome  
       Apr 27, 2019 via Android
    阿里云的 k8s 好像能做到,不过就是弹性伸缩的机器比较贵
    tomczhen
        7
    tomczhen  
       Apr 27, 2019
    需要可以通过云平台 api 管理云设施。

    1。利用云平台启动脚本完成 ansible / saltstack 的节点初始化工作,再使用 ansible / saltstack 完成环境初始化,部署,更新,加入或移除负载需要通过云平台 api 完成。

    2。云平台的 k8s 集群一般都有开箱可用方案,但是需要对项目做容器化改造适应。
    EileenJ
        8
    EileenJ  
       Apr 27, 2019 via Android
    代码放在文件存储 NAS 上面,系统只有运行环境
    fire9
        9
    fire9  
       Apr 27, 2019
    如果你用的是 aws auto scaling, 这个是根据设定监控的阈值来做自动的伸缩.举个栗子,如果你的设定 cpu 达到 70%负载的时候,就可以出发自动启动一台或多台实例,它也会自动使用 lb 来添加节点.反之也可以关闭实例.
    fire9
        10
    fire9  
       Apr 27, 2019
    如果你使用 Jenkins 来做,估计需要编写大量的代码了.另外,webhook 只是一种.jenkins 可以通过多种方式来实现 CD.
    About     Help     Advertise     Blog     API     FAQ     Solana     1058 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 22:36 PVG 06:36 LAX 15:36 JFK 18:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86