WSL2环境Docker部署Cassandra 4.0.1无法通过cqlsh远程访问咨询
问题根因
你遗漏了Cassandra的监听地址相关环境变量配置。官方Cassandra 4.x镜像默认会将RPC服务(也就是cqlsh连接用的9042端口服务)绑定到容器内部IP,仅允许容器网络内的请求访问,外部网络(包括WSL2本地回环、私网/公网地址发来的请求)自然会被拒绝。
需要补充的环境变量
启动Cassandra容器时添加以下两个环境变量即可解决:
CASSANDRA_LISTEN_ADDRESS=0.0.0.0:指定Cassandra节点内部通讯的监听地址,设置为0.0.0.0表示监听容器所有网卡CASSANDRA_RPC_ADDRESS=0.0.0.0:指定客户端RPC请求的监听地址,就是cqlsh连接用的服务监听地址,设置为0.0.0.0后允许所有来源的客户端连接
如果是生产环境部署,建议将CASSANDRA_RPC_ADDRESS替换为你实际对外提供服务的指定IP,避免不必要的端口暴露。
修正后的启动命令
docker run --name cassandra-node-0 -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -e CASSANDRA_BROADCAST_ADDRESS=192.168.1.101 -e CASSANDRA_LISTEN_ADDRESS=0.0.0.0 -e CASSANDRA_RPC_ADDRESS=0.0.0.0 -d cassandra
验证方式
容器启动完成后,在WSL2中执行以下命令测试本地回环连接:
cqlsh 127.0.0.1 9042
也可以直接用私网IP192.168.1.101测试跨设备连接。
内容的提问来源于stack exchange,提问作者S. Baek
相关产品推荐
相关产品推荐

