我建了一个里亚克聚集在三个树莓派计算机vm.args
和app.config
文件在每个节点上都经过双重检查(静态 IP 地址是否正确)。
所有节点均有效:
# ./riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 0.0% 32.8% '[email protected]'
valid 0.0% 32.8% '[email protected]'
valid 100.0% 34.4% '[email protected]'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
它们全都起来了:
# ./riak-admin ring_status
================================== Claimant ===================================
Claimant: '[email protected]'
Status: up
Ring Ready: true
============================== Ownership Handoff ==============================
Owner: [email protected]
Next Owner: [email protected]
Index: 0
Waiting on: [riak_kv_vnode,riak_pipe_vnode]
(... skipping index's)
-------------------------------------------------------------------------------
Owner: [email protected]
Next Owner: [email protected]
(... skipping index's)
-------------------------------------------------------------------------------
============================== Unreachable Nodes ==============================
All nodes are up and reachable
我可以 ping Riak 端口上的每个节点,它返回OK
。问题如下:如果我添加简单的键值,它会返回错误all_nodes_down
。
例如,在这里我尝试将值赋予Allo
键hello
fr
:
# curl -XPUT http://192.168.8.59:8098/riak/hello/fr -d ‘Allo’
Error:
all_nodes_down
在构建集群之前,当我只有一个节点时,我使用 localhost 添加了此密钥,并且可以毫无问题或错误地检索它。
我查看了 basho.com 上的邮件列表,似乎当环错误时会发生此错误,例如,如果管理员更改索赔节点的名称而不清理环等,但这不是我的情况。在配置和 Riak 启动之前,每个节点上的环都已清除。我不是一个有经验的系统管理员,我对分布式系统一无所知,所以如果有人有想法或建议,请分享。
编辑:
来自官方 Riak 文档的建议:
http://docs.basho.com/riak/latest/ops/running/recovery/errors/
Check riak-admin member-status and ensure that all expected nodes in the cluster are of valid Status
正如您在我的命令结果中看到的riak-admin member-status
,所有节点都列为valid
。
答案1
除了 Joe 所说的检查日志之外/var/log/riak
,还要检查以下命令:
riak-admin transfer-limit
- 确保这不是0
。riak-admin transfers
- 每 5 秒左右使用 GNU watch 重新运行此命令,以确保传输正在进行。如果没有,请检查日志文件中是否有错误。