[英]Consul cluster stack configuration
我正在尝试构建 Consul 集群堆栈。 我当前的配置工作正常,但是在重新启动领事领导或全栈后,集群在投票给新领导时出现问题。
服务重启后,新任务对于相同的节点 ID 具有不同的 IP 地址。
consul 代理配置是否有任何参数可以修复集群中的地址更改?
低于我当前的堆栈定义
version: '3.5'
services:
consulLeader:
image: consul
volumes:
- consul_l_data:/consul/data
command: 'agent -bind "{{ GetInterfaceIP \"eth0\" }}" -bootstrap-expect 3 -client 0.0.0.0 -ui -server -node nodeLeader -retry-join consulNode1 -retry-join consulNode2'
environment:
- "CONSUL_LOCAL_CONFIG={\"skip_leave_on_interrupt\": true,\"leave_on_terminate\": true}"
consulNode1:
image: consul
volumes:
- consul_n1_data:/consul/data
command: 'agent -bind "{{ GetInterfaceIP \"eth0\" }}" -disable-host-node-id -client 0.0.0.0 -ui -server -node consulNode1 -retry-join consulLeader -retry-join consulNode2'
environment:
- "CONSUL_LOCAL_CONFIG={\"skip_leave_on_interrupt\": true,\"leave_on_terminate\": true}"
consulNode2:
image: consul
volumes:
- consul_n2_data:/consul/data
command: 'agent -bind "{{ GetInterfaceIP \"eth0\" }}" -disable-host-node-id -client 0.0.0.0 -ui -server -node consulNode2 -retry-join consulLeader -retry-join consulNode1'
environment:
- "CONSUL_LOCAL_CONFIG={\"skip_leave_on_interrupt\": true,\"leave_on_terminate\": true}"
# loadballancer
nginxForCluster:
image: nginx
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
configs:
- source: consul_nginx.conf
target: /etc/nginx/nginx.conf
mode: 0440
ports:
- 8080:80
configs:
consul_nginx.conf:
external: true
volumes:
consul_l_data:
consul_n1_data:
consul_n2_data:
我不确定为什么您的集群在重新启动领导者后没有选举新的领导者。 不要期望您调用consulLeader
的容器成为下一个领导者,因为 raft 协议将从您的服务器池中选出新的领导者,其中consulLeader
、 consulNode1
和consulNode2
应该是相同的。 也尝试将它们配置相同,我可以看到配置中的差异。 也许这有帮助。
作为解除阻止的解决方法,您还可以在撰写文件中为容器设置修复 IP: https : //docs.docker.com/compose/compose-file/compose-file-v2/#ipv4-address-ipv6-address
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.