ApacheKafka

ローカル環境でApache Kafkaクラスター構築ガイド

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

ローカル環境でのApache Kafkaクラスター構築の目的とアプローチ

ローカル環境でApache Kafkaクラスターを構築する目的は、リアルタイムデータ処理のテストや学習用に安定した環境を提供することです。2026年現在では、ZooKeeper連携型KRaftモード対応型の2つの主要なアプローチが存在します。両者には以下のような違いがあります。

比較項目 ZooKeeper連携型 KRaftモード対応型
依存技術 ZooKeeperが必要 ZooKeeper不要
構成複雑度 高(ZooKeeperの管理が別途必要) 低(単一コンテナで完結)
最新性 従来型、一部のプロジェクトではサポート終了中 Apache Kafka 3.0以降で推奨(現行バージョン:3.5.1

本記事では、Docker Composeを用いて両方の構成方法を具体的に解説し、ローカル環境でのテスト開始が簡単になるようにします。


DockerとDocker Composeのインストール確認手順

ローカルでKafkaクラスターを構築するには、まずDockerとDocker Composeが正しく動作していることを確認しましょう。OSによってコマンドが異なるため、対応する手順を実施してください。

  • macOSの場合:
    bash
    docker --version
    docker-compose --version

    出力例: Docker version 26.1.3, docker-compose version v2.25.0

  • Linux(Ubuntuなど)の場合:
    bash
    sudo systemctl status docker
    docker-compose --version

    Dockerサービスが実行中であれば、active (running)と表示されます。

OSごとのDocker Composeバージョン依存性に注意。macOSはv2.25.0、Linuxではv2.17以降で動作確認済みです。

Docker Composeのバージョンは、v2.x以降でKafkaコンテナの起動に必要です。確認後、次節で具体的な構築手順に進みましょう。


ZooKeeper連携型Kafkaクラスター構築手順

ZooKeeperとKafkaを連携させる方法は、ローカル開発環境ではよく使われるアプローチです。以下にdocker-compose.ymlファイルの例とポート設定・環境変数の役割を解説します。

docker-compose.ymlファイル構成例

下記の内容をdocker-compose.ymlファイルとして保存してください。この構成は、ZooKeeperコンテナとKafkaコンテナをそれぞれ起動するものです。

ポート設定と環境変数の役割

  • ポート設定:
  • 2181はZooKeeperの通信用ポート。
  • 9092はKafkaのプロトコル通信用ポート。
  • 重要環境変数:
  • KAFKA_ADVERTISED_HOST_NAME: 外部からアクセスする際のホスト名(例: localhost)を指定。
  • KAFKA_ZOOKEEPER_CONNECT: ZooKeeperの接続先(例: zookeeper:2181)。

この構成で、docker-compose up -dと実行すれば、ローカルにZooKeeper連携型のKafkaクラスターが起動します。


KRaftモード対応型Kafkaクラスター構築手順

Apache Kafka 3.0以降では、KRaftモード(Kafka Raft Metadata Mode)という、ZooKeeperを不要とする新方式が導入されました。ここではその設定方法と注意点を解説します。

KRaftモード導入時の注意点

  • ストレージディレクトリの永続化: 上記構成では./kraft-storageにデータを保存していますが、ローカル環境での再起動時にデータが残るよう、ボリュームマウントを必ず設定する必要があります
  • 初期化コマンド:
    bash
    docker-compose run kafka bash -c "/opt/kafka/bin/kraft-tools.sh --bootstrap-server localhost:19092 --create-metadata-quorum"

    この手順で、KRaftモードのメタデータクォラムを初期化します(以前はlocalhost:19091が使用されていましたが、正しいポートは19092に修正しました)。

  • ZooKeeperからKRaftへの移行: 現在運用中のクラスターからKRaftに移行する場合、完全なバックアップとテスト環境での確認が必須です


クラスター構成確認と基本操作コマンド

クラスターの構築後は、動作しているかを確認し、必要に応じてトピックを作成します。

トピック作成・確認コマンド

Kafkaクラスターが正常に起動していることを確認するために、以下のようにkafka-topics.shを実行します。

このコマンドで、test-topicという名前のトピックが作成されます。確認は以下のようにします。

クラスターステータスチェック

KRaftモードの場合、以下のコマンドでステータスを確認できます。

このコマンドは、クラスター内のノードとその役割(ブローカー/コンテナ)を表示します。ポート接続の検証にはtelnet localhost 9092nc -zv localhost 9092を使うのも有効です。


KRaftモード導入時の主要な制約とベストプラクティス

KRaftモードはZooKeeperを不要とするため、ローカル環境での構築が簡単ですが、いくつかの制約や注意点があります。

  • データディレクトリの永続化: ローカルテストでも、ストレージボリュームをマウントしないとデータが失われるため、./kraft-storageなどのローカルパスに保存するようにしてください。
  • ローカル環境でのデータ保持方法: 実験的な構築では、docker-compose down時にデータを削除しないよう、volumes:でマウントしたディレクトリを永続的に保つ必要があります。
  • ZooKeeperからKRaftへの移行時の注意点: 既存のクラスターからKRaftモードに移行する際は、すべてのノードが同じバージョンを使用していることを確認し、データの整合性検証を必ず実施してください

KRaftモードは将来的な推奨アプローチですが、ローカル環境での利用には慎重さが必要です。特に、クラスター構成の理解が深まれば、より安定した運用が可能になります。


ローカル環境構築時のよくあるミスと対処法

ローカル環境でKafkaを構築する際のよくあるエラーとその対処策を整理します。

エラー内容 原因 対処方法
Connection refused ポート接続失敗(9092や19092) docker-compose up -d実行後、telnet localhost 9092で確認。ポートが正しくマッピングされているかを再検証
No such file or directory kraft-tools.shのパス誤り Docker Composeファイル内で/opt/kafka/bin/kraft-tools.shの指定が正しいかを確認。コンテナ内にバイナリがあるかをls /opt/kafka/bin/で検証
ZooKeeper not found ZooKeeper連携型で初期化忘れ Docker Composeファイル内のdepends_onでZooKeeperの起動順序が保証されていることを確認

これらのエラーは、構築手順を厳密に守らないと発生します。特にKRaftモードではストレージボリュームのマウントとポート設定の整合性に注意が必要です。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ApacheKafka