【第1回】Confluent Platformのデモを試してみる


はじめに

 最近Kafkaを機能拡張しているConfluent Platformの話を聞く機会が増えてきたのですが、話を聞くだけではよくわからない部分もあったのでConfluent社が提供するcp-demoというコンテンツがGitHub上にあったので、ひとつひとつの機能を実際に試してみることにしました。
参照:https://github.com/confluentinc/cp-demo

内容

 このデモのユースケースは、実際のWikipediaページへのリアルタイム編集を処理するApacheKafka®イベントストリーミングアプリケーションとなっています。

出典:https://docs.confluent.io/platform/current/tutorials/cp-demo/docs/overview.html

デモシナリオは次のとおりです。
ウィキペディアのイベントストリームは、実際のウィキィページで発生するリアルタイム編集の連続ストリームを公開しています。Kafkaソースコネクタのkafka-connect-sseはhttps://stream.wikimedia.org/v2/stream/recentchange からサーバー送信イベント(SSE)をストリーミングし、カスタムコネクトトランスフォームのkafka-connect-json-schemaがJSONを抽出します。
その後、これらのメッセージが、Kafkaクラスターに書き込まれます。このデモでは、ksqlDBとkafka Streamをデータ処理のために使用します。次に、Kafkaシンクコネクタのkafka-connect-elasticsearchがKafkaからデータをストリーミングし、分析のためにElasticsearchへデータを繋ぎKibanaで可視化します。すべてのデータはConfluentSchema RegistryとAvroを使用しており、CCC(Confluent Control Center)を管理と監視のために使用します。

オンプレミスでクラスタ構築する

 それでは実際にオンプレミスで構築していきたいと思います。
今回はcp-demoというDocker環境を利用してそれぞれの機能の確認をしていきます。
使用するDocker環境は少なくとも8GBのメモリ、2つ以上のCPUコアが割り当てられている必要があります。

設定

1.confluentinc / cp-demo GitHubリポジトリのクローンを作成します。

git clone https://github.com/confluentinc/cp-demo

2.cp-demoディレクトリに移動し最新リリースのブランチをチェックアウトします。

cd cp-demo
git checkout 6.2.0-post

環境のセットアップ

cp-demoのディレクトリの中にはワークフローをエンドツーエンドで実行するスクリプトが用意されています。
それを使用してDockerコンテナを起動し、環境を構成します。
また、このスクリプトにはオプションの設定も可能となっております。
 ・CLEAN:構築された状態で証明書とローカルに構築されたConnectイメージを再生成するかどうか制御できます。
 ・C3_KSQLDB_HTTPS:Confluent Control CenterとksqlDBサーバがHTTPかHTTPSのどちらを使用するか制御できます。
 ・VIZ:ElasticsearchとKibanaの有効/無効を制御できます。
今回は、オプションを使用せずスクリプトを実行します。

./scripts/start.sh

環境にもよりますが、最初の実行時は必要なDockerイメージをすべてダウンロードするので約15分ほど時間がかかります。

確認

ここでは環境が正しくセットアップされたか確認します。
1.Dockerコンテナの状態を確認します。

docker-compose ps

出力結果は以下のような内容になります。

2.http://localhost:5601/app/dashboards#/view/Overview をクリックし、Kibanaのダッシュボードを表示します。これが表示されればcp-demoのスクリプトが正常に完了しています。

3.cp-demoディレクトリ中のdocker-compose.ymlファイルがこのConfluentプラットフォームを構成しています。
https://github.com/confluentinc/cp-demo/blob/6.2.0-post/docker-compose.yml

次回は、この環境をもとにそれぞれの機能を見ていきたいと思います。