Cassandra nodetool连接超时

时间:2013-03-08 16:57:34

标签: cassandra thrift

我尝试使用nodetool来检查群集的状态,但无法连接。

我的cassandra.yaml配置了listen_address并且rpc_address设置为服务器IP(例如10.10.10.266)。

我可以使用相同的IP通过cqlsh和cassandra-cli进行连接,但是当我连接到nodetool时它无法正常工作。

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

我不认为我在服务器上启用了防火墙(Ubuntu)。我直接在有问题的服务器上运行它,所以我不认为这将是一个防火墙问题。

5 个答案:

答案 0 :(得分:6)

您可能需要在cassandra-env.sh中取消注释以下参数:

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

替换为您希望jmx接口侦听的接口的地址。

答案 1 :(得分:3)

nodetool通过JMX接口连接。默认情况下,它正在侦听端口7199(其他工具默认使用RPC接口侦听端口9160)。检查cassandra-env.sh文件中的JMX设置。很可能JMX服务器正在侦听错误的接口(或者可能是环回接口)。

默认JMX配置部分(cassandra ver.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.

答案 2 :(得分:1)

我也看到了同样的问题,但事实证明我的hosts文件中存在一些阻止JMX绑定到接口的奇怪现象。

具体来说,主机文件有一个带有主机名的外部IP地址条目。我们的服务器有两个接口,一个是外部接口,一个是内部网络接口。删除该主机条目就可以了。

答案 3 :(得分:0)

我遇到了同样的超时问题。但是我发现我的集群由于令牌问题而没有正常启动,我得到“主动端点之间的主机ID冲突”。一旦我删除数据目录并重新启动群集,然后nodetool开始正常工作。

答案 4 :(得分:0)

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

您可以找到JMX端口:

  • /etc/cassandra/cassandra-env.sh。这不适用于基于ccm的本地群集或
  • (我的收藏),查看节点上运行的Cassandra节点进程的命令行。

我的案例是使用ccm在本地创建的集群,因此我的所有节点都在具有不同JMX端口的同一主机上运行。

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

这是因为我在localhost上运行了3个节点。

vagrant@triforce:~$ 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

vagrant@triforce:~$