1.Zookeeper構成ファイル
tickTime
:クライアント/サーバー通信時間- 説明:ハートビートを維持するためのZookeeperサーバー間、またはクライアントとサーバー間の時間間隔。つまり、ハートビートはtickTimeごとに送信されます。tickTimeはミリ秒単位で、
initLimit
:リーダー-フォロワーの初期通信時間制限- 説明:クラスター内のフォロワーサーバーとリーダーサーバー間の初期接続中に許容できるハートビートの最大数(tickTimesの数)。時間は
initLimit
xですtickTime
syncLimit
:リーダー-フォロワー同期通信時間制限。- 説明:クラスター内のフォロワーサーバーとリーダーサーバー間の初期化後、要求と応答の間で許容できるハートビートの最大数(tickTimesの数)。時間は
initLimit
xですtickTime
dataDir
:データファイルディレクトリ、- 説明:Zookeeperがデータを保存するディレクトリ。デフォルトでは、Zookeeperはこのディレクトリにデータを書き込むためのログファイルも保存します。
clientPort
:クライアント接続ポート- 注:クライアントがZookeeperサーバーに接続するポート。Zookeeperはこのポートをリッスンし、クライアントのアクセス要求を受け入れます。
服务器名称与地址
:クラスター情報(サーバー番号、サーバーアドレス、LF通信ポート、選出ポート)- 注:この構成アイテムの書き込み形式は特別であり、ルールは次のとおりです。server.N= YYY:A:B
maxClientCnxns
:クライアントの接続制限の場合、デフォルトは60で、ほとんどの場合これで十分です。しかし、実際の使用では、テスト環境でこの数を超えることが多いことがわかりました。調査の結果、テストを容易にするために1台のマシンに数十のアプリケーションをデプロイしたチームがあったため、この数を超えました。autopurge.snapRetainCount
、autopurge.purgeInterval
:-クライアントはzookeeperとの対話中に多くのログを生成し、zookeeperはデータをスナップショットとしてメモリに保存します。これらのデータは自動的に削除されないため、ディスク内のデータはMoreになります。もっと。ただし、これら2つのパラメーターを設定して、zookeeperがデータを自動的に削除できるようにすることができます。- 説明:autopurge.purgeIntervalは、1回のクリーンアップにかかる時間を設定します。また、autopurge.snapRetainCountは、保持するスナップショットの数を設定し、前のスナップショットを削除します。
- 分散インストール
# server.A=B.C.D
server.1=itcast05:2888:3888
server.2=itcast06:2888:3888
server.3=itcast07:2888:3888
- パラメータの解釈:
- Aは番号で、どのサーバーがこの番号であるかを示します
- BはこのサーバーのIPアドレスです
- Cは、このサーバーがクラスター内のリーダーサーバーと情報を交換するためのポートです。
- Dは、クラスター内のリーダーサーバーがハングアップした場合に、新しいリーダーを再選して選択するためのポートが必要であることを意味します。このポートは、選出を実行するために使用され、サーバーが相互に通信するためのポートです。
- myidファイルはZookeeperのデータディレクトリの下に作成され、各サーバーのmyid値が1番目:1、2番目:2、3番目:3などに設定されます。Zookeeperはセカンダリファイルの読み取りを開始します。データをzoo.cfgの構成情報と比較して、どのサーバーであるかを判別します。
- myidの値は、server.Aの値です。zoo.cfgファイルで定義されている項目A。Zookeeperは、起動時にこのファイルを読み取り、内部のデータをzoo.cfgの構成情報と比較して、サーバーを判別します。識別機能。
2. Zookeeperの選出メカニズム、
2.1、メカニズムの半分
- クラスター内のマシンの半分以上が存続し、クラスターが使用可能であるため、Zookeeperは奇数のサーバーをインストールするのに適しています。
- Zookeeperは構成ファイルでマスターとスレーブを指定しませんが、Zookeeperが機能する場合、1つのノードがリーダーで、他のノードがフォロワーです。リーダーは、内部選択メカニズムによって一時的に生成されます。
- 5つの動物園管理サーバーがあり、1つは起動時に起動し、最初のサーバーが起動すると投票を開始するとしますが、投票できるのは自分だけ(<3)なので、リーダーになることはできません。投票できないIDが大きいサーバーにしか投票できないため、3番目のサーバーが起動すると、最初の2つのサーバーからの投票の半分以上が追加され、3番目のサーバーがリーダーになります。リーダーが決定されている限り、背後にあるサーバーはフォロワーにしかなれません。
3.ノードのタイプ
3.1、永続的
- 永続ノードディレクトリ:クライアントとサーバーが切断された後、作成されたノードは削除されません
- 永続シーケンス番号ディレクトリノード:クライアントがZookeeperから切断した後もノードは存在しますが、Zookeeperはノード名に連番を付けます(注:znodeの作成時にシーケンス識別子を設定すると、値とシーケンス番号がznodeに追加されますnameは単調に増加するカウンターであり、親ノードによって維持されます)
- 注:分散システムでは、シーケンス番号を使用してすべてのイベントをグローバルにソートできるため、クライアントはシーケンス番号からイベントのシーケンスを推測できます。たとえば、どのサーバーが最初に起動するか、どのサーバーに問題があるかなどです。 。
3.2。エフェメラル
- 一時ディレクトリノード:クライアントとサーバーが切断された後、作成されたノードは自動的に削除されます。
- ディレクトリノードの一時的な連番:クライアントとサーバーが切断された後、作成されたノードは自動的に削除されます。Zookeeperだけがノード名に連番を付けます。
4.クライアントシェルコマンド
ls /
:ビューノードls2 /
:ノードの詳細を表示get path
:ノードの値を表示するcreate -e path
:一時ノードを作成しますcreate -s path
:シーケンス番号ノードを作成しますset path data
:ノードの値を変更しますget path data watch
:ノードの特定の値の変化を監視しますls path watch
:ノード変更の監視(パス)delete path
:ノードを削除rmr path
:ノードを再帰的に削除する
5.塩の構造