首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >领事码头健康检查的问题

领事码头健康检查的问题
EN

Stack Overflow用户
提问于 2016-06-13 05:10:52
回答 2查看 2K关注 0票数 2

我正在用滑翔机/注册集装箱运行progrium/consul容器。我正在尝试建立健康检查,以监测我的码头集装箱是上升还是下降。然而,我注意到一些非常奇怪的活动与健康检查,我能够做。下面是用于创建健康检查的命令:

代码语言:javascript
复制
curl -v -X PUT http://$CONSUL_IP_ADDR:8500/v1/agent/check/register -d @/home/myUserName/health.json

这是我的health.json文件:

代码语言:javascript
复制
{
"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文件运行一个脚本,我只是按照文档示例创建了这个脚本)。我只想让领事知道集装箱是停了还是在运行。当健康检查失败时,我不希望我的服务删除自己。我该怎么做。

注:我发现领事文档对代理人的健康检查非常缺乏,模糊和不准确。所以请不要只是链接到它,告诉我去读它。我正在寻找一个完整的解释,确切地说,如何设置码头健康检查的正确方式。

更新:这里的是如何用官方领事容器的最新版本(现在是开发版本,很快就会用生产版本更新它)启动领事服务器:

代码语言:javascript
复制
#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/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-10 16:39:09

因此,使用任何版本的领事容器的解决方案就是直接在主机上安装领事。这可以通过遵循https://sonnguyen.ws/install-consul-and-consul-template-in-ubuntu-14-04/中的以下步骤来完成

代码语言:javascript
复制
sudo apt-get update -y
sudo apt-get install -y unzip curl
sudo wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip

sudo unzip consul_0.6.4_linux_amd64.zip  
sudo rm consul_0.6.4_linux_amd64.zip

sudo chmod +x consul
sudo mv consul /usr/bin/consul

sudo mkdir -p /opt/consul
cd /opt/consul
sudo wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip  
sudo unzip consul_0.6.4_web_ui.zip 
sudo rm consul_0.6.4_web_ui.zip

sudo mkdir -p /etc/consul.d/

sudo wget https://releases.hashicorp.com/consul-template/0.14.0/consul-template_0.14.0_linux_amd64.zip
sudo unzip consul-template_0.14.0_linux_amd64.zip
sudo rm consul-template_0.14.0_linux_amd64.zip
sudo chmod a+x consul-template
sudo mv consul-template /usr/bin/consul-template


sudo nohup consul agent -server -bootstrap-expect 1 \
  -data-dir /tmp/consul -node=agent-one \
  -bind=$(hostname -i) \
  -client=0.0.0.0 \
  -config-dir /etc/consul.d \
  -ui-dir /opt/consul/ &

echo 'Done with consul install!!!'

完成此操作后,请创建领事健康检查json文件,在创建json文件之后,可以找到如何这样做的信息,只需将它们放在/etc/consul.d目录中,然后使用consul reload重新启动领事。如果重新加载领事没有添加新的健康检查,那么json文件的语法就有问题。回去,编辑它们,然后再试一次。

票数 1
EN

Stack Overflow用户

发布于 2016-06-14 07:55:58

progrium/consul图像是领事(https://hub.docker.com/r/progrium/consul/tags/)的旧版本,目前似乎没有被维护。

https://hub.docker.com/r/library/consul/tags/领事请尽量使用当前版本的官方图片

您也可以使用登记员向与您的服务相关的领事注册支票。例如:

代码语言:javascript
复制
SERVICE_[port_]CHECK_SCRIPT=nc $SERVICE_IP $SERVICE_PORT | grep OK

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37782201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档