当我尝试 cqlsh 它返回的节点时,我有一个两节点 cassandra 集群
ubuntu@ip-172-31-47-96:~$ cqlsh
连接错误:('无法连接到任何服务器',{'127.0.0.1:9042':ConnectionRefusedError(111,“尝试连接到[('127.0.0.1',9042)]。最后一个错误:连接被拒绝”) }) 当我添加节点的 IPv4 地址时,它可以工作
ubuntu@ip-172-31-47-96:~$ cqlsh 172.31.47.96
已连接至 Cassandra 集群,地址为 172.31.47.96:9042 [cqlsh 6.1.0 |卡桑德拉 4.1.3 | CQL 规范 3.4.6 |本机协议 v5] 使用“帮助”寻求帮助。 cqlsh> 这是正常的吗?监听地址设置为私有 IPv4,rpc 地址设置为与监听地址相同,但我将其更改为 0.0.0.0 并添加了私有 IPv4 的广播地址,问题仍然存在
对于同时拥有私有IP和公有IP地址的节点,您只需要设置:
listen_address: private_ip
rpc_address: public_ip
如果其他区域有节点,则只需将
broadcast_address
设置为节点的公共 IP,以便节点可以通过 EC2 上的 WAN 相互通信(我假设您在此处使用 AWS 上的 EC2 实例作为例子)。这意味着您需要回滚您配置的所有其他属性。
listen_address
用于节点间通信(端口7000
上的八卦),这就是为什么它被设置为私有IP。
应用程序/客户端(
cqlsh
只是另一个客户端!)连接到rpc_address
上的节点,因此需要将其设置为可公开访问的IP。