4

我试图使用 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)上启用了防火墙。我直接在有问题的服务器上运行它,所以无论如何我都不会认为这会是防火墙问题。

4

5 回答 5

7

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

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

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

于 2013-09-09T19:15:14.127 回答
3

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

默认 JMX 配置部分(cassandra 版本 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并尝试在所有接口上远程登录端口 7199。

于 2013-03-09T18:42:34.140 回答
1

我面临同样的超时问题。但是,我发现由于令牌问题,我的集群没有正确启动,并且出现“活动端点之间的主机 ID 冲突”。一旦我删除数据目录并重新启动集群,nodetool 就开始正常工作。

于 2013-05-02T17:04:46.323 回答
1

我也看到了同样的问题,但结果是我的主机文件中有一些奇怪的东西阻止了 JMX 绑定到接口。

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

于 2013-09-02T14:38:08.527 回答
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:~$
于 2017-01-06T19:41:32.523 回答