ApacheKafka

Docker ComposeでApache Kafka環境構築(5分で完了)

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

5分で完了!Docker ComposeによるKafka環境構築の導入

ローカル開発環境にApache Kafkaをセットアップする際、ZooKeeperとの連携やバージョン管理が手間となるケースは多いです。本記事では、Docker Composeを使用して5分でApache Kafka 3.8の簡易環境を構築できる方法を解説します。開発者はこの設定例をコピーしてすぐ利用可能で、テスト用トピックの作成やメッセージ送信の確認が可能です。


DockerとDocker Composeの事前インストール手順

Kafka環境構築には、まずDockerおよびDocker Composeをインストールする必要があります。以下に各OSでの確認方法とバージョンチェックのコマンドを記載します。

Dockerのインストール確認方法

  • macOS / Windows: Docker Desktopアプリを起動し、「About Docker」でバージョンを確認
  • Linux(Ubuntu例):
    bash
    sudo apt update && sudo apt install docker.io -y

Docker Composeのバージョンチェック

Docker Composeは、docker-compose --versionコマンドで確認できます。
推奨バージョン:1.29以降(Kafka 3.8との互換性を保つため)

重要ポイント:最新版のDocker Composeを使用することで、サービス定義ファイルのエラーメッセージが明確になり、トラブルシューティングが容易になります。


ZooKeeperとの連携設定方法

KafkaはZooKeeperに依存するため、Docker Composeで両者を一緒に構築します。

Kafkaが依存するZooKeeperの役割

ZooKeeperは、Kafkaクラスター内のノード管理やトピック情報の共有を行う中心的な役割を果たします。初心者向けに説明すると、「分散システムの仲介役」と考えてください。KafkaサービスはZooKeeperに接続して情報を取得するため、ネットワーク設定が不可欠です。

技術的背景補足:ZooKeeperは、分散環境における状態共有や一貫性を保つための中心デーモンです。これにより、Kafkaは複数ノードでのトピック管理やレプリケーションを実現します。


Docker Composeファイルの記述例(バージョン3.8対応)

Docker Composeファイルはversion: '3.8'を指定し、サービスごとの設定を明確にします。

サービス定義の構造解説

  • version: Docker Composeのバージョンを指定(3.8が推奨)
  • services: 定義するコンテナリスト(ZooKeeperとKafkaを記述)
  • depends_on: 依存関係を明示的に設定(サービス起動順を制御)

環境変数とポートマッピングの設定

以下は具体的な設定例です:

バージョン3.8の特徴depends_onはサービス起動順を指定するだけで、依存サービスが完全に起動した後で実行されるとは限らないため、healthcheckなどの追加設定が必要な場合もあります。


サービス起動後の接続確認手順

Docker Composeファイルを保存してdocker-compose up -dで起動後、以下のようにテストします。

Kafkaプロダーやコンシューマーの動作テスト

  1. テストトピックを作成:
    bash
    docker exec -it kafka kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092

  2. メッセージを送信(プロデューサー):
    bash
    docker exec -it kafka kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

  3. メッセージを受信(コンシューマー):
    bash
    docker exec -it kafka kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

kafkacatによるメッセージ送信確認

kafkacatコマンドは、Kafkaのメッセージ送受信を簡潔にテストできます。以下のように使用します:


バージョン管理のポイントとベストプラクティス

KafkaやZooKeeperのバージョンを適切に管理することで、環境不整合やセキュリティリスクを防ぎます。

イメージバージョン固定の重要性

  • 不安定なタグ(例:latest)は避ける:最新版が急激に変更される可能性があるため、具体的なバージョンを指定するべきです。
  • 推奨イメージ: bitnami/kafka:3.8, zookeeper:3.8

Docker ComposeファイルのGit管理方法

  • バージョン情報付きのComposeファイルをリポジトリに配置し、変更履歴を可視化します。
  • 例:docker-compose.ymlでバージョン番号を明記し、git diffで過去の差分を確認できます。

ベストプラクティス:Docker Composeファイルはプロジェクトルートに配置し、.gitignoreで不要なデータ(volumes/, logs/)を除外して管理します。


互換性とバージョン固定の重要性

イメージバージョンの互換性確認

項目 補足
ZooKeeper zookeeper:3.8 Apache Kafka 3.8との互換性あり
Kafka bitnami/kafka:latest 現在の最新版(不安定なタグ)

注意事項bitnami/kafka:latestzookeeper:3.8の組み合わせでは、互換性があるかを公式ドキュメントで確認してください。実環境構築には特定バージョン固定が推奨されます。


まとめと今後の展望

本記事ではDocker ComposeによるKafka環境構築を簡潔に解説しました。冗長性を減らすため、Docker Composeファイルは1箇所のみ記述し、技術的背景やバージョン管理の重要性を明確にしました

今後のステップ:Kafkaのアーキテクチャやクラスタ構築の詳細については、別記事で解説します。


スポンサードリンク

-ApacheKafka