2013-05-02 126 views
12

我有一個複製因子爲2的3節點cassandra集羣。節點運行的是dsc1.2.3或dsc1.2.4。每個節點的num_token值爲256,並且initial_token被註釋。這3個節點羣集是完全平衡的,即每個羣集擁有大約30%的數據。如何在添加新節點後重新平衡cassandra集羣

其中一個節點崩潰,所以我開始了一個新節點,nodetool刪除了已經崩潰的節點。新節點被添加到羣集中,但現在兩個較舊的節點擁有大部分數據(47.0%和52.3%),而新節點只有0.7%的數據。

的nodetool狀態輸出是

Datacenter: xx-xxxx 
=================== 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address   Load  Tokens Owns Host ID        Rack 
UN 10.xxx.xxx.xxx 649.78 MB 256  47.0% ba3534b3-3d9f-4db7-844d-39a8f98618f1 1c 
UN 10.xxx.xxx.xxx 643.11 MB 256  52.3% 562f7c3f-986a-4ba6-bfda-22a10e384960 1a 
UN 10.xxx.xxx.xxx 6.84 MB 256  0.7% 5ba6aff7-79d2-4d62-b5b0-c5c67f1e1791 1c 

我如何平衡這種集羣?

+0

你可以包含'nodetool status'的輸出嗎? – Richard 2013-05-02 16:29:17

+0

你是否也用num_tokens = 256開始新節點? – Richard 2013-05-02 19:01:45

+0

編輯帖子以添加'nodetool status'的輸出 – user2341900 2013-05-03 04:43:49

回答

6

你沒有提到在新節點上運行修復,如果你還沒有這樣做,那很可能是你在新節點上缺少數據的原因。

在您運行nodetool修復之前,新節點只會保存寫入的新數據或讀取修復的數據。對於vnodes,您通常不需要重新平衡,理解vnodes正確,但我還沒有親自動用過vnodes,所以我可能會錯。

4

它看起來像你的新節點沒有引導。您是否將auto_bootstrap=true添加到您的cassandra.yaml中?

如果您不想引導,則可以在新節點上運行nodetool repair,然後在另外兩個節點上運行nodetool cleanup,直到分配合理。

相關問題