debian

如何在Debian上稳定部署Kafka

小樊
48
2025-04-15 08:32:06
栏目: 智能运维

在Debian上稳定部署Kafka可以通过手动安装或Docker部署两种方式实现。以下是详细的步骤:

手动安装Kafka

  1. 安装Java: Kafka需要Java运行环境,推荐使用OpenJDK 11或更高版本。

    sudo apt update
    sudo apt install openjdk-11-jdk -y
    java -version
    
  2. 下载并解压Kafka: 从Apache Kafka官网下载最新版本的Kafka,并解压到指定目录。

    wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
    tar -xzf kafka_2.13-3.6.1.tgz
    mv kafka_2.13-3.6.1 /opt/kafka
    
  3. 配置Kafka: 编辑每个节点的config/kraft/server.properties文件,配置以下参数:

    • process.roles=broker,controller
    • listeners=PLAINTEXT://:9092,CONTROLLER://:9093
    • inter.broker.listener.name=PLAINTEXT
    • controller.listener.names=CONTROLLER
    • advertised.listeners=PLAINTEXT://<当前节点IP>:9092
    • node.id=<节点ID>
    • controller.quorum.voters=1@<节点IP>:9093,2@<第二个节点IP>:9093,3@<第三个节点IP>:9093
    • log.dirs=/data/kafka/logs
    • auto.create.topics.enable=true
    • num.partitions=3
    • default.replication.factor=3
  4. 初始化集群元数据: 在任意一个节点上执行以下命令初始化集群元数据:

    cd /opt/kafka
    bin/kafka-storage.sh format -t $(bin/kafka-storage.sh random-uuid) -c config/kraft/server.properties
    
  5. 启动Kafka集群: 在每个节点上启动Kafka服务器:

    /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
    
  6. 验证集群状态: 使用以下命令检查集群元数据和测试Topic自动创建:

    bin/kafka-metadata-shell.sh --snapshot /data/kafka/logs/__cluster_metadata-0/00000000000000000000.log
    bin/kafka-topics.sh --bootstrap-server <节点IP>:9092 --describe --topic auto-created-topic
    

使用Docker部署Kafka

  1. 安装Docker和Docker Compose: 确保已安装Docker和Docker Compose,并分配足够的内存(至少4GB)。

  2. 创建docker-compose.yml文件: 在项目目录下创建docker-compose.yml文件,内容如下:

    version: '3.8'
    services:
      kafka1:
        image: apache/kafka:3.6.1
        ports:
          - "9092:9092"
        environment:
          KAFKA_NODE_ID: 1
          KAFKA_PROCESS_ROLES: broker,controller
          KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
          KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka1:9093,2@kafka2:9094,3@kafka3:9095
          KAFKA_DEFAULT_REPLICATION_FACTOR: 3
          KAFKA_MIN_INSYNC_REPLICAS: 2
        volumes:
          - kafka1-data:/kafka/log
    volumes:
      kafka1-data:
    
  3. 启动Kafka集群: 在项目目录下执行以下命令启动Kafka集群:

    docker-compose up -d
    
  4. 验证集群状态: 使用以下命令检查集群元数据和测试Topic自动创建:

    docker exec -it <kafka1容器ID> kafka-metadata-shell.sh --snapshot /kafka/logs/__cluster_metadata-0/00000000000000000000.log
    docker exec -it <kafka1容器ID> kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic auto-created-topic
    

0
看了该问题的人还看了