切換snitches(八)

切換snitches

由於snitches決定Cassandra如何分配副本,所以切換snitches的過程取決於羣集的topology 是否會改變:

  • 如果數據尚未插入到羣集中,則network topology結構中不會有任何更改。只需要設置snitches。

  • 如果數據已插入到羣集中,則可能topology已更改,您將需要執行其他步驟。

  • 如果數據已經插入到必須保存的羣集中,請在不更改topology的情況下更改snitches。然後根據需要添加一個帶有新節點和機架的新數據中心。最後,從舊數據中心和機架中刪除節點。簡單地修改snitch和複製以將某些節點移動到新的數據中心將導致數據被錯誤地複製。

topology結構的變化意味着數據中心或節點所在的機架發生了變化。當節點放置在不同的地方時,可能會發生topology更改。具體而言,複製策略根據新的snitch提供的信息放置副本。以下示例說明了不同之處:

  • 沒有topology改變

    • Change from:使用Rackinferringsnitch五節點的單數據中心
      To:一個數據中心中的五個節點和一個使用網絡篩選器的機架,如GossipingPropertyFileSnitch
  • topology更改

    • Change from:使用Rackinferringsnitch五節點的單數據中心
      To:使用PropertyFileSnitch(添加數據中心)在2個數據中心中的5個節點。

    • Change from:使用propertyfilesnitch 5節點的單數據中心
      To:使用RackInferringSnitch(添加機架信息)在1個數據中心中的5個節點和2個機架。

注意:如果將一個數據中心“拆分”爲兩個,則使用新節點創建一個新的數據中心。 修改初始的keyspace的
複製設置,以反映現在存在的兩個數據中心。將數據複製到新的數據中心後,從原始數據中心移除已移動到新數據中心的節點數量。

步驟

1.使用數據中心和機架信息創建屬性文件。

  • cassandra-rackdc.properties:GossipingPropertyFileSnitch,Ec2Snitch和Ec2MultiRegionSnitch。

  • cassandra-topology.properties:所有其他的snitches。

2.將cassandra-rackdc.properties或 cassandra-topology.properties文件複製到所有羣集節點上的Cassandra配置目錄。直到新的snitches被啓用,它們纔會被使用。

3.在節點的cassandra.yaml文件中更改羣集中每個節點的 snitch。例如:

endpoint_snitch: GossipingPropertyFileSnitch

4.如果topology 沒有改變,則可以一次重新啓動一個節點。
cassandra.yaml文件中的任何更改都需要重新啓動節點。

5.如果network topology已更改,但未添加數據中心:

  • 關閉所有節點,然後重新啓動它們。

  • 在每個節點上運行sequential repair 和 nodetool cleanup。

6.如果network topology已經改變並且添加了一個數據中心:

  • 創建一個新的數據中心。

  • 將數據複製到新的數據中心。從舊數據中心刪除節點。

  • 在每個節點上運行sequential repair 和 nodetool cleanup。

警告: DataStax建議在拓撲更改期間停止修復操作; 維修服務會自動執行此操作。涉及移動範圍時,在拓撲更改期間運行的修復可能會出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章