Я построил Риак кластер на трех Raspberry Pi компьютеры. vm.args
и app.config
файлы дважды проверяются на каждом узле (статические IP-адреса верны).
Все узлы действительны:
# ./riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 0.0% 32.8% 'riak@192.168.8.214'
valid 0.0% 32.8% 'riak@192.168.8.215'
valid 100.0% 34.4% 'riak@192.168.8.59'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
И все они встали:
# ./riak-admin ring_status
================================== Claimant ===================================
Claimant: 'riak@192.168.8.59'
Status: up
Ring Ready: true
============================== Ownership Handoff ==============================
Owner: riak@192.168.8.59
Next Owner: riak@192.168.8.214
Index: 0
Waiting on: [riak_kv_vnode,riak_pipe_vnode]
(... skipping index's)
-------------------------------------------------------------------------------
Owner: riak@192.168.8.59
Next Owner: riak@192.168.8.215
(... skipping index's)
-------------------------------------------------------------------------------
============================== Unreachable Nodes ==============================
All nodes are up and reachable
Я могу пинговать каждый узел порта 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
.
Наряду с тем, что сказал Джо о проверке журналов в /var/log/riak
проверьте эти команды:
riak-admin transfer-limit
- убедитесь, что это не так 0
.riak-admin transfers
- повторно запускайте эту команду с помощью GNU watch каждые 5 секунд или около того, чтобы убедиться, что передача происходит. Если нет, проверьте файлы журнала на наличие ошибок.