Cluster

Riak 不允許添加節點,因為它在自己的集群中

  • July 22, 2015

(這是我從堆棧溢出問題的轉貼,那裡是題外話,這裡是問它的正確地方)

我試圖在 Raspberry Pi 上建構一個 Riak 集群。用 Erland 和 Riak 創建了一個圖像,單個節點似乎工作正常。然後我為我的不同 Pi 複製了這個圖像:

riak@192.168.8.59
riak@192.168.8.214
riak@192.168.8.215

它們都具有相同的配置,唯一不同的是靜態 IPvm.argsapp.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/

我還要補充一點,網路工作正常,我可以從每個節點 ping 和 ssh 到每個節點。

我指望你的建議。乾杯!

編輯:

如前所述,他們建議使用riak-admin down <node>命令停止此節點為claimant,這也不起作用。

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

我無法阻止它,因為它已經啟動了……但是,如果我在 Riak 沒有啟動時嘗試相同的操作,我會得到:

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

這很令人困惑。顯然我不明白這裡發生了什麼,我希望有人能澄清一下。

嘗試以下步驟:

  • riak stop在所有節點上
  • rm -rf /var/lib/riak/ring/*在所有節點上
  • 仔細檢查/etc/riak/vm.args以確保-name參數使用正確的 IP 地址
  • riak start在所有節點上
  • 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 commitriak@192.168.8.59節點上執行

引用自:https://serverfault.com/questions/608022