Kafka 集群的安装部署思路和实际操作

  • 时间:2025-11-17 22:27 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要: Kafka 集群的安装部署思路和实际操作,分 裸机/虚拟机部署 和 Kubernetes 部署 两种方式,你可以根据自己的环境选择。一、部署方案概览Kafka 集群至少需要 3 个 Broker 才能保证高可用(HA),一般还需要 ZooKeeper(除非用 Kafka 3.3+ 的 KRaft 模式)。方案特点适用场景裸机/虚拟机部署直接安装到 Linux 服务器测试、小规模生产Docker

Kafka 集群的安装部署思路和实际操作,分 裸机/虚拟机部署Kubernetes 部署 两种方式,你可以根据自己的环境选择。


一、部署方案概览

Kafka 集群至少需要 3 个 Broker 才能保证高可用(HA),一般还需要 ZooKeeper(除非用 Kafka 3.3+ 的 KRaft 模式)。

方案

特点

适用场景

裸机/虚拟机部署

直接安装到 Linux 服务器

测试、小规模生产

Docker Compose 部署

一键启动,方便测试

开发测试

Kubernetes + Helm 部署

自动化运维、弹性伸缩

大规模生产、云原生


二、裸机/虚拟机部署 Kafka 集群(Linux 环境)

1. 环境准备

  • 服务器数量:提议至少 3 台(可虚拟机)
  • Java 环境:JDK 8+(Kafka 3.x 支持 JDK 17)
  • 下载 Kafka
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

2. ZooKeeper 配置

编辑
/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

3. Kafka Broker 配置

每台机器编辑 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

三、Kubernetes + Helm 部署 Kafka 集群

适合你目前的环境。

1. 添加 Bitnami Helm 仓库

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

2. 自定义 values.yaml(示例)

根据自身要求的 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

3. 安装 Kafka

helm install kafka-cluster bitnami/kafka -f values.yaml

4. 验证

kubectl get pods -l app.kubernetes.io/name=kafka
kubectl get svc kafka-cluster

四、Kafka 3.x KRaft 模式(无 ZooKeeper)

如果你用 Kafka 3.3+,可以直接用 KRaft 模式:

  • 节省 ZooKeeper 运维成本
  • 配置 process.roles=broker,controller

五、推荐的生产部署注意事项

  • 分区数量:提议每个 Topic 3 个副本
  • Broker 内存:至少 4G Heap
  • 磁盘:SSD,Kafka I/O 密集
  • 监控:Prometheus + Grafana
  • 自动重平衡:Cruise Control

Kafka 集群的安装部署思路和实际操作

图解说明

步骤

关键命令/配置

注意事项

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

检查
kafka_server_replicamanager
指标

6. 生产调优

config: { num.io.threads: 8, log.retention.bytes: 10GB }

根据负载调整JVM堆内存



  • 全部评论(0)
手机二维码手机访问领取大礼包
返回顶部