Cassandra系统不一致。对等状态

时间:2019-06-13 11:34:27

标签: cassandra

我们在Kubernetess上运行6个节点的Cassandra(3.11.2)集群。最近,我注意到system.peers表中的数据不一致。但是,system.local中的数据似乎还可以。 nodetool describecluster也不会报告任何问题。

在下面,您将找到system.peers和system.local查询的匿名结果。我通过一次将端口转发到单个节点来执行它们(我希望这可以跳过负载平衡策略并直接访问节点)

system.peers表的状态是否有害?或者也许是预期的?

SELECT peer, schema_version FROM system.peers

node 0
peer | schema_version
IP1 | schema2
IP2 | schema1
IP3 | schema1
IP4 | null
IP5 | schema1
IP6 | schema1
IP7 | schema1

node 1
peer | schema_version
IP8 | null
IP9 | schema1
IP3 | schema1
IP5 | schema1
IP6 | schema1
IP7 | schema1

node 2
peer | schema_version
IP11 | null
IP2 | schema1
IP9 | schema1
IP3 | schema1
IP4 | schema3
IP10 | null
IP5 | schema1
IP6 | schema1

node 3
peer | schema_version
IP12 | schema3
IP2 | schema1
IP9 | schema1
IP13 | null
IP3 | schema1
IP5 | schema1
IP7 | schema1

node 4
peer | schema_version
IP2 | schema1
IP9 | schema1
IP3 | schema1
IP6 | schema1
IP7 | schema1

node 5
peer | schema_version
IP8 | schema3
IP2 | schema1
IP9 | schema1
IP5 | schema1
IP6 | schema1
IP7 | schema1

SELECT key, broadcast_address, schema_version FROM system.local

node 0
key | broadcast_address | schema_version
local | IP9 | schema1

node 1
key | broadcast_address | schema_version
local | IP2 | schema1

node 2
key | broadcast_address | schema_version
local | IP7 | schema1

node 3
key | broadcast_address | schema_version
local | IP6 | schema1

node 4
key | broadcast_address | schema_version
local | IP5 | schema1

node 5
key | broadcast_address | schema_version
local | IP3 | schema1

nodetool describecluster

Cluster Information:
  Name: CLUSTER_NAME
  Snitch: org.apache.cassandra.locator.GossipingPropertyFileSnitch
  DynamicEndPointSnitch: enabled
  Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
  Schema versions:
    e718e690-d474-376e-8020-ed0eba5b6797: [IP5, IP9, IP3, IP2, IP6, IP7]

1 个答案:

答案 0 :(得分:0)

这是意外的,但已知会发生,例如:CASSANDRA-7122CASSANDRA-7531

这可能会导致不同的客户端驱动程序出现问题(例如,请参见JAVA-852JAVA-2280),尽管大多数客户端库将忽略此类损坏的对等记录,并在发生错误时记录警告。

既然您提到Kubernetes,是否有可能经常更换节点?我想知道C *中是否存在潜在的错误,即它没有正确删除旧的对等项。过去,有一些问题已通过COULD NOT REPRODUCE解决。

如果您可以很容易地重现此问题,那么可以create a JIRA ticket描述问题及其重现方式,这对社区超级有帮助。否则,如果您没有时间,可以描述您的kubernetes设置(例如,您正在使用社区运营商还是其他工具?)并说明您可能正在做的一些操作可能对此有所帮助(例如,替换节点) )有空的时候我可以调查一下。