2011-04-13 55 views
3

我有一個cassandra集羣在4個節點(每個運行ubuntu 10.04和cassandra 0.7.4)。 所有節點都使用SWITCH連接,並且每個節點都分配了一個STATIC IP ADDRESS(不涉及DNS)。Cassandra - nodetool不能在另一臺機器上工作?

該節點似乎正常工作(狀態是'正常',所有節點都在等)。

問題是這樣的:nodetool的作品,但它只適用於nodetool命令運行在同一個節點上。當我嘗試在運行STATIC_IP從STATIC_IP = 192.168.0.253nodetool = 192.168.0.4我得到以下錯誤:

(注:機 's3789' 有192.168.0.253的靜態IP)

[email protected]:/opt/cassandra/apache-cassandra-0.7.4$ bin/nodetool -host 192.168.0.4 ring

Error connection to remote JMX agent! java.rmi.ConnectException: Connection refused to host: 127.0.1.1; 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:137) at org.apache.cassandra.tools.NodeProbe.<init>(NodeProbe.java:107) at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:511) 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)

任何提示如何解決此問題?

+0

*猜測之前啓動rmiregistry的:*把你送到指定的IP地址和端口到'hosts'允許文件? – 2011-04-13 17:54:37

+1

沒有'hosts'拒絕文件,我爲什麼要使用'allow'? – user3262424 2011-04-13 19:10:27

+0

一些做...但如果你有'主機'文件,爲什麼不包括你的IP地址? – 2011-04-13 19:35:59

回答

15

從CONF/cassandra-env.sh:

# add this if you're having trouble connecting: 
# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>" 
# 
# see 
# https://blogs.oracle.com/jmxetc/entry/troubleshooting_connection_problems_in_jconsole 
# for more on configuring JMX through firewalls, etc. (Short version: 
# get it working with no firewall first.) 
+0

謝謝。我希望有一個好的和容易理解的文檔 - 我花了數小時試圖弄清楚這一點。 – user3262424 2011-04-13 21:05:34

+0

我和原來的海報有同樣的問題。此修復程序有所幫​​助,但我還需要打開內部LAN防火牆上的端口,以便cassandra節點可以進行通信。所以確保cassandra所需的所有端口都是打開的。 – 2012-04-24 15:29:46

+0

@jbellis:是的工作......但我沒有得到,如何在MAC操作系統沒有添加 JVM_OPTS =「$ JVM_OPTS -Djava.rmi.server.hostname = 在最後..? 可能是它與JVM相關嗎?你能否正確解釋它? – 2013-06-13 11:55:56

相關問題