only exposed by the Leader

Apache ZooKeeperにおいて、4文字コマンド`mntr`で取得できる項目の中から”Leader“のZooKeeperサーバだけが返す項目があるようである。

■ 環境

  • Apache ZooKeeper 3.4.6
  • Amazon Linux

■ mntr

先日のエントリでは、接続した先がStandaloneであったので気がつかなかった。アンサンブルが構築されたZooKeeperでLeaderに接続した時にのみ出力される項目があるようであるので確認する。

Standalone:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  41
zk_min_latency  0
zk_packets_received     13484768
zk_packets_sent 13485026
zk_num_alive_connections        6
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count  60
zk_watch_count  4
zk_ephemerals_count     2
zk_approximate_data_size        13453
zk_open_file_descriptor_count   37
zk_max_file_descriptor_count    4096
$

Follower:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  6843
zk_min_latency  0
zk_packets_received     5556397
zk_packets_sent 5535538
zk_num_alive_connections        16
zk_outstanding_requests 0
zk_server_state follower
zk_znode_count  142
zk_watch_count  6
zk_ephemerals_count     26
zk_approximate_data_size        249939
zk_open_file_descriptor_count   43
zk_max_file_descriptor_count    32768
$

Leader:

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  899
zk_min_latency  0
zk_packets_received     18389509
zk_packets_sent 18368737
zk_num_alive_connections        25
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count  142
zk_watch_count  31
zk_ephemerals_count     26
zk_approximate_data_size        250020
zk_open_file_descriptor_count   54
zk_max_file_descriptor_count    32768
zk_followers    2
zk_synced_followers     2
zk_pending_syncs        0
$

なるほど。確かに下記3つの項目がLeaderにのみ出力されている。

  • zk_followers
  • zk_synced_followers
  • zk_pending_syncs

今回接続した先は、3台でアンサンブルを構築しているので、正常に同期が取れているFollowerが2台ある、ということである。

また、下記2項目についてはUnix系のOSでしか取得できないとのことだ。

  • zk_open_file_descriptor_count
  • zk_max_file_descriptor_count

手元にWindows系で動かしているZooKeeperが無いので確認はできないが。

以上。

■ 関連

ZooKeeper Open File Descriptor Count

Apache ZooKeeperにおいて表題の事を調べる。

■ 環境

  • Apache ZooKeeper 3.4.6
  • Amazon Linux

■ zk_open_file_descriptor_count

4文字コマンド”mntr“で”zk_open_file_descriptor_count“の数値が得られる。試しにLinux上で稼働させているZooKeeperに対して実行してみると下記の通りである。

$ echo mntr | nc localhost 2181
zk_version      3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency  0
zk_max_latency  41
zk_min_latency  0
zk_packets_received     12317736
zk_packets_sent 12317994
zk_num_alive_connections        6
zk_outstanding_requests 0
zk_server_state standalone
zk_znode_count  60
zk_watch_count  4
zk_ephemerals_count     2
zk_approximate_data_size        13453
zk_open_file_descriptor_count   35
zk_max_file_descriptor_count    4096
$

ここで得られる”35“という数値が正しいのか?を確認したい。まずはZooKeeperのPIDを確認。

$ jps
18518 QuorumPeerMain
19295 Jps
$

PIDが分かれば”/proc“配下を見れば分かるであろう。

$ sudo ls /proc/18518/fd | wc
     34      34      92
$

34“が得られた。4文字コマンドを実行する時の接続が”1“追加されるので計”35“が確かに正しい値を取得できている。実際にどのファイル等が開かれているかは、`ls -l`で見ればわかるであろう。

以上。

■ 関連

ZooKeeperサーバの詳細を取得

Apache ZooKeeperにおいて表題の通り。

■ 環境

  • Apache ZooKeeper 3.4.6
  • Mac OSX (10.10.5)

■ srvr

4文字コマンド`srvr`で得られる内容を確認する。

$ echo srvr | nc localhost 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Latency min/avg/max: 0/0/71
Received: 2077
Sent: 2083
Connections: 8
Outstanding: 0
Zxid: 0x112c
Mode: standalone
Node count: 12
$

これを見るとZooKeeperサーバの概要が窺えるであろう。ちなみに上記の結果はローカルで稼働させているZooKeeperである。”Mode“に”standalone“とある通りensambleは組んでいない。

ちなみに3台でensambleを組んでいる場合には下記のように取得できた。

$ echo srvr | nc localhost 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Latency min/avg/max: 0/0/966
Received: 5052638
Sent: 5031695
Connections: 18
Outstanding: 0
Zxid: 0x100269298
Mode: follower
Node count: 142
$

上記の場合は、4文字コマンドで取得しているZooKeeperサーバが”follower“であることがわかるだろう。その他2台に確認してみると、”leader“も発見できるであろう。

以上。

Macで稼働中のZooKeeperを3.4.6に変更

表題の通り。先日のエントリの通り、Apache ZooKeeperの”3.4.7“はバグがあるらしく現在は公開されていない。既に”3.4.7“にupgradeしてしまっているので、一旦”3.4.6“に切り戻すことにする。

■ 環境

  • Apache ZooKeeper 3.4.6, 3.4.7
  • Mac OSX (10.10.5)
  • Homebrew

■ 現状

確認する。

$ brew info zookeeper
zookeeper: stable 3.4.7 (bottled), HEAD
Centralized server for distributed coordination of services
https://zookeeper.apache.org/
/usr/local/Cellar/zookeeper/3.4.6_1 (208 files, 12.9M)
  Poured from bottle
/usr/local/Cellar/zookeeper/3.4.7 (236 files, 17.1M) *
  Poured from bottle
  :

3.4.6_1“のFormulaも残っているので、以前のエントリの通りversionを指定して`switch`する。

Homebrewで過去versionを指定

$ brew switch zookeeper 3.4.6_1
Cleaning /usr/local/Cellar/zookeeper/3.4.6_1
Cleaning /usr/local/Cellar/zookeeper/3.4.7
13 links created for /usr/local/Cellar/zookeeper/3.4.6_1
$
$ brew info zookeeper
zookeeper: stable 3.4.7 (bottled), HEAD
Centralized server for distributed coordination of services
https://zookeeper.apache.org/
/usr/local/Cellar/zookeeper/3.4.6_1 (208 files, 12.9M) *
  Poured from bottle
/usr/local/Cellar/zookeeper/3.4.7 (236 files, 17.1M)
  Poured from bottle
 :

実際に起動してversionを確認。

$ zkServer start
JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo.cfg
Starting zookeeper ... STARTED
$
$ echo mntr | nc localhost 2181
zk_version    3.4.6-1569965, built on 02/20/2014 09:09 GMT
 :

問題なさそうである。”3.4.8“がリリースされるまでこれでいく。

以上。

■ 関連

ZooKeeper 3.4.7

Apache ZooKeeperにおいて表題のversionについて。

■ 環境

  • Apache ZooKeeper 3.4.7

■ 状況

現在、公式のページを見てもリリースされたはずの”3.4.7“が表示されていない。

http://zookeeper.apache.org/

どうやら致命的なバグがあったらしく切り戻しをしたようである。

https://issues.apache.org/jira/browse/ZOOKEEPER-2347

上記のISSUEがそのチケットのようだ。デッドロックが発生する場合があるようである。次の”3.4.8“で対応される様子だ。もうそろそろリリースが来るのであろうか。

3.4.8“がリリースされるまでは”3.4.6“を使用するのが良いようである。

以上。

■ 関連