无zookeeper Kafka 4.1.0 Raft 集群搭建
Kafka 4.1.0 彻底遗弃zookeeper, 亲测,避坑,三节点集群搭建。
系统:buntu 24.04.3 LTS
JDK:jdk-17.0.12
一、下载软件
下载 Kafka 4.1.0 二进制包,解压到目标目录
wget https://archive.apache.org/dist/kafka/4.1.0/kafka_2.13-4.1.0.tgz
tar -xzf kafka_2.13-4.1.0.tgz -C /apps
二、Raft集群规划
实现高可用,集群若允许N个controller失败,则需要2N+1个controller组成集群。下面搭建一个3节点的Kafka集群,3个controller,3个broker。Controller的ID从1000起编,配置端口号为9093 。Broker的ID从2000起编,配置端口号为9092。
角色IDIP端口
Controller1000192.168.2.249093
Controller1001192.168.2.259093
Controller1002192.168.2.269093
Broker2000192.168.2.249092
Broker2001192.168.2.259092
Broker2002192.168.2.269092
三、配置环境变量
3.1、JDK下载
(略)
3.2、配置变量
vim /etc/profile
export JAVA_HOME=/apps/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
使配置生效
source /etc/profile
四、集群配置
以下为192.168.2.24节点的controller和broker的部分配置。其他节点按规划修改node.id,listeners,advertised.listeners的内容,参看如下配置
4.1 修改controller配置
路径:conf/controller.properties
process.roles=controller
node.id=1000
listeners=CONTROLLER://192.168.2.24:9093
advertised.listeners=CONTROLLER://192.168.2.24:9093
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-controller-logs
查看修改后的配置
root@ops-test-024:/apps/kafka_2.13-4.1.0/config# grep -v '^#' controller.properties
process.roles=controller
node.id=1000
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
listeners=CONTROLLER://192.168.2.24:9093
advertised.listeners=CONTROLLER://192.168.2.24:9093
controller.listener.names=CONTROLLER
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-controller-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
share.coordinator.state.topic.replication.factor=1
share.coordinator.state.topic.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
root@ops-test-024:/apps/kafka_2.13-4.1.0/config#
4.2 修改broker配置
路径:conf/broker.properties
process.roles=broker
node.id=2000
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
listeners=PLAINTEXT://192.168.2.24:9092
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.2.24:9092
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-broker-logs
查看修改后的配置
root@ops-test-024:/apps/kafka_2.13-4.1.0/config# grep -v '^#' broker.properties
process.roles=broker
node.id=2000
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
listeners=PLAINTEXT://192.168.2.24:9092
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.2.24:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-broker-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
share.coordinator.state.topic.replication.factor=1
share.coordinator.state.topic.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
root@ops-test-024:/apps/kafka_2.13-4.1.0/config#
4.3 、第二个节点的配置
Controller 配置 (conf/controller.properties)
process.roles=controller
node.id=1001
listeners=CONTROLLER://192.168.2.25:9093
advertised.listeners=CONTROLLER://192.168.2.25:9093
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-controller-logs
Broker 配置 (conf/broker.properties)
process.roles=broker
node.id=2001
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
listeners=PLAINTEXT://192.168.2.25:9092
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.2.25:9092
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-broker-logs
4.4 、第三个节点的配置
Controller 配置 (conf/controller.properties)
process.roles=controller
node.id=1002
listeners=CONTROLLER://192.168.2.26:9093
advertised.listeners=CONTROLLER://192.168.2.26:9093
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-controller-logs
Broker 配置 (conf/broker.properties)
process.roles=broker
node.id=2002
controller.quorum.bootstrap.servers=192.168.2.24:9093,192.168.2.25:9093,192.168.2.26:9093
listeners=PLAINTEXT://192.168.2.26:9092
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.2.26:9092
controller.listener.names=CONTROLLER
log.dirs=/apps/kafka_2.13-4.1.0/data/kraft-broker-logs
五、部署操作
Kafka kraft集群建议从1个controller搭建起,搭完后再通过add-controller的方式将controller扩展为3节点。步骤如下:
5.1、生成集群cluster-id
bin/kafka-storage.sh random-uuid
0VMe9kUwROS-0fcQn-0yzg
5.2、Standalone controller部署
在节点192.168.2.24上,使用cluster-id格式化controller目录。
bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --standalone --config config/controller.properties
执行结果:
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --standalone --config config/controller.properties
Formatting dynamic metadata voter directory /apps/kafka_2.13-4.1.0/data/kraft-controller-logs with metadata.version 4.1-IV1.
root@ops-test-024:/apps/kafka_2.13-4.1.0#
格式化成功,会在controller的log.dir中生成集群元数据。
root@ops-test-024:/apps/kafka_2.13-4.1.0# ls -l data/kraft-controller-logs
total 12
drwxr-xr-x 2 root root 4096 Nov 3 15:43 __cluster_metadata-0
-rw-r--r-- 1 root root 355 Nov 3 15:43 bootstrap.checkpoint
-rw-r--r-- 1 root root 125 Nov 3 15:43 meta.properties
root@ops-test-024:/apps/kafka_2.13-4.1.0#
启动contoller
bin/kafka-server-start.sh -daemon config/controller.properties
查看controller日志确认节点运行正常
root@ops-test-024:/apps/kafka_2.13-4.1.0# tail -f logs/controller.log
[2025-11-03 16:16:49,135] INFO [QuorumController id=1000] Replayed a FeatureLevelRecord setting metadata.version to 4.1-IV1 (org.apache.kafka.controller.FeatureControlManager)
[2025-11-03 16:16:49,136] INFO [QuorumController id=1000] Replayed a FeatureLevelRecord setting feature eligible.leader.replicas.version to 1 (org.apache.kafka.controller.FeatureControlManager)
[2025-11-03 16:16:49,136] INFO [QuorumController id=1000] Replayed a FeatureLevelRecord setting feature group.version to 1 (org.apache.kafka.controller.FeatureControlManager)
[2025-11-03 16:16:49,137] INFO [QuorumController id=1000] Replayed a FeatureLevelRecord setting feature transaction.version to 2 (org.apache.kafka.controller.FeatureControlManager)
[2025-11-03 16:16:49,137] INFO [QuorumController id=1000] Replayed ConfigRecord for ConfigResource(type=BROKER, name='') which set configuration min.insync.replicas to 1 (org.apache.kafka.controller.ConfigurationControlManager)
[2025-11-03 16:16:49,137] INFO [QuorumController id=1000] Replayed EndTransactionRecord() at offset 9. (org.apache.kafka.controller.OffsetControlManager)
[2025-11-03 16:16:49,212] INFO [QuorumController id=1000] Becoming the active controller at epoch 2, next write offset 3825. (org.apache.kafka.controller.QuorumController)
[2025-11-03 16:16:49,219] WARN [QuorumController id=1000] Performing controller activation. (org.apache.kafka.controller.QuorumController)
[2025-11-03 16:16:49,224] INFO [QuorumController id=1000] Activated periodic tasks: electPreferred, electUnclean, expireDelegationTokens, generatePeriodicPerformanceMessage, maybeFenceStaleBroker, writeNoOpRecord (org.apache.kafka.controller.PeriodicTaskControlManager)
[2025-11-03 16:16:49,413] INFO [QuorumController id=1000] Replayed RegisterControllerRecord containing ControllerRegistration(id=1000, incarnationId=Nbj6HR7ASSysBoXkTX7y3w, zkMigrationReady=false, listeners=[Endpoint(listenerName='CONTROLLER', securityProtocol=PLAINTEXT, host='192.168.2.24', port=9093)], supportedFeatures={eligible.leader.replicas.version: 0-1, group.version: 0-1, kraft.version: 0-1, metadata.version: 7-27, share.version: 0-1, transaction.version: 0-2}). (org.apache.kafka.controller.ClusterControlManager)
[2025-11-03 16:17:13,889] INFO [QuorumController id=1000] No previous registration found for broker 2000. New incarnation ID is 5usoWUoIQDq8w68c0Bp3GA. Generated 0 record(s) to clean up previous incarnations. New broker epoch is 3875. (org.apache.kafka.controller.ClusterControlManager)
[2025-11-03 16:17:13,906] INFO [QuorumController id=1000] Replayed initial RegisterBrokerRecord for broker 2000: RegisterBrokerRecord(brokerId=2000, isMigratingZkBroker=false, incarnationId=5usoWUoIQDq8w68c0Bp3GA, brokerEpoch=3875, endPoints=[BrokerEndpoint(name='PLAINTEXT', host='192.168.2.24', port=9092, securityProtocol=0)], features=[BrokerFeature(name='group.version', minSupportedVersion=0, maxSupportedVersion=1), BrokerFeature(name='kraft.version', minSupportedVersion=0, maxSupportedVersion=1), BrokerFeature(name='metadata.version', minSupportedVersion=7, maxSupportedVersion=27), BrokerFeature(name='share.version', minSupportedVersion=0, maxSupportedVersion=1), BrokerFeature(name='transaction.version', minSupportedVersion=0, maxSupportedVersion=2), BrokerFeature(name='eligible.leader.replicas.version', minSupportedVersion=0, maxSupportedVersion=1)], rack=null, fenced=true, inControlledShutdown=false, logDirs=[wLuTIWTiCkk9DBgKqj1wGQ]) (org.apache.kafka.controller.ClusterControlManager)
5.2、Kafka broker集群部署
在节点192.168.2.24上,使用cluster-id格式化broker目录。
bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --config config/broker.properties
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --config config/broker.properties
Formatting metadata directory /apps/kafka_2.13-4.1.0/data/kraft-broker-logs with metadata.version 4.1-IV1.
root@ops-test-024:/apps/kafka_2.13-4.1.0#
格式化成功后在对应目录中生成元数据文件
root@ops-test-024:/apps/kafka_2.13-4.1.0# ls -l data/kraft-broker-logs
total 8
-rw-r--r-- 1 root root 355 Nov 3 15:48 bootstrap.checkpoint
-rw-r--r-- 1 root root 125 Nov 3 15:48 meta.properties
root@ops-test-024:/apps/kafka_2.13-4.1.0#
启动broker 2000
bin/kafka-server-start.sh -daemon config/broker.properties
root@ops-test-024:/apps/kafka_2.13-4.1.0# tail logs/server.log
[2025-11-03 16:17:14,385] INFO Awaiting socket connections on 192.168.2.24:9092. (kafka.network.DataPlaneAcceptor)
[2025-11-03 16:17:14,405] INFO [BrokerServer id=2000] Waiting for all of the authorizer futures to be completed (kafka.server.BrokerServer)
[2025-11-03 16:17:14,405] INFO [BrokerServer id=2000] Finished waiting for all of the authorizer futures to be completed (kafka.server.BrokerServer)
[2025-11-03 16:17:14,405] INFO [BrokerServer id=2000] Waiting for all of the SocketServer Acceptors to be started (kafka.server.BrokerServer)
[2025-11-03 16:17:14,405] INFO [BrokerServer id=2000] Finished waiting for all of the SocketServer Acceptors to be started (kafka.server.BrokerServer)
[2025-11-03 16:17:14,406] INFO [BrokerServer id=2000] Transition from STARTING to STARTED (kafka.server.BrokerServer)
[2025-11-03 16:17:14,407] INFO Kafka version: 4.1.0 (org.apache.kafka.common.utils.AppInfoParser)
[2025-11-03 16:17:14,407] INFO Kafka commitId: 13f70256db3c994c (org.apache.kafka.common.utils.AppInfoParser)
[2025-11-03 16:17:14,407] INFO Kafka startTimeMs: 1762157834406 (org.apache.kafka.common.utils.AppInfoParser)
[2025-11-03 16:17:14,408] INFO [KafkaRaftServer nodeId=2000] Kafka Server started (kafka.server.KafkaRaftServer)
root@ops-test-024:/apps/kafka_2.13-4.1.0#
如上broker启动正常后,在其他两个节点以同样的步骤启动broker 2001,2002.
第二节点:
格式化broker metadata
bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --config config/broker.properties
启动broker 2001
bin/kafka-server-start.sh -daemon config/broker.properties
第三节点:
格式化broker metadata
bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --config config/broker.properties
启动broker 2002
bin/kafka-server-start.sh -daemon config/broker.properties
5.3、查看集群状态
bin/kafka-cluster.sh list-endpoints --bootstrap-server 192.168.2.24:9092
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-cluster.sh list-endpoints --bootstrap-server 192.168.2.24:9092
ID HOST PORT RACK STATE ENDPOINT_TYPE
2000 192.168.2.24 9092 null unfenced broker
2001 192.168.2.25 9092 null unfenced broker
2002 192.168.2.26 9092 null unfenced broker
root@ops-test-024:/apps/kafka_2.13-4.1.0#
5.4 Controller集群扩展
目前为止,搭建了1个controller + 3个broker的kafka集群,现在需要将kafka controller扩展为3个。
5.4.1 扩展节点(节点上执行)
需要扩展的节点上,执行以下命令格式化controller。注意增加了 --no-initial-controllers。
bin/kafka-storage.sh format --cluster-id MCg3e_6pSYumFqhbyt6mKA --config config/controller.properties --no-initial-controllers
格式化成功后启动controller。
bin/kafka-server-start.sh -daemon config/controller.properties
5。4.2、查看状态:
启动成功后查看新controller开始与主controller同步元数据,通过以下命令查看同步状态。当lag为0时表示同步到最新,此时controller的状态为Observer。
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-metadata-quorum.sh --bootstrap-controller 192.168.2.24:9093 describe --replication
NodeId DirectoryId LogEndOffset Lag LastFetchTimestamp LastCaughtUpTimestamp Status
1000 WQdEjHlJSMiyrdItFp5zLQ 8439 0 1762160113112 1762160113112 Leader
2001 LSWHR4qpGQdD0qaDRmPGjQ 8439 0 1762160112814 1762160112814 Observer
1002 rjimKsPznfm-I-O9sWschw 0 8439 1762159816017 -1 Observer
2000 wLuTIWTiCkk9DBgKqj1wGQ 8439 0 1762160112814 1762160112814 Observer
2002 qu2706Ym7QbnH-PUGAyYTg 8439 0 1762160112819 1762160112819 Observer
1001 QwOwk7fyIninpdmLCQouPA 8439 0 1762160112815 1762160112815 Observer
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-metadata-quorum.sh --bootstrap-controller 192.168.2.24:9093 describe --replication
NodeId DirectoryId LogEndOffset Lag LastFetchTimestamp LastCaughtUpTimestamp Status
1000 WQdEjHlJSMiyrdItFp5zLQ 8510 0 1762160148617 1762160148617 Leader
2001 LSWHR4qpGQdD0qaDRmPGjQ 8510 0 1762160148324 1762160148324 Observer
2000 wLuTIWTiCkk9DBgKqj1wGQ 8510 0 1762160148324 1762160148324 Observer
2002 qu2706Ym7QbnH-PUGAyYTg 8510 0 1762160148326 1762160148326 Observer
1001 QwOwk7fyIninpdmLCQouPA 8510 0 1762160148325 1762160148325 Observer
root@ops-test-024:/apps/kafka_2.13-4.1.0#
5.4.3、节点conttroller加入到controller集群中
新controller同步元数据后,将其正式加入到controller集群中。
分别在在新加的controller节点上执行
bin/kafka-metadata-quorum.sh --command-config config/controller.properties --bootstrap-controller 192.168.2.24:9093 add-controller
root@ops-test-025:/apps/kafka_2.13-4.1.0# bin/kafka-metadata-quorum.sh --command-config config/controller.properties --bootstrap-controller 192.168.2.24:9093 add-controller
Added controller 1001 with directory id QwOwk7fyIninpdmLCQouPA and endpoints: CONTROLLER://192.168.2.25:9093
root@ops-test-025:/apps/kafka_2.13-4.1.0#
5.4.4、查看controller的状态
bin/kafka-metadata-quorum.sh --bootstrap-controller 192.168.2.24:9093 describe --replication
加入成功后,controller会变成follower。
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-metadata-quorum.sh --bootstrap-controller 192.168.2.24:9093 describe --replication
NodeId DirectoryId LogEndOffset Lag LastFetchTimestamp LastCaughtUpTimestamp Status
1000 WQdEjHlJSMiyrdItFp5zLQ 12572 0 1762162177937 1762162177937 Leader
1001 QwOwk7fyIninpdmLCQouPA 12572 0 1762162177787 1762162177787 Follower
1002 rjimKsPznfm-I-O9sWschw 12572 0 1762162177789 1762162177789 Follower
2001 LSWHR4qpGQdD0qaDRmPGjQ 12572 0 1762162177787 1762162177787 Observer
2000 wLuTIWTiCkk9DBgKqj1wGQ 12572 0 1762162177787 1762162177787 Observer
2002 qu2706Ym7QbnH-PUGAyYTg 12572 0 1762162177788 1762162177788 Observer
root@ops-test-024:/apps/kafka_2.13-4.1.0#
至此Kafka kraft集群搭建完毕。
六、验证使用
6.1 创建topic
bin/kafka-topics.sh --bootstrap-server 192.168.2.24:9092 --create --topic nierdayede --partitions 3 --replication-factor 1
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-topics.sh --bootstrap-server 192.168.2.24:9092 --create --topic nierdayede --partitions 3 --replication-factor 1
Created topic nierdayede.
root@ops-test-024:/apps/kafka_2.13-4.1.0#
6.2 生产消息
bin/kafka-console-producer.sh --bootstrap-server 192.168.2.24:9092 --topic nierdayede
6.3 消费消息
bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.24:9092 --topic nierdayede --from-beginning
结果展示:
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-topics.sh --bootstrap-server 192.168.2.24:9092 --create --topic nierdayede --partitions 3 --replication-factor 1
Created topic nierdayede.
root@ops-test-024:/apps/kafka_2.13-4.1.0# bin/kafka-console-producer.sh --bootstrap-server 192.168.2.24:9092 --topic nierdayede
>haha
>^Croot@ops-test-024:/apps/kafka_2.13-4.1.bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.24:9092 --topic nierdayede --from-beginninging
haha
七,页面查看
开源工具:Kafdrop
docker run -d -p 9000:9000 \
-e KAFKA_BROKERCONNECT=192.168.2.24:9092,192.168.2.25:9092,192.168.2.26:9092 \
obsidiandynamics/kafdrop
访问查看
http://192.168.2.252:9000/

八,问题排查
生成集群cluster-id
bin/kafka-storage.sh random-uuid
0VMe9kUwROS-0fcQn-0yzg
----这里遇到一个问题–
jdk版本用的是17.0.2
root@ops-test-024:/apps/kafka_2.13-4.1.0/bin# ./kafka-storage.sh random-uuid
java.lang.NullPointerException: Cannot invoke "jdk.internal.platform.CgroupInfo.getMountPoint()" because "anyController" is null
at java.base/jdk.internal.platform.cgroupv2.CgroupV2Subsystem.getInstance(CgroupV2Subsystem.java:81)
at java.base/jdk.internal.platform.CgroupSubsystemFactory.create(CgroupSubsystemFactory.java:113)
at java.base/jdk.internal.platform.CgroupMetrics.getInstance(CgroupMetrics.java:167)
at java.base/jdk.internal.platform.SystemMetrics.instance(SystemMetrics.java:29)
at java.base/jdk.internal.platform.Metrics.systemMetrics(Metrics.java:58)
at java.base/jdk.internal.platform.Container.metrics(Container.java:43)
at jdk.management/com.sun.management.internal.OperatingSystemImpl.<init>(OperatingSystemImpl.java:182)
at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl.getOperatingSystemMXBean(PlatformMBeanProviderImpl.java:280)
at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl$3.nameToMBeanMap(PlatformMBeanProviderImpl.java:199)
at java.management/java.lang.management.ManagementFactory.lambda$getPlatformMBeanServer$0(ManagementFactory.java:488)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at java.management/java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:489)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer(ConnectorBootstrap.java:543)
at jdk.management.agent/jdk.internal.agent.Agent.startLocalManagementAgent(Agent.java:318)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:450)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
Exception thrown by the agent : java.lang.NullPointerException: Cannot invoke "jdk.internal.platform.CgroupInfo.getMountPoint()" because "anyController" is null
root@ops-test-024:/apps/kafka_2.13-4.1.0/bin# java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
解析:
OpenJDK 官方 Bug:
Bug ID: JDK-8287073: “NPE from CgroupV2Subsystem.getInstance()”。
bugs.openjdk.org
描述:在 Linux 上,当 cgroup v2 的 “anyController” 为空时,JDK 在 CgroupV2Subsystem.getInstance() 会抛 NPE。
bugs.openjdk.org
影响版本:JDK 11.0.16, 17.0.3, 18.0.2, 19 等。
bugs.openjdk.org
修复版本:列出为 “Fixed” in build b25 等。
bugs.openjdk.org
意义:说明该异常是 JDK 本身在处理容器/cgroup 情况下的缺陷,而非 Kafka 专属
替换为17.0.12版本 执行成功
root@ops-test-024:/apps/kafka_2.13-4.1.0/bin# java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
root@ops-test-024:/apps/kafka_2.13-4.1.0/bin# ./kafka-storage.sh random-uuid
MCg3e_6pSYumFqhbyt6mKA
root@ops-test-024:/apps/kafka_2.13-4.1.0/bin#
原文地址:https://blog.csdn.net/tongzidane/article/details/154355697
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!
