本稿では、Apache kafka をコアテクノロジーとしたイベントストリーミングプラットフォーム製品である
Confluent Platform スタックを簡単にオンプレミス環境で構築する手順を紹介してゆきます。
Confluent Platform スタックを簡単にオンプレミス環境で構築する手順を紹介してゆきます。
はじめに
少しConfluent Platform について触れておきましょう。
Confluent Platform は、Apache kafkaのコア機能に加え、次の様な強力な機能が備わっています。
* ストリーミングアプリケーション開発者向けの様々な機能
* 効率的な運用を実現する機能
* アーキテクトのための機能(セキュリティやインフラなど)
図中のインフラ選択にあるように、現在Confluent Platform を使うときには、Confluent Platform は、Apache kafkaのコア機能に加え、次の様な強力な機能が備わっています。
* ストリーミングアプリケーション開発者向けの様々な機能
* 効率的な運用を実現する機能
* アーキテクトのための機能(セキュリティやインフラなど)
セルフマネージドとフルマネージドの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内のすべてのサービスを起動し、ローカルホスト内のコンテナで実行します。
オールインワンに含まれるコンポーネントは次の通りです。
各機能の説明はこちらを参照ください。
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
オールインワンの利用目的は、主に開発者が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
それでは、早速手順を紹介してゆきます。
**1. LinuxOSをインストール**
インストール要件を満たしているOSをセットアップしてください。
※本稿用の環境では、VMware環境上のCentOS 8 を使用しました。
https://docs.confluent.io/current/installation/system-requirements.html
**2. Docker インストール**
公式ホームページに記載されている手順でDocker Engine をインストール
https://docs.docker.com/engine/install/centos/
公式ホームページに記載されている手順で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
(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
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
(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
$ 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台完成していれば正常です。
コントロールセンターの Web インターフェース(http://localhost:9021)に移動します。
別の端末からアクセスする場合は、localhost をIPアドレスまたは(名前解決可能な)ホスト名に置き換えてください。
Control Centerがオンラインになるまで1~2分かかる場合があります。
Cluster(Broker)が1台完成していれば正常です。
Confluent Platform スタックが起動したので、Connectorを使って実際にデータを取り込みTOPICを作成したり、
取り込んだデータをKSQLDBを使ってストリーム処理したりすることが出来るようになりました。
今後の投稿ではこの構築したオールインワン上でサンプルデータを利用した操作例等を紹介していく予定です。
ソリューションアーキテクト:照川陽太郎