zookeeper は奇数単位でアンサンブルと呼ぶクラスタを組む。
3台のアンサンブルだろうが5台のアンサンブルだろうが、その中の1台が書き込みを調停・受理するリーダーとなる。他のサーバはフォロワーと呼ばれ、リーダーのリードオンリーレプリカとなる。
zookeeperの可用性は、アンサンブル中、過半数のサーバが生きていれば機能する。
ZAB(ZookeeperAtomicBroadcast)というプロトコルで実現してる。
つまりアンサンブル中にはリーダーとフォロワーがいる。
その確認コマンドが以下である。
echo stat | nc localhost 2181
※ほかにもstat,dump,enviなどがある
例:
●フォロワー
[root@server2]# echo srvr | nc localhost 2181
Zookeeper version: 3.4.3-cdh4.1.1--1, built on 1/1/2012 17:34 GMT
Latency min/avg/max: 0/0/33
Received: 1867
Sent: 1878
Outstanding: 0
Zxid: 0x100000092
Mode: follower
Node count: 16
●リーダー
[root@server1]# echo srvr | nc localhost 2181
Zookeeper version: 3.4.3-cdh4.1.1--1, built on 1/1/2012 17:34 GMT
Latency min/avg/max: 0/0/15
Received: 8104
Sent: 8124
Outstanding: 0
Zxid: 0x100000092
Mode: leader
Node count: 16
今が旬の分散システム、その調停役として、HBaseやSorlなどで大活躍だが影がうすい。。
かなり重要な役割を担ってるが影が薄い。。
バグった時だけ脚光を浴びるというインフラのような存在。。
zookeeperはロック、排他制御、同期、ウォッチャー(死活監視)等を行う。