Riak не позволяет добавить узел, потому что он находится в своем собственном кластере

(это репост моего вопроса от переполнения стека, там был оффтоп, вот правильное место, чтобы спросить его)

Я пытался построить кластер Riak на Raspberry Pi. Создав изображение с помощью Erland и Riak, кажется, что один узел работает правильно. Затем я клонировал это изображение для моих разных пи:

riak@192.168.8.59
riak@192.168.8.214
riak@192.168.8.215

Все они имеют одинаковую конфигурацию, отличаются только статические IP-адреса в vm.args а также app.config,

Теперь проблема в том, что я строю кластер, начиная с riak@192.168.8.59, добавил узел riak@192.168.8.214 и вроде бы все в порядке

# ./riak-admin member-status
================================= Membership ==================================
Status     Ring    Pending    Node
-------------------------------------------------------------------------------
valid     100.0%     50.0%    'riak@192.168.8.214'
valid       0.0%     50.0%    'riak@192.168.8.59'
-------------------------------------------------------------------------------

Раз уж я пытаюсь добавить третий узел (riak@192.168.8.215) Я получаю следующее сообщение об ошибке:

# ./riak-admin cluster join riak@192.168.8.215
Failed: This node is already a member of a cluster

Почему у меня не было этой проблемы с riak@192.168.8.214? Кажется, происходит только с riak@192.168.8.215 узел.

Я не могу принудительно удалить riak@192.168.8.215 из его кластера, потому что он говорит:

# ./riak-admin cluster force-remove riak@192.168.8.215
Failed: 'riak@192.168.8.215' 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: 'riak@192.168.8.215' 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/

Я также добавлю, что сеть работает нормально, я могу пинговать и ssh с каждого узла на каждый узел.

Я рассчитываю на ваши советы. Ура!

РЕДАКТИРОВАТЬ:

Как уже было сказано, они предложили использовать riak-admin down <node> Команда, чтобы остановить этот узел, являющийся claimantэто тоже не сработало.

# ./riak-admin down riak@192.168.8.215
Failed: riak@192.168.8.215 is up

Я не могу остановить это, потому что это случилось... Однако, если я попробую то же самое, когда Риак не встанет, я получу:

# ./riak-admin down riak@192.168.8.215
Node is not running!

Это довольно запутанно. Очевидно, я не понимаю, что здесь происходит, я надеюсь, что кто-то может это прояснить.

2 ответа

Решение

Попробуйте эти шаги:

  • riak stop на всех узлах
  • rm -rf /var/lib/riak/ring/* на всех узлах
  • Двойная проверка /etc/riak/vm.args для обеспечения -name аргумент использует правильный IP-адрес
  • riak start на всех узлах
  • Re беги riak-admin cluster join riak@192.168.8.59 Команда на двух других узлах. Важно помнить, что все другие узлы присоединяются к одному и тому же "начальному" узлу - riak@192.168.8.59 в этом случае
  • Бежать riak-admin cluster plan проверить на riak@192.168.8.59 узел
  • Бежать riak-admin cluster commit на riak@192.168.8.59 узел

Нет необходимости останавливать все узлы и удалять кольцевые данные. Операция кластера, такая как объединение узлов, может быть выполнена после пометки как остановленного узла заявителя. Ниже приведены примеры шагов для сбоя кластера из 3 узлов и заявителя: https://gist.github.com/shino/dd9a75e84b2b5792a079.

Другие вопросы по тегам