probe

设置服务的健康性检查。

  • 通过 URL 进行检查,支持 HTTP 协议、TCP 协议。
  • 通过 shell 脚本检查。

健康检查会从容器宿主机上发起,每隔一定时间(默认两秒)向容器发起请求或在容器上执行 shell 脚本命令。

检查成功的判断条件为:HTTP 请求的返回码为 2XX/3XX;TCP 端口可建立连接;shell 脚本运行返回值为 0。

检查的字段解释:

  • aliyun.probe.url:HTTP、TCP 请求的 URL。请注意您不需要填写自己的域名或者 IP 地址,只需要加上container这个单词,该 URL 最终会被解析成容器相应的 IP 去进行健康检查,检查结果返回 2XX 或者 3XX 才认为服务是健康的。
    • 例如,容器通过 8080 端口提供 HTTP 服务,并提供了/ping作为健康检查的 URL,则探测 URL 的格式为 http://container:8080/ping,容器服务会自动通过 HTTP GET 请求检查 URL 的返回结果,如果返回结果的返回码为 2XX 或 3XX,则说明健康检查成功。
    • 例如,MySQL 容器侦听 3306 端口,探测 URL 的格式为tcp://container:3306,服务会检查容器 3306 端口是否打开,如果打开则说明健康检查成功。
  • aliyun.probe.cmd:健康检查执行的检查 Shell 命令,/check.sh;容器服务会定期在容器内执行该命令,当 shell 脚本返回值为 0 时表明健康检查成功。
  • aliyun.probe.timeout_seconds:健康检查的超时时间。
  • aliyun.probe.initial_delay_seconds:在容器启动后延迟几秒开始健康检查。

注意:

  • 一个服务中只能包含aliyun.probe.urlaliyun.probe.cmd其中之一。
  • 如果服务不包含aliyun.probe.urlaliyun.probe.cmd,则容器缺省为健康状态,且其他aliyun.probe.xxx标签会被忽略。

示例:

利用 URL 检测容器健康状态。

os:
  image: my_nginx
  labels:
    aliyun.probe.url: http://container/ping
    aliyun.probe.timeout_seconds: "10"
    aliyun.probe.initial_delay_seconds: "3"

利用 shell 脚本检测容器健康状态。

os:
  image: my_app
  labels:
    aliyun.probe.cmd: health_check.sh
    aliyun.probe.initial_delay_seconds: "3"

results matching ""

    No results matching ""