2012-03-04 39 views
0

我已經有Cassandra 0.7在獨立模式下運行,我試着運行nodetool,但是我收到了JMX異常。訪問遠程服務器時不需要JMX配置嗎?我正在訪問我的本地機器。Cassandra節點工具在獨立模式下

爲什麼nodetool尋找63.251.179.13?

[[email protected] 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 

感謝,

回答

0

嘗試或--host nodetool與-h和-p或--port按指令:

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

當Cassandra是離線,檢查端口用來查看另一個進程是否使用Cassandra綁定的默認端口。您可以在conf/cassandra-env.sh

一旦你知道的端口,你可以看到,如果如果沒有在端口上運行的另一個進程勢必將它與netstat -an

默認,和您啓動卡桑德拉,驗證它在正確的端口上運行並嘗試再次使用-p或--port參數進行連接。更多信息可以在這裏找到:http://wiki.apache.org/cassandra/GettingStarted

機器unix或windows? /etc/hosts表示127.0.0.1映射到另一個主機名或IP地址,即63.251.179.13

+0

我第二次/ etc/hosts的建議。我發現Cassandra對於正確設置了/ etc/hosts很挑剔,所以請確保你的localhost解析爲127.0.0.1 – Andrew 2012-03-29 08:49:27

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,我發現卡桑德拉似乎被記錄在啓動時的主機名。不幸的是,當我運行nodetool的時候,主機名已經過時(我的IP地址被動態分配)。

我的解決方案然後是重新啓動cassandra,它更新了IP並重新運行nodetool。沒有更多的JMX錯誤,沒有更奇怪的IP地址。這對我來說很好,因爲我在本地主機上運行Cassandra的本地實例,不介意重啓,但它不是一個非常令人滿意的解決方案。