Cassandra
Cassandra 節點移除,最合適的策略?
由於磁碟使用不足,我正在考慮將 Cassandra 集群(v 3.11.13)的大小從 12 個節點減少到 9 個節點(每個機架從 4 個節點減少到 3 個節點)。因此,集群分佈在 3 個機架上,並具有一個 RF=3 的“大”鍵空間。
我打算
- 擴展節點以處理未來的新工作負載,假設縮減後負載仍將適當平衡
nodetool decommission
在每個機架上的一個節點上執行- 重新平衡數據?在這裡我有點困惑,因為我使用的是 Vnodes,我以為我不需要處理數據重新平衡,但是,在 decommission 的文件中,它指出數據被傳遞到環中的下一個節點,並沒有被所有剩餘的節點共享,我想澄清一下。
- 之後我讀到 a
nodetool cleanup
是必需的,這真的有用嗎?- 刪除節點(在我的例子中是 Kubernetes pod)
謝謝你的幫助
它表明數據被傳遞到環中的下一個節點
是的,我不認為這是正確的(現在?)。這種說法可能是從 Cassandra 節點只負責一個令牌範圍的日子開始的。
退役時發生的情況是,集群令牌範圍會根據集群的新(更小)大小重新計算。
nodetool decommission
然後將數據流式傳輸到現在負責其令牌範圍的節點。之後我讀到 a
nodetool cleanup
是必需的,這真的有用嗎?所以
nodetool cleanup
本質上檢查節點以確保它只有與其令牌範圍匹配的數據。如果它發現它不負責的數據,它將刪除它。我不確定退役後這是否非常必要。在這種情況下,執行它不應該有任何傷害。基本上,在此
nodetool decommission
過程中,偶爾執行一個nodetool netstats
(在退役節點上)。您將看到數據流前往它們的新節點。新節點是要密切注意磁碟使用率的任何異常或突然增加的節點。