最近在部署机器的时候发现有部署失败的情况,深入研究后发现是部署策略存在问题,导致部署不会开始。这里来研究一下常见的部署策略。

部署限制

部署速度设置

  • 同时可部署主机比例(legancy):
    通常我们需要在部署速度与部署过程中服务的可用性方面进行权衡,部署速度一般来讲是将同一时间可以部署的主机数量设置为33.0%。同时部署的主机比例越高,部署完成的速度就会越快,但是对服务的需求超过其可用性的风险也就会越大。但是该方式未考虑到部署的机器是否是健康的。

机群“健康”设置

“健康”主机的定义:
当前没有正在部署的机器
之前部署未失败的机器
在正常运行中的机器,即可以正常接收流量的机器

当对该部分内容进行设置时,需要保证机群的部分机器始终可以正常运行,如果有机器部署失败,将会停止进一步部署。“健康”主机的比例是我们在这里需要考虑的参数,其值越低部署的速度就越快,对服务的需求超过其可用性的风险也就越大。在这里我们可以考虑以下参数来对其进行设置。

  • 健康主机百分比:
    通常情况下,将该值设置为66%,这意味着有66%的hosts将始终保持健康的状态。这里需要考虑到的一个特殊情况是,如果只有两台主机,那么在该限制下将不会进行部署。因此我们需要引入新的参数。
  • 允许回退无效的健康主机百分比:
    该参数可以设置为true或者false,在设置为true的情况下,如果遇到上面提到的特殊情况,即健康主机百分比设置为66%,而只有两台主机的时候,会自动调整比例为(2-1)/2 = 50%,以便可以至少部署一台。同样,对于只有一台主机的情况下,如果该参数为true,则会将66%调整为(1-1)/1 = 0%,即可允许部署进行。

best practice

健康主机百分比: 66%
允许回退无效的健康主机百分比: true

服务健康检查

服务上线应该保证万无一失,因此我们应该在部署过程中对服务再次进行测试。通常来说,这包括健全性测试与验证测试。

健全性测试:

该步骤通过运行测试来确定所在主机上运行的软件是否良好。它会在接收流量前运行。

验证测试:

该步骤用来测试关键功能是否正常运行,它可能会在服务开始接收流量后进行,因此使用该测试需要格外小心。

自动回滚:

打开该功能,可以为该部署添加监控和警报,如果在部署后一段时间,某些监控项偏离我们设定的范围,我们可以自动回滚到上个版本。

主机选择

对于部署的机器我们也可以进行更加细粒度的选择,比如应该同时部署某个可用区中的机器,还是按比例部署所有可用区中的机器等。

跨数据中心部署:

打开该设置,可以平衡部署我们所有可用区中的机器,即,如果我们有30台主机平均分布在三个可用区上,并且已经将最大部署比例设置为30%,那么将会选择九台机器,每个可用区中选择三台。

通过调整合适的部署策略,可以在最大程度上保证我们服务的可用性。


Xinli
1 声望0 粉丝

« 上一篇
超时与重试
下一篇 »
拒绝服务过载