我想让 cassandra 在外部 ip 上 litsen 到 jmx,而不是默认使用的 0.0.0.0。我已经在 cassandra-env 中添加了标志,但它仍然在 0.0.0.0 接口上启动
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.host=172.16.40.60"
我还应该做什么?
我想让 cassandra 在外部 ip 上 litsen 到 jmx,而不是默认使用的 0.0.0.0。我已经在 cassandra-env 中添加了标志,但它仍然在 0.0.0.0 接口上启动
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.host=172.16.40.60"
我还应该做什么?
添加这个:
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=172.16.40.60"
此行来自cassandra-env.sh
in apache/cassandra
,请参见此处:cassandra-env.sh#L204
目前,您无法在 cassandra 中配置 jmx 以仅侦听单个接口。这是因为通常在 Java 应用程序中很难做到这一点。如果您出于安全原因尝试这样做,那么解决方案通常是阻止除 localhost 之外的所有接口的 jmx 端口,然后使用隧道从本地节点访问 jmx。
有关将此功能添加到 cassandra 的讨论,请参见:
https://issues.apache.org/jira/browse/CASSANDRA-2967
和一个潜在的解决方法:
https://blogs.oracle.com/jmxetc/entry/jmx_connecting_through_firewalls_using