Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 如何在不停机或减少冗余的情况下更换ECS群集实例?_Amazon Ec2_Amazon Ecs - Fatal编程技术网

Amazon ec2 如何在不停机或减少冗余的情况下更换ECS群集实例?

Amazon ec2 如何在不停机或减少冗余的情况下更换ECS群集实例?,amazon-ec2,amazon-ecs,Amazon Ec2,Amazon Ecs,我目前有一个试用环境,共有16个服务,分为4个微实例。实例由自动缩放组(ASG)管理。当我需要更新集群实例的AMI时,目前我会: 创建新的启动配置,使用新的启动配置编辑ASG 使用替换选项从ASG分离所有实例,并等待新实例在集群实例列表中列出 从ECS集群手动查找并注销旧实例(非常棘手) 现在由于实例注销,服务被ECS终止:( 等待3分钟,直到在新实例上重新启动服务 在EC2实例列表中手动查找EC2实例并终止它们(非常小心不要终止新实例) 使用这种方法,我有大约3分钟的停机时间,我对在生产环境中

我目前有一个试用环境,共有16个服务,分为4个微实例。实例由自动缩放组(ASG)管理。当我需要更新集群实例的AMI时,目前我会:

  • 创建新的启动配置,使用新的启动配置编辑ASG
  • 使用替换选项从ASG分离所有实例,并等待新实例在集群实例列表中列出
  • 从ECS集群手动查找并注销旧实例(非常棘手)
  • 现在由于实例注销,服务被ECS终止:(
  • 等待3分钟,直到在新实例上重新启动服务
  • 在EC2实例列表中手动查找EC2实例并终止它们(非常小心不要终止新实例)

  • 使用这种方法,我有大约3分钟的停机时间,我对在生产环境中这样做的想法感到不寒而栗。有没有一种方法可以在不停机的情况下做到这一点,但保持实例的总量不变(因此没有200%的缩放设置等).

    您可以使用新的AMI更新启动配置,然后将其分配给ASG。请确保在用户数据部分包含以下内容:

    echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    
    然后一次终止一个实例,等待新实例启动并自动注册后再终止下一个实例


    这也可以自动编写脚本。

    是的,我的配置中有这一点。但您的解决方案需要至少运行两个服务,并且您将在一段时间内减少冗余/扩展。您可能希望签出这一点: