gpt4 book ai didi

docker - 运行领事Docker健康检查的问题

转载 作者:行者123 更新时间:2023-12-02 19:40:29 26 4
gpt4 key购买 nike

正在使用gliderlabs / registrator容器运行progrium / consul容器。我正在尝试创建运行状况检查以监视我的Docker容器是否运行。但是我注意到我进行的健康检查有些奇怪的 Activity 。这是我用来创建运行状况检查的命令:

curl -v -X PUT http://$CONSUL_IP_ADDR:8500/v1/agent/check/register -d @/home/myUserName/health.json

这是我的health.json文件:
{
"id": "docker_stuff",
"name": "echo test",
"docker_container_id": "4fc5b1296c99",
"shell": "/bin/bash",
"script": "echo hello",
"interval": "2s"
}

首先,我注意到,只要容器正确停止,此检查就会自动删除服务,但是如果容器不正确地停止(例如,在节点故障期间),则该检查将不执行任何操作。

其次,我注意到 docker_container_id完全无关紧要,此运行状况检查会将其自身附加到在其所连接的领事节点上运行的每个容器。

我只想为在领事节点上运行的每个Docker容器运行一个有效的tcp或http运行状况测试(是的,我知道我上面的json文件运行一个脚本,我只是在文档示例之后创建了一个脚本)。我只希望领事能够告诉您容器是停止还是正在运行。我不希望我的服务在运行状况检查失败时删除自己。我该怎么做。

注意:我发现非常缺乏,模糊和不准确的关于代理程序运行状况检查的领事 documentation 。因此,请不要仅仅链接到它并告诉我去阅读它。我正在寻找有关如何正确设置Docker运行状况检查的完整解释。

更新:这是如何使用官方consul容器的最新版本启动consul服务器(现在是其dev版本,很快就会用生产版本对其进行更新):
#bootstrap server
docker run -d \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 53:53/udp \
--name=dev-consul0 consul agent -dev -ui -client 0.0.0.0

#its IP address will then be the IP of the host machine
#lets say its 172.17.0.2

#start the other two consul servers, without web ui
docker run -d --name --name=dev-consul1 \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 53:53/udp \
consul agent -dev -join=172.17.0.2

docker run -d --name --name=dev-consul2 \
-p 8300:8300 \
-p 8301:8301 \
-p 8301:8301/udp \
-p 8302:8302 \
-p 8302:8302/udp \
-p 8400:8400 \
-p 8500:8500 \
-p 53:53/udp \
consul agent -dev -join=172.17.0.2

# then heres your clients
docker run -d --net=host --name=client0 \
-e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \
consul agent -bind=$(hostname -i) -retry-join=172.17.0.2

https://hub.docker.com/r/library/consul/

最佳答案

progrium / consul镜像具有旧版本的consul(https://hub.docker.com/r/progrium/consul/tags/),目前似乎未维护。

请尝试将最新版本的官方图片用于领事https://hub.docker.com/r/library/consul/tags/

您还可以使用注册器在与您的服务相关的领事中注册支票。例如。

SERVICE_[port_]CHECK_SCRIPT=nc $SERVICE_IP $SERVICE_PORT | grep OK

更多示例: http://gliderlabs.com/registrator/latest/user/backends/#consul

关于docker - 运行领事Docker健康检查的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37782201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com