【问题标题】:Configure Kafka to expose JMX only on 127.0.0.1将 Kafka 配置为仅在 127.0.0.1 上公开 JMX
【发布时间】:2018-09-05 11:19:14
【问题描述】:

我正在努力将 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

【问题讨论】:

标签: apache-kafka local jmx loopback


【解决方案1】:

只是

export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost"

够了

【讨论】:

    【解决方案2】:

    我只是设法让 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
    

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 2020-01-21
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多