如何使用马拉松健康检查命令模式?

e3bfsja2  于 2021-06-26  发布在  Mesos
关注(0)|答案(2)|浏览(308)

我在马拉松赛上运行码头集装箱。我想实现健康检查,基本上想运行一个健康检查脚本。我的问题是,healthcheck命令是在容器本身上运行还是在从属服务器上运行?它可能是容器级别的,因为这是每个应用程序的运行状况检查,所以有点明显,但我想确认一下。没有找到任何相关的文件,说明它运行的地方。
谢谢
我确实尝试通过命令回显到/tmp/testfile,我在从机上看到了这个命令。这意味着它在奴隶身上运行?只是需要确认一下。任何更多的信息都是有用的

lf3rwulv

lf3rwulv1#

mesos级别的健康检查(mesos\u http、mesos\u https、mesos\u tcp和command)由mesos在运行相应任务的代理上本地执行,从而测试mesos执行器的可达性。与马拉松级别的健康检查相比,mesos级别的健康检查具有以下优势:
mesos级别的健康检查在尽可能靠近任务的地方执行,因此它们不受网络故障的影响。
mesos级别的健康检查被委托给运行任务的代理,因此可以检查的任务数量可以随着集群中代理的数量水平扩展。
限制和注意事项
mesos级的健康检查会消耗代理上的额外资源;此外,每次检查任务时,fork执行进程和输入任务的名称空间都会有一些开销。
运行状况检查进程与它们检查的任务共享资源。应用程序定义必须考虑运行状况检查所消耗的额外资源。
mesos级的健康检查要求任务除了侦听它们所需的任何接口外,还侦听容器的环回接口。如果在生产环境中运行服务,则需要确保用户能够访问它。
马拉松目前不支持mesos和马拉松级别健康检查的组合。
示例用法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

k0pti3hp

k0pti3hp2#

简单的回答是:视情况而定。长答案如下:)。
命令健康检查由任务容器中的mesos docker执行器通过 docker exec . 如果您使用“统一容器器”运行您的容器,也就是说,对于没有docker守护进程的docker容器,情况是相似的,但是没有区别 docker exec 而mesos的执行者只需进入 mnt 在执行命令运行状况检查之前,容器的命名空间(请参阅此文档)。http和tcp运行状况检查由marathon调度器运行,因此不一定在容器运行的节点上运行(除非您使用mesos代理在同一节点上运行marathon,这可能是您不应该执行的)。查看此页。
现在从mesos 1.2.0和Marathon1.3开始,有可能运行所谓的mesos本地健康检查。在这种情况下,http(s)和tcp运行状况检查都会在运行容器的代理上运行。为了确保可以访问容器网络,这些检查将进入 net 容器的命名空间。

相关问题