返回

一文掌握docker-compose部署kafka单机和集群,从此告别zookeeper!

后端

无ZooKeeper的Kafka:告别繁琐,拥抱轻松部署

在Kafka的世界里,ZooKeeper曾是不可或缺的存在,扮演着协调的角色。然而,随着Kafka 3.3版本的推出,这一切都将发生改变。KRaft横空出世,以其强大的功能取代了ZooKeeper,为Kafka带来了无与伦比的便利和灵活性。

踏上无ZooKeeper的Kafka之旅

要开启无ZooKeeper的Kafka之旅,第一步就是确保使用3.5或更高版本的Kafka镜像。这一版本已将KRaft完全集成,为你提供流畅无忧的体验。

单机Kafka部署:轻松自如,一触即发

部署单机Kafka就像一幅简单的画作。首先,创建并切换到一个名为“kafka-single”的目录。然后,创建一个docker-compose.yml文件,并添加以下代码:

version: '3.3'

services:
  kafka:
    image: confluentinc/cp-kafka:6.2.0
    hostname: kafka
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

最后,运行docker-compose up -d命令,你的Kafka单机服务将在眨眼间启动。

集群Kafka部署:强强联合,所向披靡

如果你需要的是更强大的集群部署,那也没问题。只需在“kafka-cluster”目录下创建一个docker-compose.yml文件,并添加以下代码:

version: '3.3'

services:
  kafka1:
    image: confluentinc/cp-kafka:6.2.0
    hostname: kafka1
    container_name: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_CLUSTER
  kafka2:
    image: confluentinc/cp-kafka:6.2.0
    hostname: kafka2
    container_name: kafka2
    ports:
      - "9093:9093"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9093
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_CLUSTER
  kafka3:
    image: confluentinc/cp-kafka:6.2.0
    hostname: kafka3
    container_name: kafka3
    ports:
      - "9094:9094"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9094
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_CLUSTER

运行docker-compose up -d命令,你的Kafka集群将在瞬间横空出世,为你提供强大的数据处理能力。

无ZooKeeper的Kafka之旅,如此便捷!

使用docker-compose,你可以轻而易举地部署Kafka单机和集群,无需再为ZooKeeper的繁琐配置所烦恼。这不仅简化了部署过程,还为你省去了大量的时间和精力,让你可以更加专注于Kafka本身的功能和特性。

常见问题解答

  1. 无ZooKeeper的Kafka和有ZooKeeper的Kafka有什么区别?
    无ZooKeeper的Kafka使用KRaft取代ZooKeeper,在保持集群一致性的同时,简化了部署过程。

  2. KRaft与ZooKeeper相比有什么优势?
    KRaft具有更高的可用性、更高的吞吐量和更低的延迟,使其成为Kafka集群管理的理想选择。

  3. 我可以在现有的Kafka集群中使用KRaft吗?
    是的,你可以通过分阶段升级的方式将现有Kafka集群升级到KRaft。

  4. 无ZooKeeper的Kafka是否稳定?
    是的,KRaft已经过广泛的测试和验证,为无ZooKeeper的Kafka提供了稳定的基础。

  5. 如何监控无ZooKeeper的Kafka集群?
    你可以使用标准的Kafka监控工具,如Kafka Manager或Prometheus,来监控无ZooKeeper的Kafka集群。