0

我是领事的新手。就我而言,我有三台服务器。所有服务器都在调整状态。当我使用以下网址“ 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

我完全被卡住了。我该如何解决这个问题

4

1 回答 1

2

利用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 配置选项引导服务器。推荐的

注意:- 仅出于测试/学习目的,您可以继续创建单个服务器,因为非常不鼓励使用单个服务器部署,因为在故障情况下数据丢失是不可避免的。

于 2019-08-23T19:32:22.567 回答