Kafka 集群的安装部署思路和实际操作,分 裸机/虚拟机部署 和 Kubernetes 部署 两种方式,你可以根据自己的环境选择。
Kafka 集群至少需要 3 个 Broker 才能保证高可用(HA),一般还需要 ZooKeeper(除非用 Kafka 3.3+ 的 KRaft 模式)。
方案 | 特点 | 适用场景 |
裸机/虚拟机部署 | 直接安装到 Linux 服务器 | 测试、小规模生产 |
Docker Compose 部署 | 一键启动,方便测试 | 开发测试 |
Kubernetes + Helm 部署 | 自动化运维、弹性伸缩 | 大规模生产、云原生 |
wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz -C /opt/
cd /opt/kafka_2.13-3.7.0
编辑
/opt/kafka_2.13-3.7.0/config/zookeeper.properties:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
每台机器 /var/lib/zookeeper/myid 写入对应的 ID(1、2、3)。
启动 ZooKeeper:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
每台机器编辑 config/server.properties:
broker.id=1 # 每台机器唯一
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.1.101:9092
log.dirs=/var/lib/kafka-logs
zookeeper.connect=192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181
启动 Kafka:
bin/kafka-server-start.sh -daemon config/server.properties
适合你目前的环境。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
根据自身要求的 HostPath 存储 + NodePort 暴露 + 国内镜像 写一个示例:
zookeeper:
enabled: true
replicaCount: 3
persistence:
enabled: true
storageClass: ""
existingClaim: ""
size: 5Gi
hostPath: /data/zookeeper
image:
registry: docker.m.daocloud.io
repository: bitnami/zookeeper
tag: 3.9.1
kafka:
replicaCount: 3
listeners:
client:
protocol: PLAINTEXT
port: 9092
nodePort: 30092
interBroker:
protocol: PLAINTEXT
externalAccess:
enabled: true
service:
type: NodePort
nodePorts:
- 30092
- 30093
- 30094
persistence:
enabled: true
storageClass: ""
hostPath: /data/kafka
size: 10Gi
image:
registry: docker.m.daocloud.io
repository: bitnami/kafka
tag: 3.7.0
helm install kafka-cluster bitnami/kafka -f values.yaml
kubectl get pods -l app.kubernetes.io/name=kafka
kubectl get svc kafka-cluster
如果你用 Kafka 3.3+,可以直接用 KRaft 模式:

步骤 | 关键命令/配置 | 注意事项 |
1. 准备阶段 | kubectl label nodes <node-name> disk=ssd | 确保节点有SSD标签 |
2. 配置存储 | storageClassName: local-ssd + nodeAffinity | PV需绑定到具体节点路径 |
3. 部署ZooKeeper | helm install zk bitnami/zookeeper --set replicaCount=3 | 必须奇数节点,检查myid文件 |
4. 部署Kafka | helm install kafka bitnami/kafka --set persistence.storageClass=local-ssd | 配置externalAccess暴露外部访问 |
5. 验证监控 | kubectl port-forward svc/kafka-exporter 9308 | 检查 |
6. 生产调优 | config: { num.io.threads: 8, log.retention.bytes: 10GB } | 根据负载调整JVM堆内存 |