閱讀489 返回首頁    go 魔獸


rolling_updates__服務編排文檔_用戶指南_容器服務-阿裏雲

更新某個服務時,如果該服務包括超過一個以上容器(使用 scale 標簽定義),在第 n 個容器更新成功且健康檢查(配合使用 probe 標簽做健康檢查)顯示為健康後,再去做第 n+1 個容器的更新,以此來最小化停止服務時間。

根據您所使用的 Agent 版本的不同,第 n 個容器健康檢查失敗包含以下兩種情況:

  • 使用的不是最新版本的 Agent:如果健康檢查失敗且超時 30s,容器服務會停止更新容器並等待健康檢查成功,然後再更新第 n+1 個容器。
  • 使用最新版本的 Agent:如果健康檢查失敗,服務會回滾到老版本。

示例:

部署 WordPress 服務,通過scale標簽指定部署 2 個容器,通過probe標簽指定檢查的 URL 為 https://container/license.txt。使用rolling_updates標簽可以使 WordPress 對外停止服務的時間最小化。

  1. web:
  2. image: wordpress
  3. ports:
  4. - 80
  5. restart: always
  6. links:
  7. - 'db:mysql'
  8. labels:
  9. aliyun.logs: /var/log
  10. aliyun.probe.url: https://container/license.txt
  11. aliyun.probe.initial_delay_seconds: '10'
  12. aliyun.routing.port_80: https://wordpress
  13. aliyun.rolling_updates: 'true'
  14. aliyun.scale: '2'
  15. db:
  16. image: mariadb
  17. environment:
  18. MYSQL_ROOT_PASSWORD: example
  19. restart: always
  20. labels:
  21. aliyun.logs: /var/log/mysql

parallelism

您可以使用 parallelism 標簽定義 rolling_updates 每次並行更新的容器數量。

注意:此標簽必須和 rolling_update 配合使用,單獨使用無效。

取值:

  • 默認值為 1,即每次隻更新一個容器。
  • 當其值大於 1 的時候,rolling_updates 過程中,每次會以 parallelism 定義的值來並行更新相應個數的容器,實現批量更新。
  • 當定義值無效時,默認為 1。
    注意:為了確保始終有容器在提供服務,建議 parallelism 定義的值小於服務包含的容器數。

示例:

下麵的示例部署 Nginx 服務,通過 scale 標簽部署 3 個容器,使用 rolling_updatesparallelism 標簽定義每次以 2 個容器為單位來進行批量更新。

  1. web:
  2. image: nginx:latest
  3. restart: always
  4. environment:
  5. - "reschedule:on-node-failure"
  6. ports:
  7. - 80
  8. labels:
  9. aliyun.scale: "3"
  10. aliyun.probe.url: https://container:80/
  11. aliyun.probe.timeout_seconds: "10"
  12. aliyun.probe.initial_delay_seconds: "3"
  13. aliyun.rolling_updates: 'true'
  14. aliyun.rolling_updates.parallelism: "2"

最後更新:2016-12-21 09:02:33

  上一篇:go probe__服務編排文檔_用戶指南_容器服務-阿裏雲
  下一篇:go depends__服務編排文檔_用戶指南_容器服務-阿裏雲