远程连接到单节点 Cassandra 集群(在 EC2 实例上)
Remotely connecting to a single node Cassandra clustor (on an EC2 instance)
我是 运行 中型 Ubuntu EC2 实例上的单节点 Cassandra 集群。在对 cassandra.yaml 进行任何更改之前,我可以使用 cqlsh
、
连接到 cassandra
和运行 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>
远程连接到实例超时,我假设这是因为它没有在实例 public IP 上侦听客户端。
到目前为止我已经累了:
- 正在将
listen_address
更改为我的私有实例 IP
- 将
start_rpc:true
、rpc_address
设置为我的私有 IP,将 broadcast_address
设置为我的 public IP
- 将
rpc_address
设置为 0.0.0.0 并将 broadcast_rpc_address
设置为我的 public IP
注意:我保持 seeds: "127.0.0.1"
不变,因为我没有其他种子或节点。
进行上述任何更改后,我不再能够在本地使用 cqlsh
或 cqlsh <public IP>
访问 Cassandra(并且远程仍然无法连接),即使在实例终端本身中也是如此,我会我得到 连接被拒绝。此外,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 设置了 安全组。
知道为什么会发生这种情况或我该如何解决它吗?
对于同时拥有私有和public IP地址的节点,您只需设置:
listen_address: private_ip
rpc_address: public_ip
如果在另一个区域中有节点,则只需将 broadcast_address
设置为节点的 public IP,这样节点就可以通过 EC2 上的 WAN 相互通信。这意味着您需要回滚您配置的所有其他属性。
listen_address
用于节点间通信(gossip 在端口 7000
上),这就是它设置为私有 IP 的原因。
Apps/clients(cqlsh
只是另一个客户端)连接到 rpc_address
上的节点,因此需要将其设置为 public 可访问的 IP .
我最近在 post https://community.datastax.com/questions/8867/ 中回答了一个类似的问题,如果您对更详细的信息感兴趣的话。干杯!
我是 运行 中型 Ubuntu EC2 实例上的单节点 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>
远程连接到实例超时,我假设这是因为它没有在实例 public IP 上侦听客户端。
到目前为止我已经累了:
- 正在将
listen_address
更改为我的私有实例 IP - 将
start_rpc:true
、rpc_address
设置为我的私有 IP,将broadcast_address
设置为我的 public IP - 将
rpc_address
设置为 0.0.0.0 并将broadcast_rpc_address
设置为我的 public IP
注意:我保持 seeds: "127.0.0.1"
不变,因为我没有其他种子或节点。
进行上述任何更改后,我不再能够在本地使用 cqlsh
或 cqlsh <public IP>
访问 Cassandra(并且远程仍然无法连接),即使在实例终端本身中也是如此,我会我得到 连接被拒绝。此外,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 设置了 安全组。
知道为什么会发生这种情况或我该如何解决它吗?
对于同时拥有私有和public IP地址的节点,您只需设置:
listen_address: private_ip
rpc_address: public_ip
如果在另一个区域中有节点,则只需将 broadcast_address
设置为节点的 public IP,这样节点就可以通过 EC2 上的 WAN 相互通信。这意味着您需要回滚您配置的所有其他属性。
listen_address
用于节点间通信(gossip 在端口 7000
上),这就是它设置为私有 IP 的原因。
Apps/clients(cqlsh
只是另一个客户端)连接到 rpc_address
上的节点,因此需要将其设置为 public 可访问的 IP .
我最近在 post https://community.datastax.com/questions/8867/ 中回答了一个类似的问题,如果您对更详细的信息感兴趣的话。干杯!