配置 Kafka 仅在 127.0.0.1 上公开 JMX
Configure Kafka to expose JMX only on 127.0.0.1
我正在努力将 Kafka 的 JMX 配置为仅在 localhost
上公开。默认情况下,当我启动 Kafka 时,它会公开三个端口,而其中两个端口会自动绑定到 0.0.0.0
,这意味着每个人都可以访问它们。
我设法将代理本身绑定到 127.0.0.1
(因为我只在本地需要它),但是 JMX 端口真的让我很头疼。
我必须遵循定义的环境变量:
export JMX_PORT=${JMX_PORT:-9999}
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=127.0.0.1 -Djava.net.preferIPv4Stack=true"
如果我现在查看绑定 ports/ips,我会看到:
$ netstat -tulpn | grep 9864
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 9864/java
tcp 0 0 0.0.0.0:44895 0.0.0.0:* LISTEN 9864/java
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 9864/java
意思是 JMX 在 0.0.0.0
上侦听,甚至还有另一个开放端口 44895
,我不知道它的用途。
我想要实现的是 Kafka 端口只在 127.0.0.1
上打开。有人可以提示吗?提前致谢!
编辑:
我通过添加 -Dcom.sun.management.jmxremote.host=localhost
部分成功了,但是 0.0.0.0
上仍然有一个开放端口:
$ netstat -tulpn | grep 12789
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 12789/java
tcp 0 0 0.0.0.0:43513 0.0.0.0:* LISTEN 12789/java
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 12789/java
我刚刚设法让 Kafka 只监听定义的代理端口,并完全禁用 JMX:
export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost -Djava.net.preferIPv4Stack=true"
在 Ubuntu 上启动新的 Kafka 1.1.0 代理时,我最初看到两个打开的端口:
$ netstat -tulpn | grep 19894
tcp6 0 0 :::40487 :::* LISTEN 19894/java
tcp6 0 0 127.0.0.1:9092 :::* LISTEN 19894/java
在kafka-server-start.sh
文件中设置以上环境变量后,第二个端口不再打开:
$ netstat -tulpn | grep :9092
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 20345/java
$ netstat -tulpn | grep 20345
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 20345/java
只是
export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost"
够了
我正在努力将 Kafka 的 JMX 配置为仅在 localhost
上公开。默认情况下,当我启动 Kafka 时,它会公开三个端口,而其中两个端口会自动绑定到 0.0.0.0
,这意味着每个人都可以访问它们。
我设法将代理本身绑定到 127.0.0.1
(因为我只在本地需要它),但是 JMX 端口真的让我很头疼。
我必须遵循定义的环境变量:
export JMX_PORT=${JMX_PORT:-9999}
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=127.0.0.1 -Djava.net.preferIPv4Stack=true"
如果我现在查看绑定 ports/ips,我会看到:
$ netstat -tulpn | grep 9864
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 9864/java
tcp 0 0 0.0.0.0:44895 0.0.0.0:* LISTEN 9864/java
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 9864/java
意思是 JMX 在 0.0.0.0
上侦听,甚至还有另一个开放端口 44895
,我不知道它的用途。
我想要实现的是 Kafka 端口只在 127.0.0.1
上打开。有人可以提示吗?提前致谢!
编辑:
我通过添加 -Dcom.sun.management.jmxremote.host=localhost
部分成功了,但是 0.0.0.0
上仍然有一个开放端口:
$ netstat -tulpn | grep 12789
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 12789/java
tcp 0 0 0.0.0.0:43513 0.0.0.0:* LISTEN 12789/java
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 12789/java
我刚刚设法让 Kafka 只监听定义的代理端口,并完全禁用 JMX:
export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost -Djava.net.preferIPv4Stack=true"
在 Ubuntu 上启动新的 Kafka 1.1.0 代理时,我最初看到两个打开的端口:
$ netstat -tulpn | grep 19894
tcp6 0 0 :::40487 :::* LISTEN 19894/java
tcp6 0 0 127.0.0.1:9092 :::* LISTEN 19894/java
在kafka-server-start.sh
文件中设置以上环境变量后,第二个端口不再打开:
$ netstat -tulpn | grep :9092
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 20345/java
$ netstat -tulpn | grep 20345
tcp 0 0 127.0.0.1:9092 0.0.0.0:* LISTEN 20345/java
只是
export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost"
够了