Skip to content

Latest commit

 

History

History
110 lines (72 loc) · 5.55 KB

README.md

File metadata and controls

110 lines (72 loc) · 5.55 KB

Kafka ブローカの構築

Raspberry Piのカメラやセンサーなどで取得したデータを、ViewerやZabbix/Grafanaなどの可視化ツールとの間で受け渡す役割を果たすKafkaブローカを構築します。

flowchart LR
  subgraph R[Raspberry Pi]
    WR(SINETStream)
  end
  subgraph S[Server]
    B[Kafka Broker]
  end
  V1["VideoViewer"]
  V2["Zabbix"]
  V3["Grafana+Elasticsearch"]
  WR==>B
  B-.->V1
  B-.->V2
  B-.->V3
Loading

1. 構成について

ここで示す手順で構築されるKafkaブローカは以下の構成となっています。

  • 通信路の暗号化なし
  • ブローカでの認証なし
  • 1ノード構成

2. 準備

2.1. Docker

Kafkaブローカは Docker コンテナで実行します。そのため Docker Engine などを事前にインストールしておく必要があります。

2.1.1. Docker Engine

Install Docker Engine」などを参考に Docker Engine のインストールを行ってください。Dockerのバージョンは 19.03.0 以上が必要となります。

2.1.2. Docker Compose

複数のコンテナをまとめて管理するためにDocker Composeを利用します。Docker Composeはコンテナの起動パラメータなどを設定ファイルdocker-compose.ymlに記述することでコンテナの管理を容易にするツールです。「Where to get Docker Compose - Linux」などを参考にインストールを行ってください。Docker Compose のバージョンは 1.27.1 以上が必要となります。

2.2. 資材の配置

このディレクトリにあるファイルをKafkaブローカを構築するノードに配置してください。

3. パラメータの設定

Kafkaブローカのパラメータはコンテナの環境変数として設定を行います。コンテナの環境変数はdocker-compose.ymlと同じディレクトリに .env を作成し、そのファイルの記述により設定が行われます。

3.1. フォーマット

.env は各行が「(パラメータ名)=(値)」の形式になっているファイルとなります。記述例を以下に示します。

BROKER_HOSTNAME=kafka.example.org
KAFKA_MESSAGE_MAX_BYTES=20971520

この例ではBROKER_HOSTNAME, KAFKA_MESSAGE_MAX_BYTES というパラメータに対して、それぞれ kafka.example.org, 20971520 を値として指定しています。

.envのフォーマットの詳細についてはDocker Compose/Environment File#Syntax rulesを参照してください。

3.2. BROKER_HOSTNAME

KAFKAブローカのアドレスとしてクライアントに知らせるホスト名またはIPアドレスを指定します。

クライアントからはここで指定した値でアクセスできる必要があります。IPアドレスを指定した場合は、そクライアントからそのIPアドレスでアクセス可能となっている必要があります。ホスト名を指定した場合はDNSまたはクライアント環境の /etc/hosts などで名前解決できアクセス可能となっている必要があります。

3.3. Kafka ブローカのプロパティ

Kafkaブローカに対する設定パラメータは Kafka Documentation - 3.1 Broker Configs に記されているものを指定することができます。ここで利用するConfluentのKafkaコンテナでは、コンテナの環境変数によりKafkaブローカのプロパティを設定することができます。この際に指定する環境変数名は、以下のようなルールでKafkaブローカに設定するプロパティ名を変換したものになります。

  • 環境変数名のプレフィックスに KAFKA_ をつける
  • 全て大文字に変換する
  • ピリオド . を アンダースコア _ に置き換える
  • ハイフン - を 2文字のアンダースコア __ に置き換える
  • アンダースコア_ を 3文字のアンダースコア ___ に置き換える

例えば、プロパティmessage.max.bytesは環境変数KAFKA_MESSAGE_MAX_BYTESとして指定します。

環境変数の指定方法の詳細についてはConfluent Kafka configurationを参照してください。

4. 実行

docker-compose.ymlを配置したディレクトリで以下のコマンドを実行してください。

docker compose up -d

ここでは Docker Compose v2 の実行例を示しています。v1を利用している場合はdocker composeのかわりにdocker-composeを用いてください。

コンテナの状態を確認します。

$ docker compose ps 
NAME                COMMAND                  SERVICE             STATUS              PORTS
broker              "/etc/confluent/dock…"   broker              running             
zookeeper           "/etc/confluent/dock…"   zookeeper           running             

brokerコンテナzookeeperコンテナの状態(STATUS)がいずれもrunningとなっていることを確認してください。

STATUSの値がrunningとなっていない場合はコンテナのログなどを確認することによりエラーの原因を調査してください。

docker compose logs