我正在尝试使用 OpenJDK 1.8 在 Ubuntu 15.10 上设置测试 Cassandra 3.3 集群。节点无法相互通信,因为 Cassandra 只监听环回接口(interface),如 netstat
所示。
tcp 0 0 127.0.0.1:7199 0.0.0.0:* LISTEN
tcp6 0 0 127.0.0.1:9042 :::* LISTEN
我试图在/etc/cassandra/cassandra.yml 中插入我的外部 IP 地址。
listen_address
:我尝试了实际的外部 IP 地址并将该字段留空。 rpc_address
:我尝试了实际的外部 IP 地址和 0.0.0.0。 我还尝试修改/etc/cassandra/cassandra-env.sh 中的以下内容。
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<actual external IP address>"
在每次更改之间我停止服务,删除/var/lib/cassandra/data/system,然后重新启动服务。
如何配置 Cassandra 监听的接口(interface)?
最佳答案
rpc_address
是外部应用程序客户端用于连接 Cassandra 的地址。listen_address
是 Cassandra 将用于连接到其他 Cassandra 节点的地址。
我会确保您的节点可以在该 IP 上进行通信。具体来说,Cassandra 将使用端口 7000 进行节点间通信(如果使用节点到节点 SSL,则为 7001)。最好的测试方法是使用 telnet。如果它有效,这就是您将看到的:
$ telnet 192.168.0.101 7000
Trying 192.168.0.101...
Connected to 192.168.0.101.
Escape character is '^]'.
所以我会:
listen_address
中设置他们看到的 IP。 关于cassandra - 如何配置Cassandra监听的接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36432887/