我正在使用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
。
但是,如果我尝试在同一终端的群集(10.0.32.153)中使用另一个IP地址,我会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"
但是当我这样做时,我甚至没有得到回应。它只是挂起。
非常感谢任何指导。
答案 0 :(得分:3)
该问题最终成为防火墙/安全组问题。虽然确实使用了jmx端口7199,但显然其他端口随机用于rmi。 Cassandra port usage - how are the ports used?
所以解决方案是打开防火墙然后配置cassandra-env.sh以包含
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<ip>