株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

Confluent Platform を試してみよう ~オールインワン構築編~

本稿では、Apache kafka をコアテクノロジーとしたイベントストリーミングプラットフォーム製品である
Confluent Platform スタックを簡単にオンプレミス環境で構築する手順を紹介してゆきます。

はじめに

少しConfluent Platform について触れておきましょう。
Confluent Platform は、Apache kafkaのコア機能に加え、次の様な強力な機能が備わっています。
* ストリーミングアプリケーション開発者向けの様々な機能
* 効率的な運用を実現する機能
* アーキテクトのための機能(セキュリティやインフラなど)

f:id:networld-blog-post:20201105104015p:plain

図中のインフラ選択にあるように、現在Confluent Platform を使うときには、
セルフマネージドとフルマネージドの2つの選択肢があります。
**セルフマネージド**
* オンプレミスにLinuxサーバーを構築してインストール
* パブリッククラウドにLinuxサーバーを構築してインストール
など

**フルマネージド**
* Conluent Cloud を利用する  
※2020/11 現在では、トライアル期間である3ヶ月間は各月$200分無償提供されていますのでこちらでの機能評価もどうぞ
https://www.confluent.io/confluent-cloud

フルマネージドのConfluent Cloud についてはまた別に機会に紹介したいと思います。
 
今回は、セルフマネージドの環境にDockerを使って、簡単にConfluent Platform スタックを構築します。

Confluent Platform スタック オールインワン 

今回紹介するConfluent Platform スタック オールインワンを利用すると、オンプレミス環境で簡単に
Confluent Platform スタックを実行できます。
Docker ComposeファイルはConfluent Platform内のすべてのサービスを起動し、ローカルホスト内のコンテナで実行します。
オールインワンに含まれるコンポーネントは次の通りです。

f:id:networld-blog-post:20201105102648p:plain

各機能の説明はこちらを参照ください。
https://www.networld.co.jp/product/confluent/technical_guide/about_confluent_platform/

オールインワンの利用目的は、主に開発者がConfluent環境を利用してアプリケーションを開発する環境を
簡単に構築することです(Developer Licenseを利用)。
もちろん、エンタープライズでの利用を想定した機能評価を行うことも出来ますが、本番環境においては、
複数台でクラスターを組むなどして環境を構築しますので、ある程度の台数で構築した方が本番に近いテストが出来るでしょう。
その際には30日のTrial Licenseを利用します。

※検証やPOCなどで利用するライセンスは次の通りです。
* Developer License   : 無期限利用可能、1台構成、コミュニティサポート
* Trial License       : 30日利用可能、台数制限なし、コミュニティサポート

プロダクションライセンスについては、Networld Confluent 製品担当までお問い合わせください。
↓  ↓  ↓  ↓  ↓  ↓
confluent-info@networld.co.jp


オールインワン構築手順

それでは、早速手順を紹介してゆきます。

**1. LinuxOSをインストール**
インストール要件を満たしているOSをセットアップしてください。
※本稿用の環境では、VMware環境上のCentOS 8 を使用しました。
https://docs.confluent.io/current/installation/system-requirements.html

f:id:networld-blog-post:20201105102959p:plain


**2. Docker インストール**

公式ホームページに記載されている手順でDocker Engine をインストール  
https://docs.docker.com/engine/install/centos/
下記のコマンドを順番に実行
(1) $ sudo yum install -y yum-utils

(2) $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

(3) $ sudo yum install docker-ce docker-ce-cli containerd.io

(4) $ systemctl start docker

**3. Docker Compose インストール**

公式ホームページに記載されている手順でDocker Compose をインストール  
https://docs.docker.com/compose/install/

(1) sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose  
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   651  100   651    0     0  18083      0 --:--:-- --:--:-- --:--:-- 18083
100 11.6M  100 11.6M    0     0  4703k      0  0:00:02  0:00:02 --:--:-- 5201k

(2) sudo chmod +x /usr/local/bin/docker-compose

(3) docker-compose --version  
> docker-compose version 1.27.4, build 40524192

**4. Gitインストール**

$ sudo yum install -y git

Cloning into 'cp-all-in-one'...  
remote: Enumerating objects: 6, done.  
remote: Counting objects: 100% (6/6), done.  
remote: Compressing objects: 100% (6/6), done.  
remote: Total 699 (delta 1), reused 3 (delta 0), pack-reused 693  
Receiving objects: 100% (699/699), 4.15 MiB | 2.82 MiB/s, done.  
Resolving deltas: 100% (347/347), done.  

**5. cp-all-in-one のダウンロード**

git clone https://github.com/confluentinc/cp-all-in-one.git
※オールインワンをダウンロードする任意のディレクトリで実行

**6. Docker Compose 起動**

(1)  cd /cp-all-in-one
※"cp-all-in-one" ディレクトリに移動し、docker-compose.ymlがあることを確認
Ex. 
[root@ccp60-a cp-all-in-one]# ls
cp-all-in-one  cp-all-in-one-cloud  cp-all-in-one-community  Docker  images  README.md  utils

[root@ccp60-a cp-all-in-one]# ls
docker-compose.yml  README.md

(2) docker-compose up -d  
※Confluent Platform スタックが起動すればOK

Status: Downloaded newer image for confluentinc/cp-kafka-rest:6.0.0  
Creating zookeeper ... done  
Creating broker    ... done  
Creating schema-registry ... done  
Creating connect         ... done  
Creating rest-proxy      ... done  
Creating ksqldb-server   ... done  
Creating ksql-datagen    ... done  
Creating ksqldb-cli      ... done  
Creating control-center  ... done  

(3) docker-compose ps
※StateがUpになっていることを確認

     Name                    Command               State                       Ports
---------------------------------------------------------------------------------------------------------
broker            /etc/confluent/docker/run        Up      0.0.0.0:9092->9092/tcp, 0.0.0.0:9101->9101/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-datagen      bash -c echo Waiting for K ...   Up  
ksqldb-cli        /bin/sh                          Up  
ksqldb-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  

**7. Confluent Controller へアクセス**

コントロールセンターの Web インターフェース(http://localhost:9021)に移動します。
別の端末からアクセスする場合は、localhost をIPアドレスまたは(名前解決可能な)ホスト名に置き換えてください。
Control Centerがオンラインになるまで1~2分かかる場合があります。
Cluster(Broker)が1台完成していれば正常です。  

f:id:networld-blog-post:20201105103907p:plain


 
ここまでで、オールインワンの構築は完了です。
Confluent Platform スタックが起動したので、Connectorを使って実際にデータを取り込みTOPICを作成したり、
取り込んだデータをKSQLDBを使ってストリーム処理したりすることが出来るようになりました。

今後の投稿ではこの構築したオールインワン上でサンプルデータを利用した操作例等を紹介していく予定です。
 
 
ソリューションアーキテクト:照川陽太郎