首页 > 解决方案 > Cassandra 节点无法相互通信

问题描述

我已经在 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 上监听。

任何帮助,将不胜感激 !

标签: ubuntucassandra

解决方案


好的,所以你在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,这并不意味着您有连接问题。


推荐阅读