报错信息:

[root@es-master21 mnt]# docker exec -it kafka bash
bash-5.1# kafka-topics.sh --create --zookeeper 192.168.1.21:2181,192.168.1.22:2181,192.168.1.23:2181 --replication-factor 3 --partitions 3 --topic test
Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9966; nested exception is:
        java.net.BindException: Address in use (Bind failed)
sun.management.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 9966; nested exception is:
        java.net.BindException: Address in use (Bind failed)
        at sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:480)
        at sun.management.Agent.startAgent(Agent.java:262)
        at sun.management.Agent.startAgent(Agent.java:452)
Caused by: java.rmi.server.ExportException: Port already in use: 9966; nested exception is:
        java.net.BindException: Address in use (Bind failed)

解决方法:

 Kafka的脚本文件kafka-run-class.sh在容器中/opt/kafka_2.13-2.6.0/bin/路径下,由于我搭建Kafka集群时已经将容器内该脚本文件路径与宿主机目录映射,所以直接修改宿主机目录下脚本文件即可。

[root@es-master21 mnt]# vim /mnt/kafka/kafka-run-class.sh
 ......
 40   file=$1
 41   if [ -z "$(echo "$file" | egrep "$regex")" ] ; then
 42     return 0
 43   else
 44     return 1
 45   fi
 46 }
 ------加入以下4行配置------
 - 47 ISKAFKASERVER="false"
 - 48 if [[ "$*" =~ "kafka.Kafka" ]]; then
 - 49     ISKAFKASERVER="true"
 - 50 fi
 ------------以上-----------
 51 base_dir=$(dirname $0)/..
 52
 53 if [ -z "$SCALA_VERSION" ]; then
 54   SCALA_VERSION=2.13.2
 55   if [[ -f "$base_dir/gradle.properties" ]]; then
 56     SCALA_VERSION=`grep "^scalaVersion=" "$base_dir/gradle.properties" | cut -d= -f 2`
 57   fi
 58 fi
 ......
 187 # JMX settings
 188 if [ -z "$KAFKA_JMX_OPTS" ]; then
 189   KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -    Dcom.sun.management.jmxremote.ssl=false "
 190 fi
 191
 192 # JMX port to use
 - 193 #if [  $JMX_PORT ]; then       #注释掉这一行
 - 194 if [  $JMX_PORT ] && [ -z "$ISKAFKASERVER" ]; then     #添加这一行新的配置进去
 195   KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
 196 fi
 197
 198 # Log directory to use
 199 if [ "x$LOG_DIR" = "x" ]; then
 200   LOG_DIR="$base_dir/logs"
 201 fi
 ......

↓↓↓↓↓↓

最近刚申请了个微信公众号,上面也会分享一些运维知识,大家点点发财手关注一波,感谢大家。 【原创公众号】:非著名运维 【福利】:公众号回复 “资料” 送运维自学资料大礼包哦!
Kafka创建topic报错:Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already_kafka