2013-03-08 57 views
4

我試圖使用nodetool來檢查我的集羣的狀態,但它無法連接。Cassandra節點工具連接超時

我的cassandra.yaml配置了listen_address和rpc_address作爲服務器IP(例如10.10.10.266)。

我能夠通過cqlsh和cassandra-cli使用相同的IP連接,但是當我連接到nodetool時它不起作用。

/bin$ nodetool -h 10.10.10.266 ring 
Failed to connect to '10.10.10.266:7199': Connection has timed out 

我不認爲我在服務器上啓用了防火牆(Ubuntu)。我直接在服務器上運行這個問題,所以我不會認爲這將是一個防火牆問題。

+0

Cassandra肯定正在運行(我可以使用上述主機連接到cqlsh)。運行'nodetool ring'仍然超時 - 「無法連接到'127.0.0.1:7199':連接超時」。我也用localhost和0.0.0.0試了一下 – beterthanlife 2013-03-11 11:22:35

回答

3

nodetool通過JMX接口連接。默認情況下,它正在偵聽端口7199(其他工具默認情況下使用偵聽端口9160的RPC接口)。檢查cassandra-env.sh文件中的JMX設置。很可能JMX服務器正在監聽錯誤的接口(或可能是回送接口)。

默認JMX配置部分(卡桑德拉版本1.1.5)中包含鏈接到故障排除指南:

# jmx: metrics and administration interface 
# 
# 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.) 
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT" 
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false" 
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false" 
JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS" 

這也實在值得使用ifconfig列出所有的網絡接口,並嘗試在所有接口telnet'ing端口7199。

0

我正面臨着同樣的超時問題。然而,我發現由於令牌問題,我的集羣沒有正常啓動,並且我收到了「主動端點之間的主機ID衝突」。一旦我刪除數據目錄並重新啓動羣集,然後nodetool開始工作正常。

1

我也看到了這個相同的問題,但事實證明,在我的主機文件中有一些讓JMX無法綁定到接口的問題。

具體而言,主機文件具有外部IP地址和主機名的條目。我們的服務器有兩個接口,一個是外部接口,一個是內部網絡接口。刪除該主機條目的伎倆。

6

你可能需要取消以下參數cassandra-env.sh:

-Djava.rmi.server.hostname=<public name> 

更換你想要的JMX接口偵聽的接口的地址。

0

正如有人提到,它連接到JMX端口。

您可以找到JMX端口:

  • /etc/cassandra/cassandra-env.sh。這不適用於基於ccm的本地羣集,或者通過查看節點上運行的Cassandra節點進程的命令行來運行。

我的情況是使用ccm在本地創建的集羣,所以我的所有節點都運行在具有不同JMX端口的同一主機上。

[email protected]:~$ ps -eaf | grep cassandra | grepi -o " [^ ]*jmx.local.port[^ ]* " 
-Dcassandra.jmx.local.port=7100 
-Dcassandra.jmx.local.port=7300 
-Dcassandra.jmx.local.port=7200 
[email protected]:~$ 

這是因爲我有3個節點在本地主機上運行。

[email protected]:~$ nodetool -p 7100 ring 

Datacenter: datacenter1 
========== 
Address Rack  Status State Load   Owns    Token 
                      3074457345618258602 
127.0.0.1 rack1  Up  Normal 64.65 MB  33.33%    -9223372036854775808 
127.0.0.2 rack1  Up  Normal 65.26 MB  33.33%    -3074457345618258603 
127.0.0.3 rack1  Up  Normal 65.92 MB  33.33%    3074457345618258602 

[email protected]:~$ 
相關問題