配置Kafka仅在127.0.0.1上公开JMX

Tob*_*obi 6 jmx local loopback apache-kafka

我正在努力配置Kafka的JMX只能被曝光localhost.默认情况下,当我启动Kafka时,它会暴露三个端口,而其中两个端口会自动绑定0.0.0.0,这意味着每个人都可以访问它们.

我设法将代理本身绑定到127.0.0.1(因为我只在本地需要它),但JMX端口真的让我很头疼.

我必须遵循定义的env vars:

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"
Run Code Online (Sandbox Code Playgroud)

如果我现在查看绑定端口/ 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
Run Code Online (Sandbox Code Playgroud)

这意味着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
Run Code Online (Sandbox Code Playgroud)

Tob*_*obi 4

我刚刚设法让 Kafka 只监听定义的代理端口,并完全禁用 JMX:

export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost -Djava.net.preferIPv4Stack=true"
Run Code Online (Sandbox Code Playgroud)

当在 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
Run Code Online (Sandbox Code Playgroud)

在文件中设置上述环境变量后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
Run Code Online (Sandbox Code Playgroud)