我在一个使用 SimpleSnitchStrategy 的可用区中有一个 9 节点 Cassandra v3.11 集群。
我想将 snitch 策略更改为 GossipingPropertyFileSnitch 并将拓扑更改为像这样的多 AZ:
AZ-A 中的
3 个节点,AZ-B 中的
3 个节点,AZ-C 中的 3 个节点。
我应该如何进行迁移?
先移动节点再改变snitch策略还是先
改变snitch策略再移动节点?
作为一个额外的问题,我应该使用
JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address_first_boot=ip_address"
还是删除节点并再次添加它们?
概述
如果是我,我会先将现有节点更新为 GPFS。这使得使用集群变得更加容易,因为 GPFS 非常灵活。
然后我会将新 AZ 中的新节点添加到集群中。假设所有 9 个现有节点都在区域 A 中。在区域 B 中添加 3 个节点,然后在区域 C 中添加 3 个节点,因此您暂时最终得到 15 个节点。
最后,停用区域 A 中的 6 个节点中的任何一个,这样您就可以按计划恢复到 9 个节点。我将在最后一步退役的原因是确保集群中有足够的容量以最大程度地降低服务中断的风险。
种子
作为一般规则,我们建议每个 DC 至少有两个种子节点,最好这些节点来自不同的机架/可用区。如果您只有一个 DC,请从每个 AZ 中选择一个节点作为种子节点。
一旦所有新节点都添加到集群中并且旧节点退役,请更新
cassandra.yaml
所有节点上的所有节点,以便它们都具有相同的种子,但请注意,不必立即重新启动,因为节点会定期从 yaml 重新加载种子。切换到 GPFS
将飞贼从 更改
SimpleSnitch
为GossipingPropertyFileSnitch
是很容易的部分。高级步骤是:cassandra-rackdc.properties
所有节点。endpoint_snitch
在cassandra.yaml
所有节点上更新。有关详细信息,请参阅在 Cassandra 中切换 snitches。
退役节点
有关详细信息,请参阅移除 Cassandra 节点。干杯!