经过几次自我测试,我认为我遇到了问题telnet
。所以我重新创建了一个较短的版本这个问题
我有两台机器:
- cassandra 在一台使用 IP 172.17.1.XX 的机器上运行。
- ???
我的Java程序是:
public static void main(String a[])
{
System.out.println("I am in");
Client client = new Client();
client.connect("172.17.1.XX");
client.close();
}
public static void connect(String node)
{
cluster = Cluster.builder().addContactPoint(node).withPort(9160).build();
Metadata metadata = cluster.getMetadata();
}
如果我在 cassandra 机器上运行此程序,它会运行。如果我从第二台机器运行相同的程序,则输出为:
Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException:
All host(s) tried for query failed (tried: /172.17.1.XX:9160 (com.datastax.driver.core.TransportException: [/172.17.1.XX:9160] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:196)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:80)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1145)
at com.datastax.driver.core.Cluster.getMetadata(Cluster.java:313)
at com.example.cassandra.Client.connect(Client.java:18)
at com.example.cassandra.Client.main(Client.java:74)
netstat -plten
在 Cassandra 机器上使用返回
`9160 port is open for all. 0.0.0.0:9160`
如果我使用:telnet 172.17.1.XX 9160
“在什么机器上?”并输入一些内容并按回车键,则输出为:
Connection closed by foreign agent
我尝试在 cassandra 系统中使用 ip 和 localhost 进行相同的 telnet,得到了相同的行为。
telnet localhost 9160
接受 3 个输入,connection closed by foreign agent
而 ip 只接受 2 个输入。这是什么?
我有三个问题:
- 为什么我会收到这个错误?
- cassandra 不是一种接受来自 telnet 数据的服务吗?
- 我该如何解决这个问题?