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

Docker部署Cassandra遇连接错误:无法连接到任何服务器

Cassandra Docker容器连接拒绝问题排查与解决

问题描述

按照Cassandra官方入门指南操作,执行以下命令启动容器:

  • docker pull cassandra:latest
  • docker run --name cass_cluster cassandra:latest

容器启动后持续运行(无就绪提示),执行docker exec -it cass_cluster cqlsh时出现连接拒绝错误:

Connection error: ('Unable to connect to any servers', {'127.0.0.1:9042': ConnectionRefusedError(111, "Tried connecting to [('127.0.0.1', 9042)]. Last error: Connection refused")})

本地环境信息:

  • Java版本:
openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7-Ubuntu-0ubuntu322.04)
OpenJDK 64-Bit Server VM (build 19.0.2+7-Ubuntu-0ubuntu322.04, mixed mode, sharing)
  • Python版本:Python 3.10.12

排查与解决步骤

1. 等待Cassandra初始化完成

Cassandra首次启动需要时间加载schema、初始化系统表,直接执行cqlsh可能过早。先查看容器日志确认就绪状态:

docker logs cass_cluster

当日志出现Created default superuser role 'cassandra'或Startup complete时,再尝试连接。

2. 修改容器启动参数

原启动命令未指定后台运行和集群配置,导致终端被占用且初始化效率低。重新启动容器:

# 清理现有容器
docker stop cass_cluster && docker rm cass_cluster
# 后台启动并指定集群参数
docker run --name cass_cluster -d -p 9042:9042 cassandra:latest -seeds cass_cluster -cluster-name TestCluster

-d让容器后台运行,-seeds指定单节点集群的种子节点,-cluster-name明确集群标识,加速初始化。

3. 容器内手动指定IP连接

若日志显示就绪但仍连不上,进入容器内部,用容器实际IP连接:

docker exec -it cass_cluster bash
# 获取容器IP并连接
cqlsh $(hostname -i) 9042

如果成功,说明Cassandra未绑定到127.0.0.1,可修改/etc/cassandra/cassandra.yaml:

  • 将listen_address和rpc_address设为0.0.0.0
  • 重启服务:nodetool stopdaemon && cassandra -R

4. 更换稳定版本镜像

latest标签可能对应较新的测试版本,尝试使用稳定版(如4.1):

docker pull cassandra:4.1
docker run --name cass_cluster -d -p 9042:9042 cassandra:4.1

5. 忽略本地Java版本

Docker容器自带Cassandra运行所需的Java环境,本地Java版本不影响容器内服务,无需调整。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 16:53:12