簡體   English   中英

Cassandra群集中的節點達到極限時該怎么辦?

[英]What to do when nodes in a Cassandra cluster reach their limit?

我正在研究Cassandra,並正在為我正在研究的項目設置集群。 考慮以下示例:假設我設置了一個5節點集群,每個集群有200 GB的空間。 總共相當於1000 gb(約1 TB)的空間。 假設我的分區在整個群集中平均分配,我可以輕松添加節點並實現線性可伸縮性。 但是,如果這5個節點開始接近200 GB的SSD限制,該怎么辦? 在這種情況下,我可以再添加5個節點,現在將分區划分為10個節點。 但是,較舊的節點仍是集群的一部分,因此仍將在寫入數據。 有沒有辦法使這5個較舊的節點為“只讀”? 我想在整個集群中進行隨機讀取查詢,但是不想再寫入較舊的節點(因為它們的上限為200 gb)。

幫助將不勝感激。 謝謝。

注意:我可以說99%的查詢將是寫查詢,其中1%或更少的讀取。 該應用程序必須在Cassandra中保留點擊事件。

正確理解問題的問題。

我假設您知道通過添加5個新節點,一些數據負載將被轉移到新節點,因為某些令牌范圍將分配給它們。

現在,如您所知,如果您擔心舊的5個節點由於已達到限制而無法寫入,則不會發生,因為新節點已共享數據負載,因此這些節點現在有可用空間來進行進一步寫入。

隔離對節點的讀寫是完全不同的問題。 但是,如果您只想隔離對這5個節點的讀取並寫入新的5個節點,那么最好的方法是在同一集群下的另一個數據中心中添加新的5個節點,然后對讀取和寫入使用不同的一致性級別。滿足您將舊數據中心設為只讀的需求。

但是新的數據中心從一開始就不會減輕數據負載。 它甚至會承受相同的負擔。 (因此,您需要5個以上的節點來同時完成兩個問題。只有很少的節點可以減輕重量,而其他節點則可以通過創建新的數據中心來隔離讀寫操作。新數據中心還應具有5個以上的節點)。 最佳實踐是通過添加新節點或增加數據限制來監視數據負載並在此類問題發生之前進行修復。

考慮到這樣做,您還需要確保為讀取和寫入提供的節點應來自不同的數據中心。

考慮您有以下情況:

dc1(n1,n2,n3,n4,n5)

dc2(n6,n7,n8,n9,n10)

現在,為您提供了節點n1提供的讀取功能,為您提供了節點n6提供的寫入功能

現在,可以通過從以下選項中選擇正確的一致性級別來完成讀/寫隔離:

LOCAL_QUORUM

要么

LOCAL_ONE

這些基本上將對副本的搜索僅限於本地數據中心。

查看這些參考資料以了解更多信息: 將數據中心添加到集群一致性級別

通常,當群集達到其限制時,我們將新節點添加到群集中。 添加新節點后,舊的cassandra群集節點會將其數據分發到新節點。 之后,我們在每個節點中使用nodetool cleanup來清理分發到新節點的數據。 整個場景發生在單個DC中。

例如:

假設您在DC1具有3個節點(A,B,C) ,在DC2 1個節點(D) 您的節點已達到極限。 因此,決定向DC1添加一個新節點(E) 節點ABC會將其數據分發到節點E ,我們將在ABC使用nodetool cleanup清理空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM