You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重新添加现有DR节点时Cassandra异常问题求助

Cassandra跨DC集群恢复问题(DC1与DR1)

环境与初始配置

DC侧(dc1)

  • 节点数量:3个,IP分别为x.x.x.112、x.x.x.113、x.x.x.114
  • 种子节点:x.x.x.114(所有节点的seed_provider均包含此节点)
  • 节点配置文件:
    • cassandra-rackdc.properties:
      dc=dc1
      rack=rack1
      
    • cassandra.yaml(各节点替换对应IP):
      num_tokens: 16
      seed_provider:
           - seeds: "x.x.x.114, x.x.y.114"
      listen_address: x.x.x.112
      rpc_address: x.x.x.112
      endpoint_snitch: GossipingPropertyFileSnitch
      

DR侧(dr1)

  • 节点数量:3个,IP分别为x.x.y.112、x.x.y.113、x.x.y.114
  • 种子节点:x.x.y.114(所有节点的seed_provider均包含此节点)
  • 节点配置文件:
    • cassandra-rackdc.properties:
      dc=dr1
      rack=rack1
      
    • cassandra.yaml(各节点替换对应IP):
      num_tokens: 16
      seed_provider:
           - seeds: "x.x.x.114,x.x.y.114"
      listen_address: x.x.y.112
      rpc_address: x.x.y.112
      endpoint_snitch: GossipingPropertyFileSnitch
      

问题发生过程

  1. 因网络/基础设施问题,使用nodetool removenode移除DR侧所有节点
  2. 重装并重启DR节点后,发现无法连接到集群
  3. 移除DC与DR两侧seed_provider中的交叉种子节点(即互相移除对方DC的种子IP)
  4. 当前状态:
    • DC侧nodetool gossipinfo仍能看到DR节点,部分节点显示removed状态,部分带有REMOVAL_COORDINATOR标记,但该协调节点已不在集群中
    • DC侧服务正常,keyspace配置为:
      CREATE KEYSPACE mykeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '3'}  AND durable_writes = true;
      
    • 目标是恢复DR侧,将keyspace修改为:
      ALTER KEYSPACE mykeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '3', 'dr1': '3'}  AND durable_writes = true;
      
  5. 尝试过的操作无效:
    • 重启节点
    • 清理DR侧数据目录
    • DR节点行为异常:
      • x.x.y.114自动连接到DC节点,出现在DC侧nodetool status中(尽管已无交叉种子配置)
      • 在DR节点x.x.y.112执行nodetool status时,DC节点显示为DN状态,但x.x.y.114不在列表中

更新:72小时后出现的新错误

移除节点等待72小时后,将x.x.y.112加入x.x.y.114的seed_provider,启动x.x.y.114时出现schema同步错误:

ERROR [main] 2024-09-24 10:31:22,915 DefaultSchemaUpdateHandler.java:142 - 未在PT30S内收到所有已知版本的schema。可使用-Dcassandra.skip_schema_check=true跳过此检查。
ERROR [main] 2024-09-24 10:31:22,917 CassandraDaemon.java:900 - 启动过程中遇到异常
java.lang.IllegalStateException: 无法在PT30S内完成schema就绪
        at org.apache.cassandra.service.StorageService.waitForSchema(StorageService.java:1140)
        at org.apache.cassandra.dht.BootStrapper.allocateTokens(BootStrapper.java:234)
        at org.apache.cassandra.dht.BootStrapper.getBootstrapTokens(BootStrapper.java:180)
        at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:1192)
        at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:1145)
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:936)
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:854)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:421)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:744)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:878)
INFO  [StorageServiceShutdownHook] 2024-09-24 10:31:22,919 HintsService.java:235 - 已暂停hints分发

问题诉求

如何彻底清理DR侧节点的残留集群信息,将其重新作为dr1 DC加入集群?


内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:57:32