我正在努力将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"
如果现在查看绑定的端口/IP,我会看到:
$ 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
2条答案
按热度按时间jdgnovmf1#
我刚刚设法使kafka只侦听定义的代理端口,并完全禁用jmx:
在ubuntu上启动新的kafka 1.1.0代理时,我最初看到两个开放端口:
在
kafka-server-start.sh
文件,第二个端口不再打开:zbwhf8kr2#
只是
够了吗