日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

使用Docker搭建Apache?Kafka環境的詳細過程_docker

作者:夢想畫家 ? 更新時間: 2022-11-27 編程語言

Docker是最受歡迎的容器引擎之一,軟件行業用于創建、打包、部署應用。本教程學習如何使用Docker搭建Apache Kafka。

安裝單個節點

安裝單節點Kafka代理需能夠滿足本地開發需求,我們首先學習單節點安裝。

docker-compose.yml 配置

使用Apache Kafka服務,首先需要啟動Zookeeper 服務。這可以通過在docker-compose.yml 文件配置依賴實現,但要確保Zookeeper服務總是在Kafka服務之前啟動,反之zookeeper最后停止。

首先創建docker-compose.yml文件,增加兩個服務:zookeeper和kafka:

version: '2'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181
  
  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 29092:29092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

Zookeeper服務監聽2181端口為Kafka提供服務,但對于運行在本機的客戶端,暴露的端口為22181.
類似的,kafka通過端口29092暴露給主機應用,但實際上在容器中的端口9092。有KAFKA_ADVERTISED_LISTENERS屬性來配置。

下面通過使用命令啟動容器、開啟kafka服務:

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Creating kafka_zookeeper_1 ... done
Creating kafka_kafka_1     ... done

下面通過nc命令嚴重兩個服務正在監聽各自的端口:

$ nc -z localhost 22181
Connection to localhost port 22181 [tcp/*] succeeded!
$ nc -z localhost 29092
Connection to localhost port 29092 [tcp/*] succeeded!

另外,也可以檢查日志,當容器正在運行時驗證kafka服務是否啟動:

$ docker-compose logs kafka | grep -i started

可以看到Kafka服務已經啟動。

最后可以使用Kafka Tool Gui 工具連接已安裝的Kafka服務:

在這里插入圖片描述

安裝集群環境

生產環境需要更穩定的環境,下面擴展 docker-compose.yml文件創建多節點集群環境:

docker-compose.yml配置

集群安裝需要zookeeper和Kafka有多個實例,下面為zookeeper和kafka增加多個服務:

---
version: '2'
services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 22181:2181

  zookeeper-2:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 32181:2181
  
  kafka-1:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper-1
      - zookeeper-2

    ports:
      - 29092:29092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  kafka-2:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper-1
      - zookeeper-2
    ports:
      - 39092:39092
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:2181,zookeeper-2:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092,PLAINTEXT_HOST://localhost:39092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

必須要確保kafka服務名稱唯一,通過KAFKA_BROKER_ID 屬性設置。而且每個服務必須暴露唯一主機端口。雖然zookeeper-1 和 zookeeper-2 監聽2181端口,但對于主機端口分別為 22181 和 32181。類似的,kafka-1 和 kafka-2 services對應主機端口分別為 29092 和 39092。

啟動kafka集群

現在通過docker-compose命令啟動集群:

$ docker-compose up -d
Creating network "kafka_default" with the default driver
Creating kafka_zookeeper-1_1 ... done
Creating kafka_zookeeper-2_1 ... done
Creating kafka_kafka-2_1     ... done
Creating kafka_kafka-1_1     ... done

啟動完成,使用Kafka Tool連接集群,地址通過逗號分割只讀多個zookeeper地址和端口:

總結

本文使用Docker技術創建單個Kafka節點和Kafka集群環境,并且使用可視化工具連接服務查看代理服務器的配置信息。

原文鏈接:https://blog.csdn.net/neweastsun/article/details/127374128

欄目分類
最近更新