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

无法从远程EC2实例连接Cassandra服务器的问题咨询

跨EC2实例连接Cassandra失败的排查与解决

我之前帮朋友排查过几乎一模一样的问题,咱们一步步来搞定它:

核心问题根源

Cassandra默认配置只监听本地回环地址(127.0.0.1),而且EC2的安全组默认会阻断外部端口访问,这两个点是最常见的坑。

具体解决步骤

1. 修正Cassandra的监听配置

登录运行Cassandra的第一台EC2实例,找到Cassandra的配置文件cassandra.yaml(通常在/etc/cassandra/路径下,源码安装的话可能在你解压的目录里),修改以下几个关键参数:

  • listen_address: 把默认的127.0.0.1改成这台EC2的私有IP(同一子网内用私有IP通信更稳定,也更安全),或者测试阶段可以临时设为0.0.0.0(允许所有地址监听,生产环境不建议这么做)
  • rpc_address: 同样改成私有IP或者0.0.0.0,这个参数负责处理客户端的连接请求
  • 如果一定要用公网IP连接,额外设置broadcast_rpc_address: 你的第一台EC2公网IP,不然客户端可能无法获取正确的连接地址

修改完后重启Cassandra服务:

sudo systemctl restart cassandra
# 如果是旧版Amazon Linux,用下面的命令
sudo service cassandra restart

2. 配置EC2安全组放行端口

第一台EC2的安全组必须允许第二台EC2访问Cassandra的CQL端口(默认9042):

  • 登录AWS控制台,找到第一台EC2的安全组,添加入站规则
  • 规则类型选TCP,端口范围填9042,来源选第二台EC2的私有IP(或者同一子网的CIDR段,比如10.0.0.0/16,这样子网内所有实例都能访问)
  • 如果坚持用公网IP连接,来源也可以设为第二台EC2的公网IP,但同一子网内优先用私有IP更高效

3. 验证连接并修改Python代码

在第二台EC2上,先试试用Cassandra自带的cqlsh工具测试连接:

cqlsh 第一台EC2的私有IP

如果cqlsh能成功连接,再把Python代码里的IP替换成这个私有IP执行,应该就能正常连接了。

额外验证:在第一台EC2上执行netstat -tulpn | grep 9042,确认Cassandra的9042端口是绑定在私有IP或者0.0.0.0上,而不是只有127.0.0.1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:19:40