从领事“无集群领导者”状态恢复

时间:2016-04-21 14:05:53

标签: mesos consul

我有:

  • 我在其中配置了一个consul服务器的一个mesos-master;
  • 我配置consul客户端的一个mesos-slave,和;
  • 一个用于领事的引导服务器。

当我点击开始时,我看到以下错误:

  

2016/04/21 19:31:31 [ERR]代理:无法同步远程状态:rpc错误:没有集群领导者       2016/04/21 19:31:44 [ERR]代理:坐标更新错误:rpc错误:没有集群领导者

如何从此状态恢复?

4 个答案:

答案 0 :(得分:5)

您是否看过Consul文档:https://www.consul.io/docs/guides/outage.html

看起来你执行了一次不合适的停止,现在需要通过删除那里的所有条目来清理你的raft/peers.json文件以执行停机恢复。有关详细信息,请参阅上面的链接。

答案 1 :(得分:0)

从领事0.7开始,工作原理与Keyan P的答案有所不同。 raft/peers.json(在Consul数据目录中)已成为手动恢复机制。除非您创建它,否则它不存在,然后在Consul启动时将其加载并从文件系统中删除该文件,以便将来启动时不再读取它。 raft/peers.info中有说明。请注意,如果您删除raft/peers.info,它将不会读取raft/peers.json,但无论如何都会删除它,并会重新创建raft/peers.info。日志将指示何时分别读取和删除文件。

假设您已经尝试过bootstrapbootstrap_expect设置,那么该文件可能会有所帮助。 Keyan P的答案中的Outage Recovery guide是一个有用的链接。您在数据目录中创建raft/peers.json并启动Consul,日志应指示它正在读取/删除文件,然后应显示诸如“获得群集领导权”之类的信息。文件内容为:

[ { "id": "<node-id>", "address": "<node-ip>:8300", "non_voter": false } ]

在数据目录的<node-id>文件中可以找到node-id

答案 2 :(得分:0)

如果您的筏版本大于2:

[ { "id": "e3a30829-9849-bad7-32bc-11be85a49200", "address": "10.88.0.59:8300", "non_voter": false }, { "id": "326d7d5c-1c78-7d38-a306-e65988d5e9a3", "address": "10.88.0.45:8300", "non_voter": false }, { "id": "a8d60750-4b33-99d7-1185-b3c6d7458d4f", "address": "10.233.103.119", "non_voter": false } ]

答案 3 :(得分:0)

在我的例子中,我在 k8s 集群中有 2 个工作节点,在添加另一个节点后,领事服务器可以选择一个主节点,一切都已启动并运行。