这种情况发生在主机和docker镜像上,除了著名的9092端口之外,kafka还监听另一个动态端口。
我正在使用 /usr/local/kafka/bin/kafka-server-start.sh 来运行 kafka。
ps -ef |grep kafka |grep -v grep |awk '{print $2}'
15580
netstat -tnpl |grep 15580
tcp6 0 0 :::37023 ::: LISTEN 15580/java*
tcp6 0 0 192.168.64.18:9092 :::* LISTEN 15580/java
上面的“37023”端口是什么?如何禁用它?它可以绑定到“localhost”吗?
实际的Kafka进程默认只监听9092端口。
您可以运行
lsof -i :37023
或您获得的任何其他动态端口吗?这将获得正在该 TCP 端口上侦听的进程的 PID,并且可能会指出罪魁祸首。
它是 Kafka JMX 端口。您可以通过修改
kafka_2.13-3.6.0/bin/kafka-server-start.sh
并在最后一行之前添加此新行来解决它 exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"
:
export JMX_PORT=${JMX_PORT:-9000}
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 -Dcom.sun.management.jmxremote.host=127.0.0.1 -Djava.rmi.server.hostname=127.0.0.1 -Djava.net.preferIPv4Stack=true"