.NET Core应用无法远程连接单节点Cassandra服务器问题排查
问题分析与解决方案
问题根源
- 核心问题出在Cassandra的
listen_address配置上:当该参数设为localhost时,Cassandra仅绑定本地回环接口(127.0.0.1),不会监听机器的外部IP(192.168.108.198)。 - DBeaver能通过SSH端口转发连接,是因为转发机制是将远程机器的
localhost:9042映射到本地端口,相当于从远程机器内部访问Cassandra,符合listen_address的配置限制。 - .NET Core应用直接访问
192.168.108.198:9042,但Cassandra未在该IP的9042端口监听,因此触发SocketException。
解决步骤
- 修改Cassandra配置
编辑cassandra.yaml文件:- 将
listen_address改为192.168.108.198,或设为0.0.0.0(监听所有网络接口,测试环境更便捷)。 - 同步调整
rpc_address为相同值或0.0.0.0,确保客户端能通过IP访问RPC服务。
- 将
- 重启Cassandra服务,使配置生效。
- 验证端口监听
在Cassandra机器上执行命令:
确认输出中存在netstat -tulpn | grep 9042192.168.108.198:9042或0.0.0.0:9042。 - 检查应用配置
确保.NET应用中_connectionConfig.ConnectionStrings设置为192.168.108.198,端口与Cassandra的native_transport_port(默认9042)一致。
注意事项
生产环境建议指定具体IP而非0.0.0.0,以降低安全风险;测试环境使用0.0.0.0可避免频繁调整配置。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

