Kafka クラスタを構築してみる
前回は Mac OS X 上に Kafka の実行環境を構築することをやってみました。
今回は少し発展させてクラスタ構築を行ってみようと思います。
(今回は2台の Broker によって構成されるクラスタを構築しようと思います)
前準備
前回の記事を参考にバイナリのダウンロードし、展開しておきましょう。
設定ファイルの作成
各 Broker に使用する設定ファイルを作成していきます (broker.id 以外全て同じ内容になっています) 。
$ vim config/server.properties # 変更箇所の抜粋 broker.id=1 # 1台目の Kafka には1、2台目の Kafka には2を割り当てました log.dirs=/var/kafka-logs # データを保管するディレクトリの指定 (指定したディレクトリがない場合は作成しておきましょう) zookeeper.connect=zk001.ponteru1:2181 # ZooKeeperの接続先を設定
ZooKeeper のクラスタ構築に関しては以下の記事を参考にしてください。
動作確認
クラスタの起動
それでは実際に起動してみてクラスタが構成されているか確認してみようと思います。
前回の記事で紹介した起動コマンドを全 Broker で実行します。
$ bin/kafka-server-start.sh config/server.properties
Topicの作成 & 確認
今回は Broker が2台なので replication factor を2にして Topic を作成したいと思います。
$ bin/kafka-topics.sh --create --zookeeper zk001.ponteru:2181 --replication-factor 2 --partitions 1 --topic sample-topic
Topic の作成がうまくいったらリーダーとレプリカの確認をしてみましょう。
$ bin/kafka-topics.sh --describe --zookeeper zk001.ponteru:2181 --topic sample-topic
上記のコマンドを実行すると以下の内容が取得できます。
変数名 | 説明 |
---|---|
Leader | リーダーとして選出されている Broker の broker.id |
Replicas | レプリケーションが行われる Broker のリスト (ノードの死活は関係なく表示される) |
Isr | In-sync replicas の略 (Broker が生存 & リーダーと同期が取れている) |
実際の実行結果は以下のとおり。
$ bin/kafka-topics.sh --describe --zookeeper zk001.ponteru:2181 --topic sample-topic Topic:sample-topic PartitionCount:1 ReplicationFactor:2 Configs: Topic: sample-topic Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
上記の結果から broker.id=1 の Broker がリーダーとなっていることが分かりました。
リーダーを落としてみる
リーダーの選出が行われていることが確認できたので、リーダーを落とした場合 broker.id=2 の Broker にリーダー権限が移るか確認してみましょう。
# とりあえず stop してみる。 $ bin/kafka-server-stop.sh # Kafka プロセスが表示されないことを確認 $ sudo jps | grep Kafka
リーダーが停止したことを確認できたら、先ほど実行したコマンドを再度実行してリーダーが変わっているか確認してます。
$ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic sample-topic Topic:sample-topic PartitionCount:1 ReplicationFactor:2 Configs: Topic: sample-topic Partition: 0 Leader: 2 Replicas: 1,2 Isr: 2
リーダーが broker.id=2 の Broker になっていること、in-sync replicas から borker.id=1 の Broker がいなくなっていることから、問題なくリーダーが変更されたことが分かりました。
まとめ
今回は Kafka のクラスタを構築してみました。
簡単にクラスタを構築することができるので個人的にクラスタ構築をして色々と検証を行うこともできると思います。
ぜひ Kafka クラスタを構築して遊んでみましょう!