大多数情况下运行的 Cassandra 集群有时会遇到服务中断,尤其是当一个(或多个)节点无法与集群中的其他节点进行八卦时。
症状
一个症状是节点无缘无故地随机上升和下降。system.log
以下是节点的示例摘录:
INFO [GossipTasks:1] 2016-04-29 02:47:32,559 Gossiper.java:1001 - InetAddress /10.1.2.3 is now DOWN
INFO [GossipTasks:1] 2016-04-29 02:50:47,123 Gossiper.java:1001 - InetAddress /10.1.2.4 is now DOWN
INFO [GossipTasks:1] 2016-04-29 02:54:59,640 Gossiper.java:1001 - InetAddress /10.1.2.5 is now DOWN
INFO [SharedPool-Worker-2] 2016-04-29 03:01:23,828 Gossiper.java:987 - InetAddress /10.1.2.4 is now UP
INFO [SharedPool-Worker-1] 2016-04-29 03:01:59,432 Gossiper.java:987 - InetAddress /10.1.2.5 is now UP
INFO [SharedPool-Worker-7] 2016-04-29 03:02:01,839 Gossiper.java:987 - InetAddress /10.1.2.3 is now UP
nodetool status
同样,根据运行命令的节点,不同的节点在输出中似乎已关闭,例如:
Datacenter: Cassandra
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns Host ID Rack
DN 10.1.2.3 8.97 GB 256 ? a50dfef5-229d-4d15-89d9-971bec01094b rack1
UN 10.1.2.5 8.9 GB 256 ? a16b71a2-9b95-4669-a6bd-d7326bd279e2 rack1
DN 10.1.2.4 9.09 GB 256 ? ac01b6f9-3cb9-47ff-83c6-0404836386eb rack1
UN 10.1.2.6 10.65 GB 256 ? 9c0ef3a2-aad7-4d06-b015-f32ddccac750 rack1
什么可能导致这个问题?
原因
在非常小的集群中有关于此问题的孤立报告。上述症状已被确定与配置有 (GPFS) 的集群有关,但目录中有(for )
GossipingPropertyFileSnitch
的副本,两者都用于定义节点的机架放置。cassandra-topology.properties
PropertyFileSnitch
conf/
cassandra-rackdc.properties
cassandra-topology.properties
可以在启动消息日志中验证GPFS 的组合:重要的是要注意这个问题是非常间歇性的,并不是所有触发问题的向量都是已知的。
解决方法
按照设计,
GossipingPropertyFileSnitch
回退到 上PropertyFileSnitch
作为cassandra-topology.properties
一种允许集群迁移到 GPFS 的方法。如果集群已经开启,即使节点没有问题,也要
GossipingPropertyFileSnitch
检查是否已被删除或不存在,以确保集群将来不会遇到问题。cassandra-topology.properties
有关详细信息,请参阅CASSANDRA-11508。干杯!