切换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建议在拓扑更改期间停止修复操作; 维修服务会自动执行此操作。涉及移动范围时,在拓扑更改期间运行的修复可能会出错。

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