利用docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
由于我们给出了 expect 3,这意味着它首先要寻找三个对等点来连接,然后它会引导服务器。
1. docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
docker inspect -f '{{.NetworkSettings.IPAddress}}' node1
Use the inspected IP to join with, in next three commands.
2. docker run -d --name node2 -h node2 progrium/consul -server -join 172.17.0.2
3. docker run -d --name node3 -h node3 progrium/consul -server -join 172.17.0.2
4. docker run -d --name node4 -h node4 progrium/consul -server -join 172.17.0.2
你现在可以开始你的服务了,它会与 consul 建立联系。
解释:-
正如文档中所说, 在 Consul 集群开始服务请求之前,必须选举一个服务器节点作为领导者。 And this is reason of your exception on start of spring-boot service the leader has not been elected yet!!
为什么没有选举领导?应该引导集群中涉及的服务器列表。并且可以使用
-bootstrap-expect
配置选项引导服务器。推荐的
注意:- 仅出于测试/学习目的,您可以继续创建单个服务器,因为非常不鼓励使用单个服务器部署,因为在故障情况下数据丢失是不可避免的。