はじめに
ZooKeeperアンサンブルとは、奇数台数によるZookeeperサーバのまとまりのことである。
ZooKeeperアンサンブルでは、リーダー選出という機構が備わっており、全ての書き込み処理系は奇数台のアンサンブルの中から選出されるリーダーとなるサーバを通して処理される。そのリーダーが選出されるタイミングは以下の2つである。
- 障害等によりリーダーに選出されているサーバが停止し、リーダーであることを放棄した時
- Zookeeperサーバの起動時
leader、followerのノードを確認する
3台のZookeeperサーバを用いてアンサンブルを組んでいると想定する。以下の例では、Ubuntu 14.04を利用し、Zookeeperはaptリポジトリを用いている。3台のうち、zookeeper1のサーバがleaderに選出されていると想定する。以下のコマンドを実行することで各サーバがleaderなのかfollowerなのか確認できる。
zookeeper1
# /usr/share/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: leader
zookeeper2
# /usr/share/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: follower
zookeeper3
# /usr/share/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: follower
この状態でzookeeper1のプロセスを再起動する。
zookeeper1
# service zookeeper restart
再起動後、モードがleaderではなくfollowerに切り替わっている。
zookeeper1
# /usr/share/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: follower
その状態で、zookeeper2の状態を確認するとleaderに切り替わっていることが分かる。
zookeeper2
# /usr/share/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /etc/zookeeper/conf/zoo.cfg
Mode: leader