1

我正在使用 Oracle 的 64 位 JVM 版本 1.7.0_10 的 Amazon Web Service VPC 上运行 cassandra 1.2 的 6 节点集群。

当我登录到其中一个节点(例如 10.0.12.200)时,我可以正常运行nodetool -h 10.0.12.200 status

但是,如果我尝试从同一个终端使用集群中的另一个 IP 地址(10.0.32.153),我会得到Failed to connect to '10.0.32.153:7199: Connection refused'.

在我尝试连接的 10.0.32.153 节点上,我进行了以下检查。

  • 从 10.0.12.200 我可以运行telnet 10.0.32.153 7199并获得连接,因此它似乎不是端口 7199 的安全组/防火墙问题。

  • 如果我在 10.0.32.153 上运行,netstat -ant|grep 7199我会看到

    tcp 0 0 0.0.0.0:7199 0.0.0.0:* LISTEN

    所以 cassandra 似乎确实在监听端口

  • 10.0.32.153 上的 cassandra-env.sh 文件使 jmx 的所有 JVM_OPTS 都处于活动状态

    -Dcom.sun.management.jmxremote.port=7199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

在搜索互联网时尝试解决此问题时,我在黑暗中看到的唯一镜头是设置以下内容:

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=10.0.32.153"

但是当我这样做时,我什至没有得到回应。它只是挂起。

任何指导将不胜感激。

4

1 回答 1

3

该问题最终成为防火墙/安全组问题。虽然确实使用了 jmx 端口 7199,但显然其他端口随机用于 rmi。 Cassandra 端口使用情况 - 端口是如何使用的?

所以解决方案是打开防火墙,然后配置 cassandra-env.sh 以包含

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<ip>

于 2013-07-02T21:27:37.903 回答