[docker] docker-compose インストール Kafka クラスター

序文

docker-composeネットワーク モジュールと、Zookeeper クラスターのインストールに使用するものは、以前に導入されましたdocker-compose( [docker] docker-compose は、Zookeeper クラスターをインストールします) 。

この章では、docker ネットワークと前号でインストールした zk クラスターを使用して、独自の kafka クラスターを作成する方法を紹介します。


基本的な依存関係

  • ドッカーとドッカー構成
  • Zookeeper の単一ノードまたはクラスター

基本的な考え方

アイデア 1

Kafka クラスタのため正式版はありませんが、調べたところ一般的なブログでは以下の 2 社の大手が作成したクラスタを使用することが多いようです。
ここに画像の説明を挿入します

  • 事前にDockerイメージをダウンロードしてください
    docker pull bitnami/kafka:2.7.0

PS: 将来の開発と展開の安定性を確保するために、バージョンを使用する代わりに、より安定したバージョンを設定することをお勧めします。これは、latest各バージョンの一部の内容に一貫性がない可能性があるためです。

その他事前に準備するもの
  • 事前にDockerネットワークを作成しておく
    docker-network create zk-net

スタンドアロン - コマンドライン起動

クラスター バージョンを使用してデプロイする前に、作成者が提供するデプロイメント ドキュメントを参照して、デプロイメント テストを実施できます。

  • ステップ 1: ネットワークを作成する (Docker ネットワークを作成する)
$ docker network create app-tier --driver bridge

  • ステップ 2: Zookeeper サーバー インスタンスを起動する (Zookeeper のスタンドアロン バージョンをデプロイする)
$ docker run -d --name zookeeper-server \
    --network app-tier \
    -e ALLOW_ANONYMOUS_LOGIN=yes \
    bitnami/zookeeper:latest
  • ステップ 2: Apache Kafka サーバー インスタンスを起動する (スタンドアロン バージョンの kafka をデプロイする)
$ docker run -d --name kafka-server \
    --network app-tier \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    bitnami/kafka:latest
  • ステップ 3: Apache Kafka クライアント インスタンスを起動します (テストには kafka のコマンド ライン ツールを使用します)
$ docker run -it --rm \
    --network app-tier \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    bitnami/kafka:latest kafka-topics.sh --list  --bootstrap-server kafka-server:9092

PS: このステップでは、docker exec -it <cointainerId> /bin/bashkafka コンテナに入った後、kafka-topic.shテストのためにスクリプトを直接呼び出すこともできます。


スタンドアロン - (docker-compose.yml ファイル)

version: "3"
services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:latest'
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper

クラスターの構成ファイルは単一マシンの構成ファイルと似ています。最初に単一マシンの構成ファイルを解析しましょう。上記は公式の単一マシン展開ファイルです。

ネットワーク
  • networks/app-tier: 主にdocker関連のネットワークを宣言するためのもので、以下の用途に便利です。
  • driver:bridge: Docker ネットワーク モード、ブリッジ モードを使用します。
サービス
  • zookeeper: Zookeeper シングルトン モードの展開とそれに関連する設定。
  • kafka: kafla シングルトン モードの展開とその関連構成。
  • kafka/environment: 関連する環境変数。
  • kafka/ports: 鏡。

クラスター - (docker-compose.yml ファイル)

version: "3"

networks:
  zk-net:
    name: zk-net

services:
  kafka01:
    image: 'bitnami/kafka:2.7.0'
    container_name: kafka01
    hostname: kafka01
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka01:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - zk-net
  kafka02:
    image: 'bitnami/kafka:2.7.0'
    container_name: kafka02
    hostname: kafka02
    ports:
      - '9093:9092'
    environment:
      - KAFKA_BROKER_ID=2
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka02:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - zk-net
  kafka03:
    image: 'bitnami/kafka:2.7.0'
    container_name: kafka03
    hostname: kafka03
    ports:
      - '9094:9092'
    environment:
      - KAFKA_BROKER_ID=3
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka03:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    networks:
      - zk-net    

関連する実務

  • 起動するdocker-compose up -d
  • 関連する Kafka クラスターへのリンクを使用しkafka-topic.sh、トピックの作成、プロデューサーの開始、コンシューマーの開始などのコマンドを使用して実行します。

参照

[1]。(ハブドッカー) bitnami/kafka

おすすめ

転載: blog.csdn.net/u010416101/article/details/122916190