Java 卡桑德拉——nodetool没有在另一台机器上工作?

Java 卡桑德拉——nodetool没有在另一台机器上工作?,java,cassandra,Java,Cassandra,我在4个节点上有一个cassandra集群(每个节点运行ubuntu 10.04和cassandra 0.7.4)。 所有节点都使用交换机连接,每个节点都分配了一个静态IP地址(不涉及DNS) 节点似乎运行正常(状态为“正常”,所有节点均已启动等) 问题是:nodetool可以工作,但只有在同一节点上运行nodetool命令时,它才能工作。当我尝试在STATIC_IP=192.168.0.253上运行nodetool时,我得到以下错误: (注:机器“s3789”的静态IP为192.168.0.2

我在4个节点上有一个cassandra集群(每个节点运行ubuntu 10.04和cassandra 0.7.4)。 所有节点都使用交换机连接,每个节点都分配了一个静态IP地址(不涉及DNS)

节点似乎运行正常(状态为“正常”,所有节点均已启动等)

问题是:
nodetool
可以工作,但只有在同一节点上运行
nodetool
命令时,它才能工作。当我尝试在STATIC_IP=192.168.0.253上运行
nodetool
时,我得到以下错误:

(注:机器“s3789”的静态IP为192.168.0.253)

user@s3789:/opt/cassandra/apache-cassandra-0.7.4$bin/nodetool-主机192.168.0.4环

连接到远程JMX代理时出错!
java.rmi.ConnectException:拒绝连接主机:127.0.1.1;嵌套异常是:
java.net.ConnectException:连接被拒绝
位于sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
位于sun.rmi.transport.tcp.tcpcchannel.createConnection(tcpcchannel.java:216)
位于sun.rmi.transport.tcp.tcpcchannel.newConnection(tcpcchannel.java:202)
位于sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
位于javax.management.remote.rmi.RMIServerImpl\u Stub.newClient(未知源)
位于javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2343)
位于javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:296)
位于javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267)
位于org.apache.cassandra.tools.NodeProbe.connect(NodeProbe.java:137)
位于org.apache.cassandra.tools.NodeProbe.(NodeProbe.java:107)
位于org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:511)
原因:java.net.ConnectException:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
位于java.net.socksocketimpl.connect(socksocketimpl.java:384)
位于java.net.Socket.connect(Socket.java:546)
位于java.net.Socket.connect(Socket.java:495)
位于java.net.Socket(Socket.java:392)
位于java.net.Socket。(Socket.java:206)
位于sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
位于sun.rmi.transport.proxy.rmismastersocketfactory.createSocket(rmismastersocketfactory.java:146)
位于sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)


如何解决这个问题有什么提示吗?

来自conf/cassandra-env.sh:

#如果连接有问题,请添加以下内容:
#JVM_OPTS=“$JVM_OPTS-Djava.rmi.server.hostname=”
# 
#看
# https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole
#有关通过防火墙等配置JMX的更多信息(简短版本:
#首先让它在没有防火墙的情况下工作。)

在启动服务器之前,检查您是否已启动注册表

rmiregistry &

猜测:您是否已将指定的ip地址和端口放入
主机
允许文件?没有
主机
拒绝文件,为什么我要使用
允许
?有些是这样的…但是如果您有
主机
文件,为什么不在其中包含您的ip地址?谢谢。我希望有一份好的、易于理解的文档——我花了好几个小时试图弄明白这一点。我遇到了与原始海报相同的问题。这个修复有帮助,但我还需要打开内部LAN防火墙上的端口,以便cassandra节点可以通信。所以,请确保cassandra所需的所有端口都已打开。@jbellis:是的。。。但我不明白,如果不在最后添加JVM_OPTS=“$JVM_OPTS-Djava.rmi.server.hostname=”,它在MAC OS中是如何工作的?可能与JVM有关吗?你能解释一下吗properly@user3262424!你到底通过了什么?是公共ip吗??