因此,我有一個應用程序,大部分時間都處於休眠狀態,但每個月中的幾天需要高爆發。由於我們在EC2 上進行部署,我希望大部分時間只保留一台Cassandra 伺服器,然後在突發的日子裡,我想再啟動一台伺服器(比第一台伺服器具有更多的RAM 和CPU)來幫助服務負載。做這個的最好方式是什麼?我應該採取不同的方法嗎?
關於我計劃做什麼的一些註解:
- 立即啟動節點並修復它
- 突發時間結束後,強大的節點退役
- 使用永遠在線的伺服器作為種子節點
我的主要問題是如何讓節點共享所有數據,因為我想要 2 的複製因子(因此兩個節點都擁有所有數據),但是當只有一台伺服器時這將不起作用。我應該額外增加 2 台伺服器而不是 1 台嗎?
答案1
答案2
根據我的經驗,動態更改複製因子效果並不好:-(最終可能會出現架構不一致的情況,至少對我來說,修復這些不一致非常耗時。
只是大聲思考,但另一種可能的路線可能是(改變時間以適應):
- 增加 cassandra.yaml 中的 GC 寬限期(這決定了邏輯刪除在從磁碟中清除之前的生存時間),例如 30 天
- 每 15 天左右啟動第二個節點,無論是否需要。確保在運行之間保留其資料/提交日誌等。這意味著當您需要啟動第二個節點時,您可以更快地開始
比第一個具有更多的 RAM 和 CPU
Cassandra 根據每個節點負責的環的數量有效地劃分工作負載。讓第二個節點的容量是第一個節點的容量的兩倍,或者增加兩個與第一個節點大小相同的節點可能會更容易,以便更容易劃分環。
在刪除節點時,這仍然需要手動節點工具幹預,儘管暗示的切換將不必要地填充剩餘節點上的磁碟。