Amazon (AWS) 上的负载平衡并保持最新状态

jch*_*ysk 6 load-balancing amazon-web-services amazon-elb amazon-cloudwatch

我想为我的网站安装一个负载均衡器并使网站保持最新。当处理能力达到一定水平时,负载均衡器将采用我选择的 AMI 并启动更多这些实例。问题是 AMI 可能不是最新的,所以我会有一些实例是最新的,而另一些则不是。当我部署时,我可以毫无问题地部署到负载均衡器下的所有实例,但我需要知道负载均衡器何时启动新实例以触发此部署。当更新发生时,也会有一段时间大大降低其响应能力。所以我想出了一个计划。

我的计划:

部署后:

    identify one of the instances and
        get instance id
    identify volume of instance id
    ec2-create-snapshot vol-yyyyyyyy
        get snapshot volume id
    ec2reg -s snap-zzzzzzzz -a x86 -d Description -n imagename
        get image id
    as-delete-launch-config existinglaunchconfig
    as-create-launch-config mylaunchconfig --image-id IMAGEID --instance-type m1.small --key mykey --group mysecuritygroup
    as-update-auto-scaling-group --launch-configuration mylaunchconfig
Run Code Online (Sandbox Code Playgroud)

在我花很多时间试图弄清楚这一点并编写所有脚本、测试和其他所有内容之前,我的问题是:这行得通吗?有没有更好的办法?是否有任何人都知道的教程或帖子可以加快我在这个问题上的努力?谢谢。

Eri*_*ond 7

可以与 AWS 一起使用的另一种方法是将更新的站点/数据/配置存储在诸如 S3 之类的地方。配置 AMI(或指定适当的用户数据脚本),以便在启动新实例时自动更新。您可以通过在更新完成之前不积极响应运行状况检查来防止将其添加到负载均衡器。

否则,如果您需要更快地出现实例,那么您的方法似乎是合理的。只需确保在开始更新实时实例之前暂停自动缩放,并在新的启动配置之后恢复。您不希望它启动未更新的实例。

我也不确定您是否可以删除 ELB 正在使用的启动配置。这一步可能要等到它被替换后。当您发现时,请在此处发布更新。