將單一節點 Cassandra 叢集動態變更為兩個節點

將單一節點 Cassandra 叢集動態變更為兩個節點

因此,我有一個應用程序,大部分時間都處於休眠狀態,但每個月中的幾天需要高爆發。由於我們在EC2 上進行部署,我希望大部分時間只保留一台Cassandra 伺服器,然後在突發的日子裡,我想再啟動一台伺服器(比第一台伺服器具有更多的RAM 和CPU)來幫助服務負載。做這個的最好方式是什麼?我應該採取不同的方法嗎?

關於我計劃做什麼的一些註解:

  • 立即啟動節點並修復它
  • 突發時間結束後,強大的節點退役
  • 使用永遠在線的伺服器作為種子節點

我的主要問題是如何讓節點共享所有數據,因為我想要 2 的複製因子(因此兩個節點都擁有所有數據),但是當只有一台伺服器時這將不起作用。我應該額外增加 2 台伺服器而不是 1 台嗎?

答案1

看來你可以很容易地改變複製因子

這一點在官網也有提到卡桑德拉維基,您可以在其中找到增加和減少複製因子的說明。

這意味著應該可以這樣做:

  • 將複製因子從 1 改為 2
  • 啟動並修復突發節點,以便它接收所有資料的副本
  • ... 做工作 ...
  • 退役突發節點
  • 將複製因子從 2 更改回 1
  • 運行清理

答案2

根據我的經驗,動態更改複製因子效果並不好:-(最終可能會出現架構不一致的情況,至少對我來說,修復這些不一致非常耗時。

只是大聲思考,但另一種可能的路線可能是(改變時間以適應):

  1. 增加 cassandra.yaml 中的 GC 寬限期(這決定了邏輯刪除在從磁碟中清除之前的生存時間),例如 30 天
  2. 每 15 天左右啟動第二個節點,無論是否需要。確保在運行之間保留其資料/提交日誌等。這意味著當您需要啟動第二個節點時,您可以更快地開始
  3. 比第一個具有更多的 RAM 和 CPU

Cassandra 根據每個節點負責的環的數量有效地劃分工作負載。讓第二個節點的容量是第一個節點的容量的兩倍,或者增加兩個與第一個節點大小相同的節點可能會更容易,以便更容易劃分環。

在刪除節點時,這仍然需要手動節點工具幹預,儘管暗示的切換將不必要地填充剩餘節點上的磁碟。

相關內容