我已经阅读了使用Consul的Docker服务发现,但我无法理解。
你能解释一下,我怎样才能运行两个docker容器,使用Consul从第一个容器主机中识别出来并向它发送一些消息?
答案 0 :(得分:3)
您需要在每个Docker容器内以客户端模式运行Consul Agent。每个Docker Container都需要一个Consul Service Definition文件,让代理知道将其服务广告给Consul Server。
他们看起来像这样:
{
"service": {
"name": "redis",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8000,
"checks": [
{
"script": "/usr/local/bin/check_redis.py",
"interval": "10s"
}
]
}
}
用Service Health Check来监控服务的健康状况。像这样:
{
"check": {
"id": "redis",
"name": "Redis",
"script": "/usr/local/bin/check_redis_ping_returns_pong.sh",
"interval": "10s"
}
}
在另一个Docker Container中,您的代码将通过DNS或Consul Servers HTTP API找到Redis服务
dig @localhost -p 8500 redis.service.consul
curl $CONSUL_SERVER/v1/health/service/redis?passing