我有一个3节点单数据中心Cassandra集群,由节点 A (10.0.0.1), B (10.0.0.2)和 C (10.0.0.3)组成 . 重要配置包括:

  • GossipingPropertyFileSnitch(dc = dc1,rack = rack1)

  • 种子节点: A (参见章节:已采取的步骤)

  • NetworkTopologyStrategy

  • 复制因子:3

问题:

运行nodetool status会产生以下输出:

Datacenter: dc1
    ===============
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address        Load       Tokens       Owns (effective)  Host         ID                               Rack
    UN  10.0.0.1  177.41 MiB  256          100.0%                    0a8da3f3-73d0-4d2f-bf97-e002d91a444f  rack1
    UN  10.0.0.2  144.34 MiB  256          100.0%                    5d8ca11f-a1c2-4381-aeeb-ed824ceafc96  rack1
    UN  10.0.0.3  44.36 MiB  256          100.0%                    b20a490e-b54d-4c65-800c-56d98f5a86dd  rack1

这表明负载balacing不能正常工作 . 此外,nodetool describecluster表示模式不一致 .

Cluster Information:
        Name: Test Cluster
        Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
        Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
        Schema versions:
            a4dade6e-d3a1-3168-8ea0-b7ffb11bc742: [10.0.0.1]

            f2dcee06-79c5-3855-9305-ce8ad2ee7fe4: [10.0.0.2, 10.0.0.3]

采取的措施

  • 所有节点上的端口转发和检查连接

  • 种子节点的不同组合( ABCA / BB / CA / B / CA / C

  • nodetool修复所有节点(没有错误)

编辑1:


A (10.0.0.1)上的nodetool resetlocalschema无法解决模式不一致,甚至在 B (10.0.0.2)和 C (10.0.0.3)上运行后也没有解决 .

编辑2:


在正常关闭所有三个节点并重复 Edit 1 中描述的过程后,解决了模式不一致问题 .

Cluster Information:
        Name: Test Cluster
        Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
        Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
        Schema versions:
            f2dcee06-79c5-3855-9305-ce8ad2ee7fe4: [10.0.0.1, 10.0.0.2, 10.0.0.3]

负载 balancer 问题仍然存在 .