【问题标题】:Cassandra nodes can not talk to each otherCassandra 节点无法相互通信
【发布时间】:2018-05-30 20:02:17
【问题描述】:

我在 3 个 AWS EC2 实例上安装了 cassandra,但它们都不能互相 ping 通,7000 上的 telnet 也不能​​。

telnet tm1 7000 Trying 172.31.30.37... telnet: Unable to connect to remote host: Connection timed out

下面是 netstat 的输出

netstat -na|grep LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN

我了解 cassandra 节点间通信我需要打开 7000 端口,但想知道如何让它在 ubuntu 上侦听。

任何帮助将不胜感激!

【问题讨论】:

  • 你确定 cassandra 正在运行吗? nodetool info 工作?如果 cassandra 正在运行,netstat 应该显示的不仅仅是 ssh 监听。

标签: ubuntu cassandra


【解决方案1】:

好的,所以您在这里测试端口7000 的 TCP 通信,但这实际上可以是任何端口。您需要做的第一件事是设置一个进程来侦听端口,然后测试连接(必须先打开 TCP 套接字,然后才能测试与它的连接)。

您可以使用netcat (nc) 这是检查此问题的理想工具。确保你先安装了它,然后你可以运行一个“服务器”来绑定到一个端口,如下所示:

nc -l 0.0.0.0 7000

然后你可以检查以确保它在听

$ netstat -lnt | awk '/7000/;NR==2'
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:7000            0.0.0.0:*               LISTEN

最后检查来自其他节点的连接,如下所示:

$ nc -v -w2 10.1.2.3 7000
Connection to 10.1.2.3 7000 port [tcp/afs3-bos] succeeded!

-v 表示详细,-w 表示超时

请注意,在测试端口之外,ping 并不是测试一般连接性的好方法,因为在很多情况下 ICMP 数据包会被丢弃(安全性)。因此,如果它不 ping,这并不意味着您有连接问题。

【讨论】: