zookeeper关闭默认管理端口admin.serverPort=8080
zookeeper关闭默认管理端口admin.serverPort=8080
问题
使用netstat -tunlp命令发现,除了zookeeper占用的2181端口以外还有一个随机端口和8080端口启用了。
原因
1、zookeeper启动后默认会开一个端口用来支持jmx调用,所以导致开启了非预期的随机端口。
2、zookeeper 中有个内嵌的管理控制台是通过jetty启动,会占用8080 端口。
方法1
(在使用zookeeper 3.6之后的版本,开启服务器,zk会自动占用8080端口,而后端服务器大部分都需要使用8080端口,因此需要zk的配置文件即可。)
在zk conf目录里面,修改zoo.cfg,在其中加上:
# admin.serverPort 默认占8080端口
admin.serverPort=自己定一个端口
重启zk服务器,即可。
方法2
如果不用admin端口,在启动脚本加上"-Dzookeeper.admin.enableServer=false"
重启即可
Linux脚本
【修改前】的启动脚本apache-zookeeper-3.8.4-bin/bin/zkServer.sh
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.admin.enableServer=false" \
-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &【修改后】的启动脚本apache-zookeeper-3.8.4-bin/bin/zkServer.sh
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.admin.enableServer=false" \
"-Dzookeeper.admin.enableServer=false" \
-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &Windows脚本
【修改前】的启动脚本apache-zookeeper-3.8.4-bin/bin/zkServer.cmd
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*【修改后】的启动脚本apache-zookeeper-3.8.4-bin/bin/zkServer.cmd
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-Dzookeeper.admin.enableServer=false" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*