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“の設定のみでいけるであろう。
以上。