这篇笔记记录了我一次完整的 Kafka 正式生产环境部署过程,最终方案采用:
- Kafka 4.2.0
- KRaft 模式
- 3 台 Controller + 3 台 Broker
- 独立管理机
- SSL 双向认证
- ACL 权限控制
- 独立管理机负责证书签发、集群管理、备份
整套环境最终已经完成以下验证:
- KRaft Quorum 正常选主
- 3 台 Broker 正常注册
- Topic 正常创建
- 副本同步正常
- Producer / Consumer 消息链路正常
- 管理机可以正常执行 Topic、ACL、Quorum 管理命令
一、为什么选择这套架构
这次部署没有再使用 ZooKeeper,而是直接使用 Kafka 新一代的 KRaft 模式。相比旧方案,KRaft 直接由 Kafka 自身管理元数据,不再依赖外部 ZooKeeper,架构更清晰,后续维护也更简单。
生产环境下,我没有使用 broker,controller 混合部署,而是直接拆成:
- 3 台 Controller:专门负责元数据仲裁
- 3 台 Broker:专门负责消息读写与副本同步
- 1 台独立管理机:专门负责证书、命令行管理、备份与迁移
这样做的好处很明确:
- 控制面和数据面分离,结构更清晰。
- Controller 宕机不会直接影响 Broker 承载消息流量。
- Broker 扩容时不需要一起动 Controller。
- 管理机独立后,证书和 CA 私钥不必散落在 Kafka 节点上,更安全。
二、最终使用的机器规划
管理机
kafka-admin:192.168.8.120
Controller 节点
controller-1:192.168.8.101controller-2:192.168.8.102controller-3:192.168.8.103
Broker 节点
broker-1:192.168.8.111broker-2:192.168.8.112broker-3:192.168.8.113
端口规划
9093:Controller Quorum 通信9092:Broker 内部复制通信9094:业务访问端口
角色说明
- 管理机:只负责证书、备份、管理命令,不参与 Kafka Quorum
- Controller:负责 KRaft 元数据仲裁
- Broker:负责消息读写、存储、副本复制
三、服务器配置建议
管理机
- 2 核 4G
- 40G~60G SSD
管理机不参与 Kafka Quorum,也不承载 Broker 流量,所以 2C4G 完全够用。它只负责这些事:
- 生成 CA
- 签发节点证书
- 保存 admin 证书
- 执行 Kafka 管理命令
- 打包备份和迁移资料
Controller
- 4 核 8G
- 100G SSD
Controller 主要承担 KRaft 元数据仲裁,不负责业务流量。
Broker
- 8 核 32G
- 100G 系统盘 + 2T 数据盘
Broker 是 Kafka 的核心承载节点,真正决定吞吐能力的还是磁盘和内存,所以 Broker 不要配得太抠。
四、目录规划
管理机
/opt/kafka
/root/kafka-ca
/etc/kafka/ssl
/root/admin.properties
/root/kafka-backup
Controller
/opt/kafka
/opt/kafka/config
/data/kafka/meta
/etc/kafka/ssl
/var/log/kafka
Broker
/opt/kafka
/opt/kafka/config
/data/kafka/data
/etc/kafka/ssl
/var/log/kafka
五、为什么一定要单独做管理机
这次实践下来,我非常建议单独做管理机。
因为 Kafka 节点真正需要长期保存的敏感信息有:
- 根 CA 私钥
- 根 CA 证书
- admin 管理证书
- truststore
- admin.properties
如果直接把这些东西长期放在 Broker 上,不但安全性差,后续迁移也麻烦。
独立管理机的最大价值在于:
- 证书中心独立。
- 后续新增 Broker 或业务系统时,可以统一签发客户端证书。
- 管理机损坏不会影响 Kafka 集群继续提供服务。
- 后续迁移管理机时,只需要迁移证书、配置和 Kafka CLI 工具包。
六、部署顺序
严格按以下顺序执行:
- 安装管理机
- 安装 6 台 Kafka 节点基础环境
- 管理机生成 CA、节点证书、admin 证书
- 分发证书到 6 台 Kafka 节点
- 安装 Kafka 到 6 台节点
- 写入 6 台节点配置文件
- 生成 Cluster ID 和 Controller UUID
- 格式化 3 台 Controller
- 格式化 3 台 Broker
- 修正目录权限
- 启动 Controller
- 启动 Broker
- 管理机验证 Quorum
- 创建 Topic、测试生产消费
- 配置 ACL
- 备份管理机证书和配置
七、管理机安装
主机名
hostnamectl set-hostname kafka-admin
hosts
cat >> /etc/hosts <<'EOF'
192.168.8.101 controller-1
192.168.8.102 controller-2
192.168.8.103 controller-3
192.168.8.111 broker-1
192.168.8.112 broker-2
192.168.8.113 broker-3
192.168.8.120 kafka-admin
EOF
软件安装
apt update
apt install -y openssl rsync wget curl vim tar unzip net-tools dnsutils
JDK安装
apt update && \
apt install -y wget apt-transport-https gpg ca-certificates && \
mkdir -p /usr/share/keyrings && \
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor -o /usr/share/keyrings/adoptium.gpg && \
CODENAME="$(awk -F= '/^VERSION_CODENAME/{print $2}' /etc/os-release)" && \
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb ${CODENAME} main" > /etc/apt/sources.list.d/adoptium.list && \
apt update && \
apt install -y temurin-21-jdk && \
java -version && javac -version
安装 Kafka 工具包
mkdir -p /opt
cd /opt
wget https://downloads.apache.org/kafka/4.2.0/kafka_2.13-4.2.0.tgz
tar -xzf kafka_2.13-4.2.0.tgz
mv kafka_2.13-4.2.0 kafka
目录初始化
mkdir -p /root/kafka-ca
mkdir -p /etc/kafka/ssl
mkdir -p /root/kafka-backup
chmod 700 /root/kafka-ca
chmod 700 /etc/kafka/ssl
环境变量
cat > /etc/profile.d/kafka.sh <<'EOF'
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin
EOF
chmod +x /etc/profile.d/kafka.sh
source /etc/profile.d/kafka.sh
八. Kafka 节点基础环境
安装基础软件
apt update
apt install -y openjdk-21-jdk wget curl vim tar
创建 kafka 用户与目录
useradd -r -m -s /bin/bash kafka || true
mkdir -p /opt/kafka
mkdir -p /opt/kafka/config
mkdir -p /etc/kafka/ssl
mkdir -p /var/log/kafka
chown -R kafka:kafka /opt/kafka /etc/kafka /var/log/kafka
chmod 755 /etc/kafka
chmod 700 /etc/kafka/ssl
Controller 额外目录
mkdir -p /data/kafka/meta
chown -R kafka:kafka /data/kafka
Broker 额外目录
mkdir -p /data/kafka/data
chown -R kafka:kafka /data/kafka
九、证书体系
管理机生成 CA
cd /root/kafka-ca
openssl req -new -x509 -keyout ca-key.pem -out ca-cert.pem -days 3650 -nodes \
-subj "/CN=Kafka-Internal-CA"
生成节点证书脚本
cd /root/kafka-ca
gen_cert() {
local NAME="$1"
local IP="$2"
openssl req -newkey rsa:4096 -nodes \
-keyout "${NAME}.key" \
-out "${NAME}.csr" \
-subj "/CN=${NAME}"
cat > "${NAME}.ext" <<EOF
subjectAltName = DNS:${NAME},IP:${IP}
extendedKeyUsage = serverAuth,clientAuth
EOF
openssl x509 -req -in "${NAME}.csr" \
-CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial \
-out "${NAME}.crt" -days 3650 -extfile "${NAME}.ext"
openssl pkcs12 -export \
-in "${NAME}.crt" \
-inkey "${NAME}.key" \
-name "${NAME}" \
-out "${NAME}.keystore.p12" \
-passout pass:changeit
}
gen_cert controller-1 192.168.8.101
gen_cert controller-2 192.168.8.102
gen_cert controller-3 192.168.8.103
gen_cert broker-1 192.168.8.111
gen_cert broker-2 192.168.8.112
gen_cert broker-3 192.168.8.113
生成 admin 证书
cd /root/kafka-ca
openssl req -newkey rsa:4096 -nodes \
-keyout admin.key \
-out admin.csr \
-subj "/CN=admin"
cat > admin.ext <<'EOF'
subjectAltName = DNS:admin
extendedKeyUsage = serverAuth,clientAuth
EOF
openssl x509 -req -in admin.csr \
-CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial \
-out admin.crt -days 3650 -extfile admin.ext
openssl pkcs12 -export \
-in admin.crt \
-inkey admin.key \
-name admin \
-out admin.keystore.p12 \
-passout pass:changeit
生成 truststore
cd /root/kafka-ca
keytool -importcert \
-keystore kafka.truststore.p12 \
-storetype PKCS12 \
-alias kafka-ca \
-file ca-cert.pem \
-storepass changeit \
-noprompt
十、证书分发
Controller
scp /root/kafka-ca/controller-1.keystore.p12 root@192.168.8.101:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.101:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.101:/etc/kafka/ssl/
scp /root/kafka-ca/controller-2.keystore.p12 root@192.168.8.102:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.102:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.102:/etc/kafka/ssl/
scp /root/kafka-ca/controller-3.keystore.p12 root@192.168.8.103:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.103:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.103:/etc/kafka/ssl/
Broker
scp /root/kafka-ca/broker-1.keystore.p12 root@192.168.8.111:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.111:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.111:/etc/kafka/ssl/
scp /root/kafka-ca/admin.keystore.p12 root@192.168.8.111:/etc/kafka/ssl/
scp /root/kafka-ca/broker-2.keystore.p12 root@192.168.8.112:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.112:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.112:/etc/kafka/ssl/
scp /root/kafka-ca/admin.keystore.p12 root@192.168.8.112:/etc/kafka/ssl/
scp /root/kafka-ca/broker-3.keystore.p12 root@192.168.8.113:/etc/kafka/ssl/
scp /root/kafka-ca/kafka.truststore.p12 root@192.168.8.113:/etc/kafka/ssl/
scp /root/kafka-ca/ca-cert.pem root@192.168.8.113:/etc/kafka/ssl/
scp /root/kafka-ca/admin.keystore.p12 root@192.168.8.113:/etc/kafka/ssl/
节点统一修权限
chown -R kafka:kafka /etc/kafka/ssl
chmod 600 /etc/kafka/ssl/*
十一、Kafka 安装
六台 Kafka 节点都执行:
cd /usr/local/src
wget https://downloads.apache.org/kafka/4.2.0/kafka_2.13-4.2.0.tgz
tar -xzf kafka_2.13-4.2.0.tgz
cp -a kafka_2.13-4.2.0/* /opt/kafka/
chown -R kafka:kafka /opt/kafka
十二、节点配置文件
以下 6 份配置文件为当前环境最终生效版本。
Controller 统一说明
- 文件路径:
/opt/kafka/config/controller.properties - 仅
node.id、listeners、ssl.keystore.location不同
Broker 统一说明
- 文件路径:
/opt/kafka/config/server.properties - 仅
node.id、listeners、advertised.listeners、ssl.keystore.location不同
实际内容请直接采用当前已验证版本,不建议临时变更参数。
十三、systemd 服务
Controller
[Unit]
Description=Apache Kafka Controller (KRaft)
After=network.target
[Service]
Type=simple
User=kafka
Group=kafka
Environment=KAFKA_HEAP_OPTS=-Xms1g -Xmx1g
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/controller.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=always
RestartSec=5
LimitNOFILE=100000
StandardOutput=append:/var/log/kafka/controller.log
StandardError=append:/var/log/kafka/controller-error.log
[Install]
WantedBy=multi-user.target
Broker
[Unit]
Description=Apache Kafka Broker (KRaft)
After=network.target
[Service]
Type=simple
User=kafka
Group=kafka
Environment=KAFKA_HEAP_OPTS=-Xms8g -Xmx8g
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=always
RestartSec=5
LimitNOFILE=200000
StandardOutput=append:/var/log/kafka/broker.log
StandardError=append:/var/log/kafka/broker-error.log
[Install]
WantedBy=multi-user.target
十四、初始化与格式化
管理机生成 ID
cd /opt/kafka
CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
C1_UUID=$(bin/kafka-storage.sh random-uuid)
C2_UUID=$(bin/kafka-storage.sh random-uuid)
C3_UUID=$(bin/kafka-storage.sh random-uuid)
echo "CLUSTER_ID=$CLUSTER_ID"
echo "C1_UUID=$C1_UUID"
echo "C2_UUID=$C2_UUID"
echo "C3_UUID=$C3_UUID"
Controller 格式化
su -s /bin/bash -c '/opt/kafka/bin/kafka-storage.sh format --cluster-id 你的CLUSTER_ID --initial-controllers "1@192.168.8.101:9093:你的C1_UUID,2@192.168.8.102:9093:你的C2_UUID,3@192.168.8.103:9093:你的C3_UUID" --config /opt/kafka/config/controller.properties' kafka
Broker 格式化
su -s /bin/bash -c '/opt/kafka/bin/kafka-storage.sh format --cluster-id 你的CLUSTER_ID --config /opt/kafka/config/server.properties --no-initial-controllers' kafka
十五、权限修正(非常关键)
如果曾经用 root 执行过 format,就必须修权限,否则会出现:
java.nio.file.AccessDeniedException: /data/kafka/meta/__cluster_metadata-0/leader-epoch-checkpoint
Controller
chown -R kafka:kafka /data/kafka/meta /opt/kafka /etc/kafka /var/log/kafka
chmod -R u+rwX /data/kafka/meta
chmod 600 /etc/kafka/ssl/*
Broker
chown -R kafka:kafka /data/kafka/data /opt/kafka /etc/kafka /var/log/kafka
chmod -R u+rwX /data/kafka/data
chmod 600 /etc/kafka/ssl/*
十六、启动顺序
Controller
systemctl daemon-reload
systemctl enable kafka-controller
systemctl start kafka-controller
systemctl status kafka-controller --no-pager
Broker
systemctl daemon-reload
systemctl enable kafka-broker
systemctl start kafka-broker
systemctl status kafka-broker --no-pager
十七、管理机配置文件
/root/admin.properties
security.protocol=SSL
ssl.truststore.location=/etc/kafka/ssl/kafka.truststore.p12
ssl.truststore.password=changeit
ssl.truststore.type=PKCS12
ssl.keystore.location=/etc/kafka/ssl/admin.keystore.p12
ssl.keystore.password=changeit
ssl.key.password=changeit
ssl.keystore.type=PKCS12
十八、集群验证
查看 KRaft Quorum
/opt/kafka/bin/kafka-metadata-quorum.sh \
--bootstrap-controller 192.168.8.101:9093 \
--command-config /root/admin.properties \
describe --status
查看 Topic 列表
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--list
创建测试 Topic
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--create \
--topic app.order.created \
--partitions 6 \
--replication-factor 3 \
--config min.insync.replicas=2
查看 Topic 详情
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--describe \
--topic app.order.created
生产测试
/opt/kafka/bin/kafka-console-producer.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--topic app.order.created \
--producer-property acks=all
消费测试
/opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--topic app.order.created \
--from-beginning
十九、ACL 与业务接入
原则
- 不让业务系统使用
CN=admin - 每个业务系统单独签发客户端证书
- 按 Topic / Group 最小授权
示例
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--add \
--allow-principal "User:CN=order-producer" \
--operation WRITE \
--operation DESCRIBE \
--topic app.order.created
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--add \
--allow-principal "User:CN=order-consumer" \
--operation READ \
--operation DESCRIBE \
--topic app.order.created
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--add \
--allow-principal "User:CN=order-consumer" \
--operation READ \
--group order-service-group
二十、管理机备份与迁移
备份
mkdir -p /root/kafka-backup
tar -czf /root/kafka-backup/kafka-admin-backup-$(date +%F).tar.gz \
/root/kafka-ca \
/root/admin.properties \
/etc/kafka/ssl
摘要
sha256sum /root/kafka-backup/kafka-admin-backup-$(date +%F).tar.gz > /root/kafka-backup/kafka-admin-backup-$(date +%F).sha256
新管理机恢复
tar -xzf kafka-admin-backup-2026-04-23.tar.gz -C /
二十一、常见问题
Controller 无法启动
查看:
systemctl status kafka-controller --no-pager -l
tail -n 100 /opt/kafka/logs/server.log
tail -n 100 /var/log/kafka/controller-error.log
报权限错误
检查:
ls -lah /data/kafka/meta
ls -lah /data/kafka/meta/__cluster_metadata-0
管理机连不上 Controller
测试:
timeout 3 bash -c '</dev/tcp/192.168.38.101/9093' && echo OK || echo FAIL
Topic 列表为空
通常代表 Broker 已连接正常,只是当前还没有 Topic。
二十二、日常运维命令
查看 Quorum
/opt/kafka/bin/kafka-metadata-quorum.sh \
--bootstrap-controller 192.168.8.101:9093 \
--command-config /root/admin.properties \
describe --status
查看 Topic
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--list
查看 ACL
/opt/kafka/bin/kafka-acls.sh \
--bootstrap-server 192.168.8.111:9094 \
--command-config /root/admin.properties \
--list
查看 Controller 日志
tail -f /var/log/kafka/controller.log
查看 Broker 日志
tail -f /var/log/kafka/broker.log
二十三、SSL 与 ACL 的实际做法
这套环境没有使用明文通信,而是直接上了:
- SSL 双向认证
- ACL 精细化授权
Broker 配置中启用了:
ssl.client.auth=required
这意味着:
- 所有客户端必须携带合法证书
- 仅有 truststore 不够,还必须有自己的 keystore
- 后续每个业务系统都应该有自己的独立证书
例如:
CN=order-producerCN=order-consumer
然后再通过 ACL 限制它们只能访问对应 Topic 和消费组。
这种方式非常适合正式生产环境,因为:
- 哪个系统写消息、读消息,一眼能分清
- 某个证书泄漏时可以单独吊销或替换
- 不需要让业务系统直接使用 admin 权限
二十四、部署过程中踩到的一个核心坑
这次最重要的一个排障点,是 KRaft 元数据目录权限问题。
当时 Controller 一直起不来,最后前台启动后发现报错:
java.nio.file.AccessDeniedException: /data/kafka/meta/__cluster_metadata-0/leader-epoch-checkpoint
原因是:
kafka-storage.sh format是用root执行的- Kafka 服务是以
kafka用户运行的 /data/kafka/meta下的关键文件被root创建- 最终 Kafka 进程没有写权限,启动直接失败
修复方法很简单:
Controller
chown -R kafka:kafka /data/kafka/meta /opt/kafka /etc/kafka /var/log/kafka
chmod -R u+rwX /data/kafka/meta
chmod 600 /etc/kafka/ssl/*
Broker
chown -R kafka:kafka /data/kafka/data /opt/kafka /etc/kafka /var/log/kafka
chmod -R u+rwX /data/kafka/data
chmod 600 /etc/kafka/ssl/*
这一步非常关键,也是这次整套部署里最值得记录的经验。
建议所有节点在 format 之后都主动修正一次 ownership。
二十五、集群启动顺序
正确顺序一定是:
- 管理机安装完成
- 6 台 Kafka 节点安装基础环境
- 管理机生成证书并分发
- 安装 Kafka 到 6 台节点
- 写入 Controller / Broker 配置文件
- 生成 Cluster ID 和 Controller UUID
- 格式化 3 台 Controller
- 格式化 3 台 Broker
- 修正目录权限
- 先启动 3 台 Controller
- 再启动 3 台 Broker
- 管理机验证 Quorum
- 创建 Topic、测试生产消费
如果顺序乱了,后面排障会非常痛苦。
二十六、最终验证结果
这次部署最终已经验证通过:
Quorum 状态正常
管理机执行:
/opt/kafka/bin/kafka-metadata-quorum.sh \
--bootstrap-controller 192.168.8.101:9093 \
--command-config /root/admin.properties \
describe --status
结果正常返回了:
- ClusterId
- LeaderId
- LeaderEpoch
- CurrentVoters
- CurrentObservers
说明 3 台 Controller 和 3 台 Broker 都已经接入 KRaft 元数据体系。
Topic 创建成功
测试 Topic:
app.order.created
成功创建,副本数为 3,分区数为 6。
Producer / Consumer 测试成功
手工发送了一条:
hello kafka
消费者成功收到,说明:
- Broker 正常
- Topic 正常
- SSL 正常
- 副本同步正常
- 生产消费链路正常
二十七、正式上线后的建议
1. 不要再用 admin 证书接业务
admin 证书只留给运维管理,业务系统单独发证书。
2. 给每个系统单独做 ACL
例如:
order-producer只能写app.order.createdorder-consumer只能读app.order.createdorder-consumer只能使用order-service-group
3. Broker 数据盘与系统盘分离
Kafka 数据不要和系统日志、公用服务混在一个盘。
4. 及时备份管理机
至少要备份这些:
/root/kafka-ca/root/admin.properties/etc/kafka/ssl
打包命令:
mkdir -p /root/kafka-backup
tar -czf /root/kafka-backup/kafka-admin-backup-$(date +%F).tar.gz \
/root/kafka-ca \
/root/admin.properties \
/etc/kafka/ssl
5. 管理机定期离线备份
特别是:
ca-key.pemadmin.keystore.p12kafka.truststore.p12
这几样丢了会很麻烦。
二十八、总结
这次 Kafka 正式生产部署,最终采用的是一套比较稳妥的方案:
- Kafka 4.2.0
- KRaft 模式
- 3 Controller + 3 Broker
- 独立管理机
- SSL 双向认证
- ACL 精细化控制
实际落地后证明,这套架构:
- 结构清晰
- 易于扩展
- 安全性更高
- 更适合后续长期维护
如果你也准备正式上生产,我很建议直接从一开始就:
- 拆分 Controller 和 Broker
- 上独立管理机
- 上 SSL
- 上 ACL
- 做好备份
- 统一命名规范
这样后面会省下非常多的维护成本。
二十九、附:我这次最想提醒自己的三句话
1.KRaft 元数据目录权限一定要先修。
2.Controller 要先起来,Broker 才能稳定注册。
3.业务系统不要偷懒直接用 admin 证书。








暂无评论内容