跳到主要内容

Kafka 单节点部署

服务器 IP主机角色
192.168.10.7Kafka Broker、Controller

Kafka Server

  1. 下载 JDK 安装包

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9.tar.gz
  2. 解压 JDK 并配置 Java 软链接

    tar -zxvf OpenJDK21U-jdk_x64_linux_hotspot_21.0.8_9.tar.gz -C /usr/local
    mv /usr/local/jdk-21.0.8+9 /usr/local/openjdk-21
    ln -s /usr/local/openjdk-21/bin/java /bin/java
  3. 下载 Kafka 安装包

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/kafka_2.13-4.3.1.tgz
  4. 解压 Kafka 并创建数据目录

    tar -zxvf kafka_2.13-4.3.1.tgz -C /usr/local
    mv /usr/local/kafka_2.13-4.3.1 /usr/local/kafka
    mkdir -p /data/kafka/kafka-logs
  5. 修改 Kafka JVM 内存为 4G

    sed -i ':a;N;$!ba;s/Xm[xs]1G/Xmx4G/1' /usr/local/kafka/bin/kafka-server-start.sh
    sed -i ':a;N;$!ba;s/Xm[xs]1G/Xms4G/1' /usr/local/kafka/bin/kafka-server-start.sh
  6. 修改 Kafka 配置文件

    cat > /usr/local/kafka/config/server.properties <<'EOF'
    process.roles=broker,controller
    node.id=1
    controller.quorum.bootstrap.servers=192.168.10.7:9093
    listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
    advertised.listeners=PLAINTEXT://192.168.10.7:9092
    listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
    inter.broker.listener.name=PLAINTEXT
    controller.listener.names=CONTROLLER
    log.dirs=/data/kafka/kafka-logs
    num.partitions=10
    offsets.topic.replication.factor=1
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1
    default.replication.factor=1
    min.insync.replicas=1
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    group.initial.rebalance.delay.ms=3000
    message.max.bytes=10485760
    replica.fetch.max.bytes=10485760
    EOF

    根据实际环境确认节点 IP 和端口,并注意修改以下参数:

    • controller.quorum.bootstrap.servers:填写本机 IP 和 Controller 端口 9093,格式为 本机IP:9093。不要同时配置已废弃的 controller.quorum.voters
    • advertised.listeners:填写本机对外提供服务的 IP 和 Broker 端口 9092,业务服务通过该地址连接 Kafka。
  7. 生成集群 ID 并格式化存储目录

    KAFKA_CLUSTER_ID=$(/usr/local/kafka/bin/kafka-storage.sh random-uuid)
    /usr/local/kafka/bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c /usr/local/kafka/config/server.properties
    • 该命令仅可在首次初始化空数据目录时执行;已有数据的节点请勿重复格式化。
  8. 创建 Kafka 用户并授权目录

    useradd -M -s /sbin/nologin kafka
    chown -R kafka:kafka /usr/local/kafka /data/kafka
  9. 配置 systemd 管理 Kafka

    cat > /etc/systemd/system/kafka.service <<'EOF'
    [Unit]
    Description=Kafka KRaft
    After=network.target
    [Service]
    User=kafka
    Group=kafka
    LimitNOFILE=102400
    LimitNPROC=102400
    ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
    ExecStop=/usr/bin/kill $MAINPID
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF
  10. 启动 Kafka 并加入开机自启动

    systemctl daemon-reload
    systemctl enable kafka
    systemctl start kafka
    systemctl status kafka
  11. 验证消息收发

    创建测试 Topic

    /usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --create --if-not-exists --topic test01 --partitions 1 --replication-factor 1

    启动生产者

    在当前终端执行以下命令,输入测试消息后按 Enter 发送

    /usr/local/kafka/bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test01

    启动消费者

    另开一个终端执行以下命令。消费者能够输出生产者发送的消息时,表示 Kafka 已具备正常的消息收发能力

    /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test01 --from-beginning