DockerでConfluent(Kafka)の開発環境を簡単構築


はじめに

Confluent(Kafka)の開発環境をDockerを使って10分で構築する方法を記載します。
(開発環境と限定しているのは、冗長化や分散化を行っておらずデータの欠損を招く恐れがあるからです。)

前提条件

  • Dockerが動作する環境がある事
  • Dockerホストのメモリが8GB以上あること(満たなくても動くことがありますが、私が使った感覚ではよく落ちました)
  • 環境構築を行うDockerホストがインターネットと接続している事
  • Docker-Composeをインストールしている事
  • gitコマンドのインストールしていること

※ 前提手順の環境構築する手順記載していませんので、必要に応じて他の人の記事を参照してください。"Docker-Compose 導入"などのキーワードで出てきます。

環境構築手順と簡易解説

(1) githubからdocker-compose.yamlファイルの入手

# git clone https://github.com/confluentinc/examples
# cd examples
# git checkout 5.3.1-post
# cd cp-all-in-one
  • ブランチ名5.3.1-postの数値はConfluentのバージョン番号を指しています。2019年10月現在のLatestで記載しています。

(2) Dockerイメージのダウンロードとコンテナの起動

# docker-compose up -d --build
  • コマンドが終了してもバックグラウンドで各デーモンが起動中の場合があります。GUI[http://localhost:9021]でステータスを確認してください。

(3) 稼働状況の確認

# docker-compose ps
     Name                    Command               State                Ports
------------------------------------------------------------------------------------------
broker            /etc/confluent/docker/run        Up      0.0.0.0:29092->29092/tcp,
                                                           0.0.0.0:9092->9092/tcp
connect           /etc/confluent/docker/run        Up      0.0.0.0:8083->8083/tcp,
                                                           9092/tcp
control-center    /etc/confluent/docker/run        Up      0.0.0.0:9021->9021/tcp
ksql-cli          ksql http://localhost:8088       Up
ksql-datagen      bash -c echo Waiting for K ...   Up
ksql-server       /etc/confluent/docker/run        Up      0.0.0.0:8088->8088/tcp
rest-proxy        /etc/confluent/docker/run        Up      0.0.0.0:8082->8082/tcp
schema-registry   /etc/confluent/docker/run        Up      0.0.0.0:8081->8081/tcp
zookeeper         /etc/confluent/docker/run        Up      0.0.0.0:2181->2181/tcp,
                                                           2888/tcp, 3888/tcp
  • Steteが全てUpである事を確認します。

ブラウザから、http://(DockerホストのIPアドレス):9092/ へアクセスしてステータスを確認

[確認項目]

  • クラスタがrunning
  • Brokers が 1  (動作しているブローカーノードの数)
  • KSQL Clusters が 1 (動作しているKSQLサーバの数)
  • Connect Clueters が 1 (動作しているKafka Connectサーバの数)

※ Docker上のステータスがUPしてからそれぞれのノード(サーバ)がRADYになるまで時間がかかります。
  もし0の場合は数分待っててからブラウザのページを読み込みしてください

以上で、テスト環境の構築が終わりました。簡単でしたでしょうか?

起動停止と再起動、削除方法

起動停止

# docker-compose stop

再起動

# docker-compose start

環境の削除

# docker-compose down

※ Docker イメージは残ります。

補足

Docker環境は開発やテストやデモを行うときに非常に便利です。

Confluent社がデモシナリオをGITHUBに公開しています。
これらのシナリオを実行する時にも利用できるので環境を用意するだけでも面白いと思います。

関連コンテンツ

Apache Kafkaのメッセージ送受信について(REST-PROXY利用)