ZooKeeperのクォータのガイド
デプロイメントと管理に関するガイド
クォータ
ZooKeeperには名前空間クォータとバイトクォータがあります。 ZooKeeperMainクラスを使用してクォータを設定できます。ZooKeeperは、ユーザーが割り当てられたクォータを超えると「WARN」メッセージを出力します。メッセージはZooKeeperのログに出力されます。
注意: 名前空間
クォータは、パス以下の子の数を制限する数クォータです(それ自体を含む)。
$ bin/zkCli.sh -server host:port**
上のコマンドでは、クォータを使用するコマンドラインオプションが表示されます。
クォータの設定
-
setquota
を使用して、ZooKeeperノードにクォータを設定できます。-n
(名前空間/数) と-b
(バイト数/データ長) でクォータを設定するオプションがあります。 -
ZooKeeperのクォータは、/zookeeper/quotaのZooKeeper自体に格納されます。他の人がクォータを変更できないようにするには、ユーザーは/zookeeper/quotaのACLを設定して、管理者だけが読み書きできるようにします。
-
指定したパスにクォータが存在しない場合は、クォータを作成します。存在する場合は、クォータを更新します。
-
ユーザーが設定するクォータのスコープは、指定したパス以下のすべてのノードです(それ自体を含む)。
-
現在のディレクトリ/階層構造のクォータの計算を簡略化するため、完全なツリーパス(ルートノードからリーフノードまで)には1つのクォータのみ設定できます。親ノードまたは子のノードにすでにクォータが設定されているパスにクォータを設定する場合、
setquota
は拒否し、特定の親パスまたは子パスを通知します。ユーザーは状況に応じてクォータの割り当てを調整できます(クォータの削除/移動アップ/移動ダウン)。 -
Chrootと組み合わせると、クォータはさまざまなアプリケーション間でより効果的に隔離されます。例えば
# Chroot is: 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/apps/app1 setquota -n 100000 /apps/app1
-
ユーザーは、/zookeeper/quota以下のパスのクォータを設定できません
-
クォータは、ソフトクォータとハードクォータをサポートしています。ソフトクォータは、クォータを超えると警告情報を記録しますが、ハードクォータは
QuotaExceededException
も発生します。同じパスにソフトクォータとハードクォータを設定する場合は、ハードクォータが優先されます。
クォータのリスト
listquotaを使用して、ZooKeeperノードのクォータをリストできます。
クォータの削除
delquotaを使用して、ZooKeeperノードのクォータを削除できます。