0

我们有一个在 AWS 上运行的 6 节点 cassandra 1.2.10 集群,具有 NetworkTopologyStrategy、3 的复制因子和 EC2Snitch。每个 AWS 可用区中有 2 个节点。

当我们在停用节点时读取或写入具有 Quorum 一致性的数据到集群时,我们会得到“可能没有足够的副本来处理一致性级别”。

这没有任何意义,因为我们只关闭了一个节点,我们的 RF 为 3,因此即使我们使用仲裁读/写关闭一个节点,仍然应该有足够的节点包含数据 (2)。

查看我们未停用的服务器上的 cassandra 日志,我们在其他节点的停用期间看到了这一点。

 INFO [GossipTasks:1] 2013-10-21 15:18:10,695 Gossiper.java (line 803) InetAddress /10.0.22.142 is now DOWN
 INFO [GossipTasks:1] 2013-10-21 15:18:10,696 Gossiper.java (line 803) InetAddress /10.0.32.159 is now DOWN
 INFO [HANDSHAKE-/10.0.22.142] 2013-10-21 15:18:10,862 OutboundTcpConnection.java (line 399) Handshaking version with /10.0.22.142
 INFO [GossipTasks:1] 2013-10-21 15:18:11,696 Gossiper.java (line 803) InetAddress /10.0.12.178 is now DOWN
 INFO [GossipTasks:1] 2013-10-21 15:18:11,697 Gossiper.java (line 803) InetAddress /10.0.22.106 is now DOWN
 INFO [GossipTasks:1] 2013-10-21 15:18:11,698 Gossiper.java (line 803) InetAddress /10.0.32.248 is now DOWN

最终,我们会看到一条看起来像这样的消息。

 INFO [GossipStage:3] 2013-10-21 15:18:19,429 Gossiper.java (line 789) InetAddress /10.0.32.248 is now UP

对于每个节点。所以最终集群中的剩余节点会恢复生机。

当这些节点关闭时,我可以看到为什么我们会收到“可能没有足够的副本......”消息。因为一切都倒下了。

我的问题是,为什么我们一开始没有停用的这些节点会关闭 gossip?

4

1 回答 1

2

Gossip 正在关闭,因为没有从对等方收到几条心跳消息。这通常是由于主机上的过度调度造成的。CPU、网络或磁盘可能负担过重。

在 DataStax,我们正在努力使 Gossip 状态机在这种情况和其他情况下更加健壮。如果您是 DataStax 客户,请向技术支持开一张票,以便进行跟踪和最快的解决方案。

于 2013-10-25T12:48:52.070 回答