ZooKeeper:Kafka=1アンサンブル:2クラスタ

1つのApache ZooKeeperに、Apache Kafkaの2クラスタを管理させてみる。

■ 環境

  • Apache ZooKeeper 3.4.6
  • Apache Kafka 0.8.2.1
  • Mac OSX (10.10.5)

■ ZooKeeper

HomebrewでインストールしたものをStandaloneで起動する。設定はデフォルトまま。

$ zkServer start
JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo.cfg
Starting zookeeper ... STARTED
$

ちなみにデータは事前に空にしておいた。”zoo.cfg“の”dataDir“で設定しているディレクトリをすべて削除してある。

■ Kafka

1つめのKafkaクラスタを起動する。クラスタと言っても今回は1台のみとしている。設定ファイルは下記を編集した。

  • port
  • log.dirs
  • zookeeper.connect

今回は1つのホスト上(Mac)にKafkaを2プロセス稼働させているので、”port“と”log.dirs“も編集する必要があった。

$ cd /usr/local/etc/kafka
$ cp server.properties server1.properties
$ vi server1.properties
  :
port=9092
  :
log.dirs=/usr/local/var/lib/kafka-logs/kafka1
  :
zookeeper.connect=localhost:2181/kafka1
  :
$

1つ目のKafkaの設定は以上。項目を抜き出すと下記。

  • port=9092
  • log.dirs=/usr/local/var/lib/kafka-logs/kafka1
  • zookeeper.connect=localhost:2181/kafka1

起動する。

$ kafka-server-start.sh -daemon /usr/local/etc/kafka/server1.properties

続いて2つ目のKafkaを起動する。設定ファイルは”server2.properties“とし、下記項目を編集している。

  • port=9093
  • log.dirs=/usr/local/var/lib/kafka-logs/kafka2
  • zookeeper.connect=localhost:2181/kafka2

起動する。

$ kafka-server-start.sh -daemon /usr/local/etc/kafka/server2.properties

プロセスを確認。

$ jps
72016 Jps
72003 Kafka
71994 QuorumPeerMain
72014 Kafka
$

Kafka“が2つ稼働していることがわかる。

■ znode

続いてznodeを確認してみる。

$ zkCli
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is enabled
[zk: localhost:2181(CONNECTED) 0] ls /
[kafka2, zookeeper, kafka1]
[zk: localhost:2181(CONNECTED) 1] ls /kafka1
[admin, consumers, controller, controller_epoch, brokers, config]
[zk: localhost:2181(CONNECTED) 2]
[zk: localhost:2181(CONNECTED) 2] ls /kafka2
[admin, consumers, controller, controller_epoch, brokers, config]
[zk: localhost:2181(CONNECTED) 3]
[zk: localhost:2181(CONNECTED) 3]

それぞれ別のznodeとなり、1組のZooKeeperアンサンブルで複数のKafkaクラスタを管理できることがわかる。今回は1台のMac上でKafkaを複数プロセス稼働させているので設定項目も増えてしまったが、本来の使い方であれば”zookeeper.connect“の設定のみでいけるであろう。

以上。

■ 関連