Kafkaクラスタを稼働

Apache Kafkaにおいて表題の通り。Mac上でKafkaサーバ(Broker)を2プロセス起動し稼働させてみる。

■ 環境

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

■ ZooKeeper

Kafkaをインストールした際の下記で起動しても良いのだが、せっかくなので以前インストール済みのZooKeeperを用いる。

$ ls -l /usr/local/Cellar/kafka/0.8.2.1/bin/zookeeper-s*
-r-xr-xr-x  1 withsin  admin  147  11  2  2015 /usr/local/Cellar/kafka/0.8.2.1/bin/zookeeper-server-start.sh
-r-xr-xr-x  1 withsin  admin  146  11  2  2015 /usr/local/Cellar/kafka/0.8.2.1/bin/zookeeper-server-stop.sh
-r-xr-xr-x  1 withsin  admin  140  11  2  2015 /usr/local/Cellar/kafka/0.8.2.1/bin/zookeeper-shell.sh
$

ZooKeeperを起動する。ZooKeeperはアンサンブルではなく”standalone“で稼働させる。

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

■ Kafka

server.properties“は2つ用意した。

$ cp /usr/local/etc/kafka/server.properties ./server1.properties
$ cp server1.properties server2.properties
$ ls
server1.properties server2.properties
$

デフォルトの”server.properties“から編集した点は下記の通り。

  • broker.id: 1, 2
  • port: 9091, 9092
  • log.dirs: /tmp/kafka/1, /tmp/kafka/2

log.dirs“で指定したディレクトリは事前に作成しておく。

$ mkdir -p /tmp/kafka/{1,2}

ちなみに”log.dirs“は項目からもわかる通り、複数指定することも可能であるが、今回はそれぞれ1ディレクトリを指定している。

あとはKafkaのログ出力先を起動時に環境変数”LOG_DIR“で渡す。

$ LOG_DIR=/tmp/kafka/1 kafka-server-start.sh -daemon ./server1.properties
$ LOG_DIR=/tmp/kafka/2 kafka-server-start.sh -daemon ./server2.properties
$
$ jps
38002 Kafka
38003 Jps
37688 QuorumPeerMain
37980 Kafka
$

プロセスも稼働しているようであるし、それぞれのログを確認してみる。

$ tail /tmp/kafka/1/server.log
  :
[2015-11-04 19:14:49,426] INFO [Kafka Server 1], started (kafka.server.KafkaServer)
[2015-11-04 19:14:49,468] INFO New leader is 1 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
$
$ tail /tmp/kafka/2/server.log
  :
[2015-11-04 19:15:54,395] INFO [Kafka Server 2], started (kafka.server.KafkaServer)

broker.id“を”1“で起動しているKafkaをリーダーとして稼働していることがわかる。

■ znode確認

ZooKeeperに格納されているBrokerの情報を確認する。

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

問題なさそうである。

今後はこのKafkaクラスタに対して行ってみることにする。

以上。

■ 関連