新米インフラエンジニアの研修日記

とある会社で研修させて頂いたことを書いてます。

Zookeeper

  • Zookeeperとは

  • 構成

  • インストール

  • 設定方法


Zookeeperとは

正式にはApache Zookeeper
大規模分散システムでよく使われる、
Hadoopのサブプロジェクト の一つです。

分散アプリケーションを構築する上で必要となる、
設定管理、同期などの機能を提供するサービスです。

自前で同じものを用意しようとしたらすごく大変なので、
すごく助かるミドルウェアです。

構成

今回は、サーバー3台で構築しました。

OSは、CentOS6.7です。
Zookeeperは、3.4.8です。

インストール


Javaで動かすので、JDKをインストールします。
JDK
Java SE Development Kit 8 - Downloads

qiita.com

cd /tmp/
# wget --no-check-certificate --no-cookies - --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm
# rpm -Uhv jdk-8u45-linux-x64.rpm


Zookeeper本体
Apache ZooKeeper - Releases

ダウンロードして任意の場所に解答するだけでOKです。


設定方法

oss.infoscience.co.jp

zoo.cfgを作るように書いてあるのですが、
confの中にzoo_sample.cfgがあるので、コピーしてzoo.cfgを作ります。

conf/zoo.confに以下を追記
※zoo1, zoo2, zoo3 のところは各サーバーのIPアドレスを書きます。

server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888


server.XのX部分の数字を
それぞれzoo1~3の/tmp/zookeeoer/myidに書く。

# mkdir -p   /tmp/zookeeper
# echo '1' > /tmp/zookeeoer/myid

# mkdir -p   /tmp/zookeeper
# echo '2' > /tmp/zookeeoer/myid

# mkdir -p   /tmp/zookeeper
# echo '3' > /tmp/zookeeoer/myid


上記を3台すべてのサーバに用意します。

3台すべてのサーバで

bin/zkServer.sh start

を実行し、

bin/zkServer.sh status

をすると、

1台は

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader

2台は

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: follower

が表示されます。


leaderはランダムで自動的に決まります。
そして、leaderをshutdownした場合、
残り2台のうちどちらかのサーバがleaderになります。

起動時

f:id:the-casket-of-star:20160417023703p:plain


leaderのサーバが壊れたor落ちた

f:id:the-casket-of-star:20160417023957p:plain