阅读489 返回首页    go 小米 go 小米6


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__服务编排文档_用户指南_容器服务-阿里云