Kafka 系列 —(5)Kafka 高可用集群部署手册(带命令与 Systemd 脚本)

目录

一、通用前置准备(适用于两条路径)

1.系统与用户

2.安装 Java(OpenJDK 11+ 推荐)

3.网络与系统调优(示例)

4.下载 Kafka 二进制并解压(示例)

二、路线 A:Zookeeper + Kafka(3 节点 ZK + 3+ Broker HA 示例)

2.1 Zookeeper 集群安装与配置(每台 ZK 都做)

2.2 Kafka Broker 配置(每个 broker)

2.3 Kafka Systemd 单元(/etc/systemd/system/kafka.service)

2.4 创建 Topic(示例)

2.5 常用集群检查

三、路线 B:KRaft 模式(推荐:Kafka 3.3+,无需 Zookeeper)

3.1 目录与配置差异

3.2 初始化 storage(每个节点只执行一次)

3.3 启动(systemd)

四、运维脚本片段(自动化部署片段)

4.1 快速安装脚本

五、高可用与灾备建议(最佳实践)

六、安全与生产化建议(简要)

七、故障排查要点

八、参考与延伸阅读


一、通用前置准备(适用于两条路径)

在每台机器上以 root 或 sudo 用户执行以下步骤。

1.系统与用户

# 创建 kafka 用户与目录
sudo useradd -r -s /sbin/nologin kafka || true
sudo mkdir -p /opt/kafka /data/kafka-logs /var/log/kafka
sudo chown -R kafka:kafka /opt/kafka /data/kafka-logs /var/log/kafka

2.安装 Java(OpenJDK 11+ 推荐)

sudo apt update
sudo apt install -y openjdk-11-jdk
java -version

3.网络与系统调优(示例)

# 打开必要端口(示例)
sudo ufw allow 9092/tcp
sudo ufw allow 2181/tcp   # ZK
# ulimits
sudo bash -c 'cat >> /etc/security/limits.conf' <<'EOF'
kafka soft nofile 100000
kafka hard nofile 100000
EOF
# sysctl
sudo bash -c 'cat >> /etc/sysctl.conf' <<'EOF'
vm.swappiness=1
fs.file-max=2097152
EOF
sudo sysctl -p

4.下载 Kafka 二进制并解压(示例)

cd /opt
sudo -u kafka wget https://dlcdn.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
sudo -u kafka tar -zxvf kafka_2.13-3.6.0.tgz
sudo -u kafka ln -s kafka_2.13-3.6.0 kafka

说明:替换版本号为你要使用的稳定版本,KRaft 建议使用 Kafka 3.3+ / 3.6+。(Confluent 文档)


二、路线 A:Zookeeper + Kafka(3 节点 ZK + 3+ Broker HA 示例)

2.1 Zookeeper 集群安装与配置(每台 ZK 都做)

  • 编辑 config/zookeeper.properties(示例 /opt/kafka/config/zookeeper.properties):

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=zk1.example.com:2888:3888
server.2=zk2.example.com:2888:3888
server.3=zk3.example.com:2888:3888

在每台 ZK 节点 /var/lib/zookeeper/myid 写入 1/2/3 对应节点 id。

  • Systemd 服务文件(/etc/systemd/system/zookeeper.service):

[Unit]
Description=ZooKeeper
After=network.target

[Service]
Type=simple
User=kafka
Group=kafka
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-failure
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

启动并检查:

sudo systemctl daemon-reload
sudo systemctl enable --now zookeeper
sudo systemctl status zookeeper
/opt/kafka/bin/zookeeper-shell.sh zk1.example.com:2181 ls /

说明:生产中 ZK 最少 3 台(奇数),并且不建议与 Kafka Broker 在同一台机器上混合部署。(Confluent 文档)


2.2 Kafka Broker 配置(每个 broker)

编辑 /opt/kafka/config/server.properties 的关键项(例 broker.id=0 对应 kafka1):

broker.id=0                         # 每节点唯一
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka1.example.com:9092
log.dirs=/data/kafka-logs
num.network.threads=8
num.io.threads=16
num.partitions=3
default.replication.factor=3
zookeeper.connect=zk1.example.com:2181,zk2.example.com:21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

34号树洞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值