报错信息:
[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
......
↓↓↓↓↓↓
最近刚申请了个微信公众号,上面也会分享一些运维知识,大家点点发财手关注一波,感谢大家。 【原创公众号】:非著名运维 【福利】:公众号回复 “资料” 送运维自学资料大礼包哦!