马拉松如何确定服务实例已准备好服务

how marathon determine a service instance is ready to service

哥们

我想知道 marathon 如何知道服务实例已准备好提供服务?

是否有接口可以自定义实例启动时的健康检查?

谢谢

查看

上的文档

您可以实施各种检查,不仅在 http 端点上,而且在 tcp 上...例如,如果您正在启动一个 dockerized MySQL 服务,您可以在 tcp 上执行健康检查端口 3306 以验证 MySQL 确实已启动且可访问:

"healthChecks": [
    {
        "portIndex": 0,
        "protocol": "TCP",
        "intervalSeconds": 1,
        "timeoutSeconds": 2,
        "maxConsecutiveFailures": 5
    }
]

要动态,portIndex 很重要。因此,例如,您使用 Docker 的桥接网络,Marathon 会自动选择端口(并且您只暴露在端口上),那么 portIndex 需要设置为 1。

此外,如果您希望在启动时立即进行健康检查(即在一切正常之前不应将任务视为 RUNNING),则需要省略 gracePeriodSeconds 参数。

您可以使用 healthcheck,但也有 readinessChecks。 https://github.com/mesosphere/marathon/blob/master/docs/docs/readiness-checks.md

升级策略中还有minimumHealthCapacity https://mesosphere.github.io/marathon/docs/rest-api.html#upgrade-strategy