我对Docker和Consul很新,现在正尝试建立一个由3个dockerized节点组成的本地Consul集群。我正在使用progrium/consul
Docker镜像,并完成了整个教程和所描述的示例
群集工作正常,直到重新启动/重新启动。
这是我的docker-compose.yml
:
---
node1:
command: "-server -bootstrap-expect 3 -ui-dir /ui -advertise 10.67.203.217"
image: progrium/consul
ports:
- "10.67.203.217:8300:8300"
- "10.67.203.217:8400:8400"
- "10.67.203.217:8500:8500"
- "10.67.203.217:8301:8301"
- "10.67.203.217:8302:8302"
- "10.67.203.217:8301:8301/udp"
- "10.67.203.217:8302:8302/udp"
- "172.17.42.1:53:53/udp"
restart: always
node2:
command: "-server -join 10.67.203.217"
image: progrium/consul
restart: always
node3:
command: "-server -join 10.67.203.217"
image: progrium/consul
restart: always
registrator:
command: "consul://10.67.203.217:8500"
image: "progrium/registrator:latest"
restart: always
我得到的消息如下:
[ERR] raft: Failed to make RequestVote RPC to 172.17.0.103:8300: dial tcp 172.17.0.103:8300: no route to host
这显然是因为新的IP我的节点2和3在重启后获得。那么可以防止这种情况吗?有关链接和环境变量的读数,但似乎这些变量在重新启动后也不会更新。
答案 0 :(得分:4)
我遇到了同样的问题,直到我读到重启容器化的consul节点时存在ARP表缓存问题。
据我所知,有2种解决方法:
店主(Jeff Lindsay)告诉我他们正在使用内置的修复程序重新分配整个容器,不幸的是没有时间表。