指出一个 V2EX 几乎所有初次接触弹性伸缩的人都出现的问题
--- 混淆了 「固定机器 CD 模式」和「 云 AS CD 模式」
『固定机器模式』:默认认为机器不变,增减都是人工处理,环境是机器初始化时人肉装好,CD 主要指的是通过配置工具(比如 ansible )将「代码包」 push 到「现网机器」,然后替换旧的代码,重启服务这个过程
「云 AS CD 模式」:天然要接受「机器是变的 变的 变的」,环境是通过「 AS 启动配置」配置的镜像 ID+实例启动脚本定义,CD 主要指的是将「代码包 => 镜像制作机器 /服务」,然后通过「制作新的镜像」,这时候最大区别来了,不是 push 「代码包到现网机器」,而是将集群(也就是 AS 伸缩组)内实例通过重装 /重建的方式全部更换为「新镜像』
--- 90%的人理解的 CD 都是「固定机器模式」,所以楼主先理解了上面 2 个区别,再来谈如何用 AS 这个服务
--- 你提到的用 NAS 存储「代码包」,本质上是用「 NAS 」代替「镜像」来存储代码包,手段和目的差不多,当然面临的问就是你意识到的如何保证流程的顺序性以及容错机制
--- 回答一下问题,1.更新代码是更新启动配置,也就是更新镜像,镜像+启动脚本一致实例就一致了 2.重建 /重装镜像
PS:回答 from QCloud 员工,从我们的实践云的模式是绝对优于固定机器模式,但目前 90%以上人无法正确理解和过渡到云的模式,我们正在做一些尝试,后续可以关注下新发布