(这是我从 Stack Overflow 上转发的问题,它与主题无关,这里是提问的正确地方)
我试图在 Raspberry Pi 上构建 Riak 集群。使用 Erland 和 Riak 创建了一个图像,单个节点似乎可以正常工作。然后我为不同的 Pi 克隆了此图像:
[email protected]
[email protected]
[email protected]
它们都具有相同的配置,唯一的不同是和中的静态vm.args
IP app.config
。
现在的问题是,我从 开始构建集群[email protected]
,添加了一个节点[email protected]
,似乎一切正常:
# ./riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 100.0% 50.0% '[email protected]'
valid 0.0% 50.0% '[email protected]'
-------------------------------------------------------------------------------
然而,当我尝试添加第三个节点([email protected]
)时,我收到以下错误消息:
# ./riak-admin cluster join [email protected]
Failed: This node is already a member of a cluster
为什么我没有遇到这个问题[email protected]
?它似乎只发生在[email protected]
节点上。
我无法强制[email protected]
从其集群中删除,因为它显示:
# ./riak-admin cluster force-remove [email protected]
Failed: '[email protected]' is the claimant (see: riak-admin ring_status).
The claimant is the node responsible for initiating cluster changes,
and cannot forcefully remove itself. You can use 'riak-admin down' to
mark the node as offline, which will trigger a new claimant to take
over. However, this will clear any staged changes.
或者
# ./riak-admin cluster leave
Failed: '[email protected]' is the only member.
我就是无法理解,我想我需要一个新的观点。我还想补充一点,我遵循了文档中的所有步骤:
http://docs.basho.com/riak/latest/ops/building/basic-cluster-setup/
并且还参加了 Raspberry Pi 的计数教程(但我不是用 Raspbian,而是用 ArchLinux)。
http://basho.com/building-a-riak-cluster-on-raspberry-pi/
我还要补充一点,网络工作正常,我可以从每个节点 ping 和 ssh 到每个节点。
我期待您的建议。干杯!
编辑:
正如之前所说,他们建议使用riak-admin down <node>
命令来停止该节点claimant
,但这也不起作用。
# ./riak-admin down [email protected]
Failed: [email protected] is up
我无法停止它,因为它已经启动了...但是,如果我在 Riak 未启动时尝试相同操作,则会得到:
# ./riak-admin down [email protected]
Node is not running!
这真是令人困惑。显然我不明白这里发生了什么,希望有人能澄清一下。
答案1
请尝试以下步骤:
riak stop
在所有节点上rm -rf /var/lib/riak/ring/*
在所有节点上- 仔细检查
/etc/riak/vm.args
以确保-name
参数使用的是正确的 IP 地址 riak start
在所有节点上- 在另外两个节点上重新运行命令。请务必记住,所有其他节点都加入同一个“启动”节点 -在这种情况下
riak-admin cluster join [email protected]
[email protected]
- 在节点上运行
riak-admin cluster plan
验证[email protected]
- 在节点
riak-admin cluster commit
上运行[email protected]
答案2
无需停止所有节点并删除环数据。在将停止的申索者节点标记为关闭后,可以进行加入节点等集群操作。3 节点集群和申索者故障的示例步骤如下:https://gist.github.com/shino/dd9a75e84b2b5792a079。