Amazon web services 远程连接到单个节点Cassandra clustor(在EC2实例上)

Amazon web services 远程连接到单个节点Cassandra clustor(在EC2实例上),amazon-web-services,amazon-ec2,tcp,cassandra,ip,Amazon Web Services,Amazon Ec2,Tcp,Cassandra,Ip,我正在一个中型Ubuntu EC2实例上运行一个单节点Cassandra集群。在对cassandra.yaml进行任何更改之前,我可以使用cqlsh连接到cassandra 并运行netstat-ltn日志: Proto Recv-Q Send-Q本地地址外部地址状态 tcp 0 0 127.0.0.53:53 0.0.0.0:*听 tcp 0.0.0.0:22 0.0.0.0.0:*听 tcp 0 0 127.0.0.1:38807 0.0.0.0:*听 tcp 0 0 127.0.0.1:7

我正在一个中型Ubuntu EC2实例上运行一个单节点Cassandra集群。在对cassandra.yaml进行任何更改之前,我可以使用
cqlsh
连接到cassandra

并运行
netstat-ltn
日志:

Proto Recv-Q Send-Q本地地址外部地址状态

tcp 0 0 127.0.0.53:53 0.0.0.0:*听

tcp 0.0.0.0:22 0.0.0.0.0:*听

tcp 0 0 127.0.0.1:38807 0.0.0.0:*听

tcp 0 0 127.0.0.1:7000 0.0.0.0:*听

TCP0127.0.0.1:358350.0.0.0:*听

TCP0127.0.0.1:71990.0.0.0:*听

tcp 0 0 127.0.0.1:9160 0.0.0.0:*听

tcp 0 0 127.0.0.1:9042 0.0.0.0:*听

tcp6 0:::22:::*听

检查Cassandra服务状态显示其处于活动状态(正在运行)

尝试使用
cqlsh
远程连接实例超时,我假设这是因为它没有在实例公共IP上侦听客户端

到目前为止,我已经厌倦了:

  • 将侦听地址更改为我的私有实例IP
  • start\u rpc:true
    rpc\u地址
    设置为我的专用IP,并将
    广播\u地址
    设置为我的公用IP
  • rpc_地址
    设置为0.0.0.0,并将
    broadcast_rpc_地址
    设置为我的公共IP
注意:我保留了
种子:“127.0.0.1”
,因为我没有其他种子或节点

进行上述任何更改后,我不再能够在本地使用
cqlsh
cqlsh
访问Cassandra(远程仍然没有连接),即使是在实例终端本身中,我也会被拒绝连接。另外,
netstat-ltn
现在记录:

Proto Recv-Q Send-Q本地地址外部地址状态

tcp 0 0 127.0.0.53:53 0.0.0.0:*听

tcp 0.0.0.0:22 0.0.0.0.0:*听

tcp 0 0 127.0.0.1:38807 0.0.0.0:*听

tcp6 0:::22:::*听

Cassandra服务状态显示为活动(已退出)

我希望能够远程连接到该实例,但是在对cassandra.yaml进行任何更改时,我不再能够连接到它,即使是在本地

另外,我在实例上为端口80、22、9042和7000设置了安全组


您知道为什么会发生这种情况,或者我可以如何解决它吗?

对于既有专用IP地址又有公用IP地址的节点,您只需要设置:

listen_address: private_ip
rpc_address: public_ip
如果其他区域中存在节点,则只需将
广播_地址设置为节点的公共IP,这样节点就可以在EC2上通过WAN相互通信。这意味着您需要回滚所配置的所有其他属性

listen\u地址
用于在端口
7000
上进行节点间通信(gossip),这就是它被设置为专用IP的原因

应用程序/客户端(
cqlsh
只是另一个客户端)连接到
rpc_地址上的节点,因此需要将其设置为可公开访问的IP


如果你对更多细节感兴趣,我最近在这篇文章中回答了一个类似的问题。干杯

对于同时具有私有和公共IP地址的节点,您只需设置:

listen_address: private_ip
rpc_address: public_ip
如果其他区域中存在节点,则只需将
广播_地址设置为节点的公共IP,这样节点就可以在EC2上通过WAN相互通信。这意味着您需要回滚所配置的所有其他属性

listen\u地址
用于在端口
7000
上进行节点间通信(gossip),这就是它被设置为专用IP的原因

应用程序/客户端(
cqlsh
只是另一个客户端)连接到
rpc_地址上的节点,因此需要将其设置为可公开访问的IP

如果你对更多细节感兴趣,我最近在这篇文章中回答了一个类似的问题。干杯