无法配置 JMX 来监听公共接口

问题描述 投票:0回答:1

我正在尝试远程使用 JMX nodetool。 我无法将 JMX 配置为在公共网络接口上侦听,而 Cassandra 却在公共接口上侦听。

注意不是Cassandra连接,而是JMX连接。 Cassandra 可在公共接口端口 9042 上使用。

    netstat -planet | grep 7199 
    gives 
    127.0.0.1:7199

nodetool -h
始终失败。

使用 ./cassendra-env.sh,我设置 LOCAL_JMX=no

    -Dcom.sun.management.jmxremote.host=<public_ip>
    -Djava.rmi.server.hostname=<public_ip>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.local.only=false

我尝试将参数也放入 jvm11-server.options 中,但没有成功。

JMX 保持绑定到 127.0.0.1。

我错过了什么吗?

(尝试远程使用JMX)

使用 Java 11 运行 Cassandra 4.1.4。

cassandra remote-access jmx
1个回答
0
投票

启用远程 JMX 访问的最低要求是将

LOCAL_JMX
设置为
yes
以外的任何值。

在我的测试环境中,我将以下行添加到

conf/cassandra-env.sh

LOCAL_JMX=no

为了简单起见,我没有启用身份验证或 SSL,仅保留配置:

if [ "$LOCAL_JMX" = "yes" ]; then
  JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT"
  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
else
  JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.remote.port=$JMX_PORT"
  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT"
  JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
fi

通过此最小配置,Cassandra 进程将侦听所有接口上的 JMX 连接。例如:

$ sudo lsof -nPi | grep 7199
java      4544           erick   78u  IPv4  73723      0t0  TCP *:7199 (LISTEN)
$ sudo netstat -tnlp | grep 7199
tcp        0      0 0.0.0.0:7199            0.0.0.0:*               LISTEN      4544/java

您很可能错误配置了环境中的某些内容。郑重声明,除了

cassandra-env.sh
之外,我没有修改任何其他配置文件。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.