簡體   English   中英

使用AWS ECS部署新的Docker映像

[英]Deploying new docker image with AWS ECS

我有一個ECS集群,其中包含正在運行我定義的任務的服務。 這只是一個簡單的Flask服務器,因為我正在學習如何使用ECS。 現在,我試圖了解如何更新我的應用程序並使其無縫部署。

  1. 我先從燒瓶服務器返回Hello, World! (rev=1) Hello, World! (rev=1)
  2. 我在本地修改我的app.py以說“ Hello, World! (rev=2) Hello, World! (rev=2)
  3. 我重建docker映像,並推送到ECR
  4. 由於我的映像仍名為image_name:latest ,因此我可以簡單地更新服務並使用以下命令強制進行新部署: aws ecs update-service --force-new-deployment --cluster hello-cluster --service hello-service
  5. 我的最小百分比設置為100,最大百分比設置為200%(使用滾動更新),因此我假設在關閉舊EC2實例時應設置一個新EC2實例。 我觀察到的(不斷刷新ELB HTTP端點)是rev =? 消息中的來回交替: (rev=1)然后(rev=2)不會失敗(循環,不是隨機的)。
  6. 然后過了一會兒(也許是30秒?),翻轉停止,並出現新消息: Hello, World! (rev=2) Hello, World! (rev=2)
  7. 在整個過程中,我注意到沒有更多的EC2實例已啟動。 因此,所有這些都必須在同一實例上發生。

這里發生了什么? 這是在ECS中更新應用程序的正確方法嗎?

這是正常行為,它與您配置最小和最大健康百分比的方式有關。

至少100%的正常運行狀況百分比表示,每時每刻必須至少運行1個任務(對於應該運行1個任務實例的服務)。 最高健康百分比為200%表示您不允許同時運行2個以上的任務(同樣,對於應運行1個任務實例的服務)。 這意味着,在服務更新期間,ECS將首先啟動一項新任務(達到最大200%並避免低於100%),並且當此新任務被認為正常時,它將刪除舊任務(恢復為100%)。 這解釋了為什么兩個任務在短時間內同時運行(並且負載均衡)的原因。

這種配置可確保最大的可用性。 如果要避免這種情況,並且可以減少停機時間,可以將最小值設置為0%,將最大值設置為100%。

關於您的EC2實例:它們代表您的“集群” =您的服務用來啟動任務的硬件。 上述過程在此“固定”硬件上發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM