【问题标题】:Consul Leader not found while writing data to consul向领事写入数据时找不到领事领导
【发布时间】:2019-08-22 06:56:12
【问题描述】:
我是领事的新手。在我的情况下,我有三台服务器。所有服务器都在调整状态。
当我使用以下网址“http://localhost:8500/v1/status/leader”检查领导信息时,得到正确的信息
"192.168.10.7:8300"
Consul\data\raft 有以下信息
我可以在堆栈中看到一些答案。它对我没有帮助。
也试试下面的命令
-bootstrap-expect=3
显示下面给出的错误
错误日志
Consul request failed with status [500]: No cluster leader
我完全被卡住了。我该如何解决这个问题
【问题讨论】:
标签:
consul
consul-template
【解决方案1】:
使用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 建立连接。
解释:-
作为said in docs 在Consul集群开始服务请求之前,必须选举一个服务器节点。这就是你在启动spring-boot服务时出现异常的原因,领导者没有被选举了!
为什么没有选出领导?应该引导集群中涉及的服务器列表。并且服务器可以使用
-bootstrap-expect 配置选项。 推荐
注意:- 仅出于测试/学习目的,您可以继续创建单个服务器,因为非常不鼓励使用单个服务器部署,因为在故障情况下数据丢失是不可避免的。