Cassandra nodetool处于独立模式

时间:2012-03-04 12:56:39

标签: cassandra

我已经让Cassandra 0.7在独立模式下运行了,我正在尝试运行nodetool但是我得到了JMX异常。访问远程服务器时不需要JMX配置吗?我正在访问我的本地机器。

为什么nodetool正在寻找63.251.179.13?

    [rav@ubix bin]$ ./nodetool -h 127.0.0.1 flush
Error connection to remote JMX agent!
java.rmi.ConnectException: Connection refused to host: 63.251.179.13; nested exception is: 
    java.net.ConnectException: Connection refused
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
    at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
    at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2343)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:296)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:267)
    at org.apache.cassandra.tools.NodeProbe.connect(NodeProbe.java:144)
    at org.apache.cassandra.tools.NodeProbe.<init>(NodeProbe.java:114)
    at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:621)
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
    at java.net.Socket.connect(Socket.java:546)
    at java.net.Socket.connect(Socket.java:495)
    at java.net.Socket.<init>(Socket.java:392)
    at java.net.Socket.<init>(Socket.java:206)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 10 more

谢谢,

2 个答案:

答案 0 :(得分:0)

按照说明尝试使用-h或--host和-p或--port的nodetool:

 -h,--host <arg>        node hostname or ip address
 -p,--port <arg>        remote jmx agent port number

当Cassandra离线时,检查正在使用的端口以查看另一个进程是否正在使用Cassandra绑定的默认端口。您可以在conf/cassandra-env.sh

中找到默认值

了解端口后,您可以看到是否有另一个进程与netstat -an

绑定

如果端口上没有运行任何内容,并启动cassandra,请验证它是否在正确的端口上运行并尝试再次使用-p或--port参数连接。可以在此处找到更多信息:http://wiki.apache.org/cassandra/GettingStarted

机器是unix还是windows?你在/etc/hosts中有一个错误的条目,表明127.0.0.1映射到另一个主机名或IP地址,即63.251.179.13

答案 1 :(得分:0)

我在我的机器上本地运行的Cassandra实例上运行nodetool时遇到了类似的问题。当试图运行nodetool -h 127.0.0.1 nodetool时,发出了一个与JMX相关的异常,看起来就是这样(那里有一个未知的 - 对我来说 - IP地址)。

Error connecting to remote JMX agent!
java.rmi.ConnectIOException: Exception creating connection to: ; nested exception is: 
    java.net.SocketException: Host is down

Douglas Muth posted a similar issue here, and from this,我发现Cassandra似乎在启动时记录了主机名。不幸的是,当我运行nodetool时,主机名已经过时(我的IP地址是动态分配的)。

我的解决方案是重启cassandra,它更新了IP并重新运行nodetool。没有更多的JMX错误,没有更奇怪的IP地址。这对我有用,因为我在localhost上运行Cassandra的本地实例,并不介意重启,但这不是一个非常令人满意的解决方案。