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クラスタに対して行ってみることにする。
以上。