首頁 > 軟體

Docker容器搭建Kafka叢集的詳細過程

2022-03-20 13:01:06

一、Kafka叢集的搭建

1.拉取相關映象

docker pull wurstmeister/kafka
docker pull zookeeper

2.執行zookeeper

docker run -d --name zookeeper -p 2181:2181 -t zookeeper

3.執行kafka

Kafka0:

docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

Kafka1:

docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka

Kafka2:

docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka

引數說明:

  • -e KAFKA_BROKER_ID=0 在kafka叢集中,每個kafka都有一個BROKER_ID來區分自己
  • -e KAFKA_ZOOKEEPER_CONNECT=10.20.8.50:2181/kafka 設定zookeeper管理kafka的路徑10.20.8.50:2181/kafka
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.20.8.50:9092 把kafka的地址埠註冊給zookeeper,如果是遠端存取要改成外網IP。
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 設定kafka的監聽埠:這個不能改
  • -v /etc/localtime:/etc/localtime 容器時間同步虛擬機器器的時間

啟動3個Kafka節點

4.設定topic

進入kafka0

docker exec -it kafka0 /bin/bash

進入bin目錄

cd /opt/kafka_2.13-2.8.1/bin

建立topic

kafka-topics.sh --create --zookeeper 192.168.16.129:2181 --replication-factor 3 --partitions 5 --topic TestTopic

檢視topic

kafka-topics.sh --describe --zookeeper 192.168.16.129:2181 --topic TestTopic

Kafka的topic所有分割區會分散在不同Broker上,所以該topic的5個分割區會被分散到3個Broker上,其中有兩個Broker得到兩個分割區,另一個Broker只有1個分割區,如圖所示:

叢集節點說明:

  • Topic: TestTopic PartitionCount: 5 ReplicationFactor:3代表TestTopic有5個分割區,3個副本節點;
  • Topic: 代表主題名稱
  • Leader代表主題節點號,
  • Replicas代表他的副本節點有Broker.id = 2、0、1(包括Leader Replica和Follower Replica,且不管是否存活),
  • Isr表示存活並且同步Leader節點的副本有Broker.id = 2、0、1

5.進行生產者和消費者測試

分別在Broker0上執行一個生產者,Broker1、2上分別執行一個消費者:

kafka-console-producer.sh --broker-list 192.168.16.129:9092 --topic TestTopic

kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9093 --topic TestTopic --from-beginning

kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9094 --topic TestTopic --from-beginning

到此這篇關於Docker容器 Kafka叢集的搭建的文章就介紹到這了,更多相關Docker搭建Kafka叢集內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com