Cassandra 2.1 将告密者从 EC2Snitch 更改为 GossipingPropertyFileSnitch

Cassandra 2.1 changing snitch from EC2Snitch to GossipingPropertyFileSnitch

目前我们在单个 AWS 区域中使用了两个 AZ 的 EC2Snitch。目标是即使在一个 AZ 不可用时也能提供弹性。大多数数据在 RF=2 时复制,因此每个 AZ 都会根据 Ec2Snitch 获得一份副本。

现在我们已经得出结论,转向 GossipingPropertyFileSnitch。原因主要是我们已经意识到一个 AZ 宕机是一种远程事件,即使它发生了,我们堆栈中的其他系统也不支持这种情况;所以如果发生这种情况,最终整个应用程序都会崩溃。

另一个原因是,对于 EC2Snitch 和两个可用区,我们必须以 2 倍的比例进行扩展(每个可用区一个)。通过仅使用一个机架的 GossipingPropertyFileSnitch,我们可以缩放 1 倍。

当我们改变这个 snitch 设置时,拓扑会改变吗?我想避免需要 运行 nodetool 修复。我们总是遇到 运行ning nodetool 修复失败,并且 运行 永远如此。

拓扑是否改变取决于你如何进行改变。如果您将与当前配置相同的逻辑 dc 和机架分配给节点,则不应更改拓扑。

更新到GossipingPropertyFileSnitch后,您必须将机架与AZ匹配。您需要滚动重启才能进行重新配置。

示例 cassandra-rackdc.properties 1 个直流中的 2 个节点跨 2 个可用区:

# node=10.0.0.1, dc=first, AZ=1
dc_suffix=first
# Becomes
dc=first
rack=1

# node=10.0.0.2, dc=first, AZ=2
dc_suffix=first
# Becomes
dc=first
rack=2

附带说明一下,您需要探索修复失败的原因。不幸的是,它们对于集群健康非常重要。