我有一个ECS集群,其中包含正在运行我定义的任务的服务。这只是一个简单的Flask服务器,因为我正在学习如何使用ECS。现在,我试图了解如何更新我的应用程序并使其无缝部署。
Hello, World! (rev=1)
开始。 app.py
以说Hello, World! (rev=2)
image_name:latest
,因此我可以简单地更新服务并使用以下命令强制进行新部署:aws ecs update-service --force-new-deployment --cluster hello-cluster --service hello-service
(rev=1)
然后(rev=2)
都没有失败(轮循,不是随机的)。 Hello, World! (rev=2)
这是怎么回事?这是在ECS中更新应用程序的正确方法吗?
答案 0 :(得分:1)
这是正常行为,它与您配置最小和最大健康百分比的方式有关。
至少100%的正常运行状况百分比表示每时每刻必须至少运行1个任务(对于应该运行1个任务实例的服务)。最高健康百分比为200%表示您不允许同时运行2个以上的任务(同样,对于应运行1个任务实例的服务)。这意味着,在服务更新期间,ECS将首先启动一项新任务(达到最大200%并避免低于100%),并且当此新任务被认为正常时,它将删除旧任务(恢复为100%)。这解释了为什么两个任务都在短时间内同时运行(并且负载均衡)的原因。
这种配置可确保最大程度的可用性。如果您希望避免这种情况,并且可以减少停机时间,则可以将最小值设置为0%,将最大值设置为100%。
关于您的EC2实例:它们代表您的“集群” =您的服务用来启动任务的硬件。上述过程在此“固定”硬件上发生。