我在一个中型ubuntuec2示例上运行一个单节点cassandra集群。在对cassandra.yaml进行任何更改之前,我可以使用 cqlsh
,
还有跑步 netstat -ltn
日志:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:38807 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:35835 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:7199 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9160 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9042 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN
检查cassandra服务状态显示它处于活动状态(正在运行)
正在尝试使用远程连接到示例 cqlsh <instance public IP>
超时,我假设这是因为它没有监听示例公共ip上的客户机。
到目前为止我已经累了:
改变 listen_address
到我的私有示例ip
设置 start_rpc:true
, rpc_address
到我的私人ip和 broadcast_address
到我的公共ip
设置 rpc_address
到0.0.0.0和 broadcast_rpc_address
到我的公共ip
注:我保留 seeds: "127.0.0.1"
因为我没有其他种子或节点。
进行上述任何更改后,我将无法使用访问cassandra cqlsh
或者 cqlsh <public IP>
本地(和远程仍然没有连接),即使在示例终端本身和我会得到我的连接被拒绝。也, netstat -ltn
现在日志: Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:38807 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN
cassandra服务状态显示为active(exited)
我希望能够远程连接到该示例,但是在对cassandra.yaml进行任何更改时,我将无法再连接到它,即使是在本地。
另外,我在示例上设置了端口80、22、9042和7000的安全组。
你知道为什么会这样吗?或者我该怎么解决?
1条答案
按热度按时间taor4pac1#
对于同时具有私有和公共ip地址的节点,只需设置:
你只需要设置
broadcast_address
如果在另一个区域中有节点,则连接到节点的公共ip,这样节点就可以通过ec2上的wan相互通信。这意味着您需要回滚配置的所有其他属性。这个
listen_address
用于节点间通信(在端口上)7000
)这就是为什么它被设置为私有ip。应用程序/客户端(
cqlsh
只是另一个客户端)连接到rpc_address
因此,它需要设置为一个可公开访问的ip。我最近在这篇文章中回答了一个类似的问题https://community.datastax.com/questions/8867/ 如果你对细节感兴趣的话。干杯!