序文
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/bash
kafka コンテナに入った後、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
、トピックの作成、プロデューサーの開始、コンシューマーの開始などのコマンドを使用して実行します。