代码之家  ›  专栏  ›  技术社区  ›  Tobi

将Kafka配置为仅在127.0.0.1上公开JMX

  •  7
  • Tobi  · 技术社区  · 6 年前

    我正在努力将卡夫卡的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 我不知道它的目的。

    我想实现的是,卡夫卡港口只在 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 回复  |  直到 6 年前
        1
  •  4
  •   Tobi    6 年前

    我只是设法使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
    
        2
  •  0
  •   Jared Forth Lakshmanan Ganesan    4 年前

    只是

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

    够了