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

Cassandra双节点集群无法组建启动报错求助

Cassandra双节点集群启动报错排查与解决

问题描述

在两台节点(IP1:10.0.0.2、IP2:10.0.0.3)部署Cassandra并组建双节点集群时,启动出现以下报错:

INFO  [Messaging-EventLoop-3-3] 2022-08-08 15:15:36,172 NoSpamLogger.java:92 - /10.0.0.3:7000->/10.0.0.2:7000-URGENT_MESSAGES-[no-channel] failed to connect
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: No route to host: /10.0.0.2:7000
Caused by: java.net.ConnectException: finishConnect(..) failed: No route to host
        at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
        at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:673)
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:650)
        at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:530)
        at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:470)
        at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:829)
ERROR [main] 2022-08-08 15:15:37,034 CassandraDaemon.java:911 - Exception encountered during startup
java.lang.RuntimeException: Unable to gossip with any peers
        at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1844)
        at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:650)
        at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:936)
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:786)
        at org.apache.cassandra.service.StorageService.initServer(StorageService.java:731)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:420)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:765)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:889)

当前节点yaml配置:

  • IP1(10.0.0.2):
    listen_address: 10.0.0.2
    rpc_address: 10.0.0.2
    seeds: "10.0.0.3:7000"
    
  • IP2(10.0.0.3):
    listen_address: 10.0.0.3
    rpc_address: 10.0.0.3
    seeds: "10.0.0.3:7000"
    

已开放端口:8888、7000、7001、7199、9042、9142、9160

解决方案

1. 修正种子节点配置

双节点集群中,每个节点的seeds应包含所有种子节点(至少包含对方节点)。当前IP2的seeds仅配置自身,会导致IP1启动后无法被集群识别。

修改配置:

  • IP1的seeds改为:"10.0.0.2:7000,10.0.0.3:7000"
  • IP2的seeds改为:"10.0.0.2:7000,10.0.0.3:7000"

2. 验证节点间网络连通性

报错中的No route to host说明节点间7000端口无法连通,需实际验证:

  • 在IP1执行:nc -zv 10.0.0.3 7000
  • 在IP2执行:nc -zv 10.0.0.2 7000

若连通失败,排查方向:

  • 防火墙规则:确认端口开放规则已应用到对应网卡,且优先级正确
  • 路由配置:检查节点是否在同一网段,路由表是否包含对方节点的路由条目
  • 云环境安全组:若为云服务器,需额外配置安全组允许节点间7000端口的双向流量

3. 调整启动顺序

启动集群时遵循以下顺序:

  1. 先启动IP2节点,等待日志输出Startup complete确认完全启动
  2. 再启动IP1节点,此时IP1会通过种子节点IP2加入集群

4. 清理脏数据(可选)

若之前启动失败留下不一致的集群状态,需清理后重启:

  • 停止Cassandra服务:sudo systemctl stop cassandra(根据实际服务管理方式调整)
  • 删除数据目录(默认/var/lib/cassandra/data)和提交日志目录(默认/var/lib/cassandra/commitlog)
  • 按正确顺序重新启动节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:06:17