Mesos 级别的健康检查(MESOS_HTTP、MESOS_HTTPS、MESOS_TCP 和 COMMAND)由 Mesos 在运行相应任务的代理上本地执行,从而测试 Mesos 执行程序的可达性。 Mesos 级别的健康检查与 Marathon 级别的健康检查相比具有以下优势:
Mesos 级别的健康检查尽可能靠近任务执行,因此不受网络故障的影响。
Mesos 级别的健康检查被委派给运行任务的代理,因此可以检查的任务数量可以随着集群中的代理数量水平扩展。
限制和注意事项
Mesos 级别的健康检查会消耗代理上的额外资源;此外,每次检查任务时,fork 执行进程并进入任务的命名空间都会产生一些开销。
运行状况检查进程与其检查的任务共享资源。您的应用程序定义必须考虑到运行状况检查消耗的额外资源。
Mesos 级别的健康检查除了需要任何接口之外,还需要任务侦听容器的环回接口。如果您在生产环境中运行服务,您需要确保用户可以访问它。
Marathon 目前不支持 Mesos 和 Marathon 级别健康检查的组合。
示例用法
HTTP:
{
"path": "/api/health",
"portIndex": 0,
"protocol": "HTTP",
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 3,
"ignoreHttp1xx": false
}
或 Mesos HTTP:
{
"path": "/api/health",
"portIndex": 0,
"protocol": "MESOS_HTTP",
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 3
}
或安全 HTTP:
{
"path": "/api/health",
"portIndex": 0,
"protocol": "HTTPS",
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 3,
"ignoreHttp1xx": false
}
注意:HTTPS 健康检查不验证 SSL 证书。
或 TCP:
{
"portIndex": 0,
"protocol": "TCP",
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 0
}
或命令:
{
"protocol": "COMMAND",
"command": { "value": "curl -f -X GET http://$HOST:$PORT0/health" },
"gracePeriodSeconds": 300,
"intervalSeconds": 60,
"timeoutSeconds": 20,
"maxConsecutiveFailures": 3
}
{
"protocol": "COMMAND",
"command": { "value": "/bin/bash -c \\\"</dev/tcp/$HOST/$PORT0\\\"" }
}
更多信息:https://mesosphere.github.io/marathon/docs/health-checks.html