两个节点共享代币 Cassandra 3.11

Phi*_*KCF 5 cassandra

在获得一些不一致的查询结果后,我们注意到两个节点正在声明两个令牌(-59308344484740261081653676441334745669)的所有权。当节点出现时,我们会在一致和不一致的查询结果之间切换,并在日志中看到这一点。

TokenMetadata.java:226 - Token -5930834448474026108 changing ownership from /172.17.32.251 to /172.17.33.62
TokenMetadata.java:226 - Token 1653676441334745669 changing ownership from /172.17.32.251 to /172.17.33.62
Run Code Online (Sandbox Code Playgroud)

或者相反

TokenMetadata.java:226 - Token -5930834448474026108 changing ownership from /172.17.33.62 to /172.17.32.251
TokenMetadata.java:226 - Token 1653676441334745669 changing ownership from /172.17.33.62 to /172.17.32.251
Run Code Online (Sandbox Code Playgroud)

这是集群上种子节点的对等视图。

cqlsh> select peer, tokens from system.peers where tokens contains '-5930834448474026108' and tokens contains '1653676441334745669' ALLOW FILTERING;
    
 peer          | tokens
---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 172.17.32.251 |     {'-3586663459313641829', '-4235041598543029843', '-5390242841269357826', '-5930834448474026108', '-8760593756478543069', '1653676441334745669', '166599935335281141', '2082376249768721299', '2737611629421780150', '3505320720095561779', '5463123014169021365', '6208992122760287054', '753682649578647219', '7718045837568216134', '8541991172278593633', '9138457739984968252'}
  172.17.33.62 | {'-1187962964387570247', '-1890723219453312357', '-3797875287284457587', '-4763268132960963434', '-5264847899607678948', '-5930834448474026108', '-6918838058130066386', '-7528285457674952405', '-7572391200230517', '-815483085963289954', '-8212901179232502774', '1653676441334745669', '4217161315982965657', '7284498335104901513', '8107381942324557264', '8959725380439260138'}
Run Code Online (Sandbox Code Playgroud)

这里我们需要 的视图nodetool status。每个节点都设置为num_tokens: 16. 请注意,172.17.32.251 在该视图中只有 14 个标记,但在上面的 cql 查询中却有 16 个项目。

nodetool status
Datacenter: us-east-1
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns (effective)  Host ID                               Rack
UN  172.17.32.17   2.95 TiB   16           27.2%             7b26a987-12bb-4149-98cb-65c1945b611a  a
UN  172.17.32.34   2.96 TiB   16           25.0%             94abcef1-5d8f-49b5-ba35-b2a099c082f6  a
UN  172.17.34.103  3.11 TiB   16           25.1%             ce361749-0133-497d-b687-6cb741df2646  c
UN  172.17.34.87   3.18 TiB   16           25.6%             8687ba37-8e22-49ae-a85d-089f11e2a21d  c
UN  172.17.32.103  3.19 TiB   16           27.0%             37a619e2-0e2c-4aa0-bf15-e189eb265b77  a
UN  172.17.33.9    2.97 TiB   16           24.6%             79ce1b7e-0ba2-48d8-ab07-bdd08d67048e  b
UN  172.17.33.11   3.08 TiB   16           24.9%             bb9c7716-d66a-4464-bfa8-5a161fd45816  b
UN  172.17.32.251  2.53 TiB   14           20.8%             0de45700-70f5-454b-a191-c62faae99682  a
UN  172.17.33.219  3.22 TiB   16           25.8%             5067ced7-4823-4a71-9c7d-c70030530430  b
UN  172.17.34.127  3.04 TiB   16           24.5%             7557204f-0b47-4058-85a4-5fa45c2baf6f  c
DN  172.17.33.62   2.8 TiB    16           24.7%             b5bcb2e4-f2c8-49bc-9363-1393d495ca38  b
UN  172.17.34.238  3.08 TiB   16           24.8%             e56190d4-64f3-4cea-959f-a1bc76b88833  c
Run Code Online (Sandbox Code Playgroud)

这是一个已经运行了近一年的生产集群。我们没有使用任何手动令牌分配来设置此集群。

解决代币分配问题的最佳方法是什么?

小智 3

您是否碰巧并行引导节点?当尝试过快地引导节点时,我已经看到这种情况发生。现在修复此问题的最佳方法是从集群中停用其中一个节点,在停用完成后暗杀该节点,然后清除数据并将其引导回集群。对于您的数据加载,这不是一个快速完成的操作,但它是解决问题的最佳方法。