Contents
Apache Kafka 3.8のDocker環境構築でできること
ローカル環境でApache Kafkaを試す際、ZooKeeperとの連携やバージョン管理に手間がかかると感じる開発者は少なくありません。本記事では、Docker Composeを用いて5分でKafka 3.8の簡易環境を構築できる方法を解説します。実際のメッセージング動作を体験することで、分散型メッセージングシステムの理解が深まります。
準備するものと前提条件
本記事の手順に沿ってKafka環境を構築するには、以下の前提条件が必要です。
- Docker(バージョン19.03以上)がインストール済みであること
- docker-composeコマンドが利用可能であること
- テキストエディタ(VS CodeやNanoなど)で
docker-compose.ymlファイルを編集できる環境
注意:WindowsではDocker Desktopを使用し、Linux環境ではDocker Engineのインストールを確認してください。
docker-compose.ymlの作成手順
Docker ComposeでのKafka構築には、ZooKeeperとKafkaサービスを連携させた設定が不可欠です。以下にテンプレートを示します。
ZooKeeperサービスの定義
ZooKeeperはKafkaが動作するためのディスカバリーサービスとして必要です。
|
1 2 3 4 5 6 7 8 |
zookeeper: image: zookeeper:3.8.0 container_name: zookeeper ports: - "2181:2181" networks: - kafka_network |
Kafkaサービスのバージョン指定
Kafka 3.8に対応するイメージを使用し、ZooKeeperとの通信設定を行います。不安定なlatestタグではなく具体的なバージョン(例: 7.3.1)を指定することをお勧めします。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
kafka: image: confluentinc/cp-kafka:7.3.1 container_name: kafka ports: - "9093:9092" # 外部環境との競合回避のため、ポート番号を変更(例: 9093) environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9093 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 depends_on: - zookeeper networks: - kafka_network |
ネットワーク設定のポイント
kafka_networkネットワークを共通にすることで、コンテナ間での通信が可能になります。
ZooKeeperとKafkaバージョンの互換性確認
ZooKeeperとKafkaのバージョン不一致により起動失敗するリスクがあります。以下に推奨される組み合わせを示します。
| ZooKeeperバージョン | Kafkaバージョン | 注意事項 |
|---|---|---|
| 3.8.x | 3.8.x | バグ修正で安定性向上 |
| 3.6.x | 3.4.x | 基本的な互換は保証されるが、動作検証が必要 |
注意:使用するバージョンに応じて公式ドキュメントを必ず確認してください。
Dockerコンテナの起動と確認方法
作成したdocker-compose.ymlファイルを使ってサービスを起動します。
サービス起動コマンドの実行
以下のコマンドでDockerコンテナを立ち上げます。
|
1 2 |
docker-compose up -d |
-dオプションでバックグラウンド実行に設定し、不要な出力が表示されないようにします。
ポート開放状態の確認手順
起動後は、ポート番号が適切にマッピングされているかをチェックします。
|
1 2 |
docker ps -a |
出力結果にzookeeper:2181とkafka:9093(または指定したポート)が表示されれば、正常に起動しています。
テスト用Producer/Consumerの実装
Kafkaサービスを確認した後は、テスト用のメッセージングを試してみましょう。
Kafkaコマンドラインツールの使用
Dockerイメージにはコマンドラインツールが含まれているため、以下のようにトピックを作成します。
|
1 2 |
docker exec -it kafka /bin/bash -c "kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --bootstrap-server localhost:9093" |
メッセージ送信・受信の検証手順
以下でProducerとConsumerを起動し、メッセージの送受信をテストします。
Producer起動コマンド
|
1 2 |
docker exec -it kafka /bin/bash -c "kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9093" |
Consumer起動コマンド
|
1 2 |
docker exec -it kafka /bin/bash -c "kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9093" |
メッセージを入力すると、Consumer側で同時に表示されるのを確認してください。
環境構築後の確認チェックリスト
Kafka環境が正常に動作しているかは以下の手順で確認します。
- サービス状態の確認
docker psでコンテナが稼働中かをチェック-
docker logs kafkaでエラーメッセージがないか調査 -
メッセージング動作テスト
-
トピック作成からProducer/Consumerの起動までを繰り返し確認
-
エラー時のトラブルシューティング手順
- ポート衝突:
docker psで他のサービスが9092ポートを使用していないか - ZooKeeper接続:
KAFKA_ZOOKEEPER_CONNECTの設定値が正しいか
まとめ
本記事では、Docker Composeを用いてApache Kafka 3.8環境を構築する手順を解説しました。
- ZooKeeperとの連携やネットワーク設定のポイントを押さえれば、ローカルでのテストがスムーズに
- Producer/Consumerのコマンド実行例で、メッセージング動作を確認可能
この手順により、Kafkaの基本的な仕組みを体験しながら学習できます。本記事の手順で5分で環境を立ち上げ、実際のメッセージングを体験してみてください。