ディレクトリ
の原則を紹介
ZooKeeperのは、プリミティブの簡単なセット、その同期サービス、メンテナンスおよびコンフィギュレーションのネーミングサービスに基づく分散アプリケーションを含むアプリケーションの連携サービスを、分散型オープンソースです。
飼育係に設計
- 結果整合性:クライアントサーバーに接続するかどうかは、それが同じビューに提示されます。
- 信頼性:メッセージmをサーバに受信された場合は、シンプルで堅牢で、良好なパフォーマンスは、メッセージmは、すべてのサーバで受信されます。
- リアルタイム:飼育係は、クライアントが時間間隔の範囲、または情報サーバの障害の中に更新された情報サーバを受け取ることを確認してください。しかし、ネットワークの遅延やその他の理由のために、飼育係は、2つのクライアントが同時にデータ()インターフェースを読む前に同期を呼び出す必要がちょうど更新されたデータ、必要に応じて最新のデータを受信することができることを保証するものではありませ。
- 待機中(WAIT-無料)ではありません:各クライアントが効果的に待つことができるように遅いやクライアントの失敗は、すぐにクライアントの要求に干渉してはなりません。
- 原子性:アップデートだけ成功したか失敗したか、ない中間状態。
- シーケンス:半順序とは、グローバル順序二つのタイプが含まれます。メッセージの前にメッセージがサーバBに掲載されている場合、メッセージはすべてのBサーバーの前にメッセージに掲載されますことを世界秩序手段を、半順序手段そのメッセージ送信後のポストBメッセージ同じであれば、結合したBの前に行。
飼育係作品
ZooKeeperのクラスタでは、各ノードの役割との4つの状態の以下の3種類があります。
- 役割:リーダー、フォロワー、オブザーバー
- 状态:大手、以下、探して、観察
飼育係は、原子放送の中核であり、この機構は、様々なサーバ間の同期を保証します。このメカニズムのプロトコル実装はザブプロトコル(ZooKeeperのアトミックブロードキャストプロトコル)と呼ばれています。ザブプロトコルモードと、放送(ブロードキャスト同期)(マスタリカバリから選択される)、リカバリモードである二つのモードを有します。サービスを開始またはリーダーがクラッシュした後は、ザブは、リーダーが選出され、ほとんどのサーバーの同期と国家の指導者の後に終了したリカバリーモードに入ったときは、リカバリモードは終わりました。状態同期は指導者を確保し、サーバーは、同じシステムの状態を持っています。
業務の順序の一貫性を確保するために、トランザクションを識別するために増加トランザクションID番号(zxid)を使用して飼育係。すべての提案(案)をzxid時に追加することが提案されています。実装zxidがリーダーとの間の関係を識別するために使用される高32エポックは、リーダーが選出されるたびに変更されているである64ビットの数である、それは新しい時代、指導者の治世に属する現在のロゴを持っています。低カウントのため32。
各サーバーの自分の仕事の過程で、4つの状態があります。
- LOOKING:現在のサーバがリーダーが誰であるかを知らない、私たちは、探しています。
- LEADING:現在のサーバが選出されたリーダーです。
- 次のようなリーダーが選出された、現在のサーバーに同期化します。
- フォロワーと、ほとんどの場合、観測者の行為とまったく同じ、しかし、彼らは選挙や投票に参加しませんが、結果のみ(観察)選挙や投票を受け入れるために:観察。
飼育係のクラスタノード
- 飼育係のクラスタは、クラスタ全体のダウンタイムを行います半分以上の数がダウンしているため、高い、より多くのノードが展開されているサービス、ノード数が奇数の提案展開の信頼性を飼育係。
- 独立したディスクは、高いパフォーマンスを確保するためのZooKeeperので、私たちは、可能な場合は好ましくは別々のディスクで、1Gのメモリについては、各飼育係を与える必要があります。クラスタの負荷が重い場合、DataNodesと同じTaskTrackersとして、飼育係と上記と同じマシン上でリージョンサーバーで実行しないでください。
飼育係のクラスタのインストール
Java環境を実行するための飼育係の必要性は、JDKをインストールする必要があります
注:各サーバのニーズが、飼育係は、JDKの上にインストールするにはローカルのダウンロードに必要なインストールパッケージを推奨して、上記のサーバーにアップロード、上記のサーバーのダウンロード速度が遅すぎます。
環境機器
ホスト名 | システム | IPアドレス | ZKバージョン | JDKバージョン |
---|---|---|---|---|
node01 | Centos7.5 | 172.16.1.11 | 3.4.13 | 1.8.0_192 |
node02 | Centos7.5 | 172.16.1.12 | 3.4.13 | 1.8.0_192 |
node03の | Centos7.5 | 172.16.1.13 | 3.4.13 | 1.8.0_192 |
JDKのインストール
私たちは、3台のマシンがオンになっている次の手順を実行する必要があります
JDKの公式ウェブサイトをダウンロードします。http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK Baiduのネットワークディスクのダウンロード:https://pan.baidu.com/s/1FY90URiD6vEtnckR0kRSFQ抽出コード:aiou
3台のサーバにアップロードダウンロードした後。
最初のステップ次の例では、他のサーバの背後にある二人は、このステップを操作する必要があります。
cd /opt/soft/
unzip jdk1.8.0_192.zip
mv jdk1.8.0_192 /opt/
ln -s /opt/jdk1.8.0_192 /opt/jdk
ll /opt/jdk* -d
# lrwxrwxrwx 1 root root 17 Mar 1 00:02 /opt/jdk -> /opt/jdk1.8.0_192
# drwxr-xr-x 7 root root 245 Oct 6 2018 /opt/jdk1.8.0_192
rootユーザのための唯一の単一の構成ではなく、地球環境変数を配置し、環境変数を設定。
cat >> /root/.bash_profile<<EOF
export JAVA_HOME=/opt/jdk
export JRE_HOME=\$JAVA_HOME/jre
export PATH=\$PATH:\$JAVA_HOME/bin
export CLASSPATH=./:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib
EOF
source /root/.bash_profile
java -version
# java version "1.8.0_192"
# Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
# Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
飼育係のインストール
- ます。https://pan.baidu.com/s/1QP9RLVj0ikKwhPf98rYjOA抽出コード:dmw6ネットワークディスクリンクBaiduの
- 飼育係のダウンロードリンクアドレスします。https://archive.apache.org/dist/zookeeper/
- 公式サイト:のhttp://zookeeper.apache.org/
私たちは、3台のマシンがオンになっている次の手順を実行する必要があります
# 需要添加所有机器自身的主机名解析
echo >> /etc/hosts <EOF
172.16.1.11 node01
172.16.1.12 node02
172.16.1.13 node03
EOF
cd /opt/soft/
tar xf zookeeper-3.4.13.tar.gz
mv zookeeper-3.4.13 /opt/
ln -s /opt/zookeeper-3.4.13 /opt/zookeeper_cluster
ls -ld /opt/zookeeper*
# drwxr-xr-x 10 501 games 4096 Jul 1 2018 /opt/zookeeper-3.4.13
# lrwxrwxrwx 1 root root 21 Mar 1 00:50 /opt/zookeeper_cluster -> /opt/zookeeper-3.4.13
コンフィギュレーション
node01のノードの構成
mkdir /opt/zookeeper_cluster/{data,logs}
echo "1" > /opt/zookeeper_cluster/data/myid
cd /opt/zookeeper_cluster/conf/
cat > zoo.cfg <<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper_cluster/logs
dataDir=/opt/zookeeper_cluster/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=172.16.1.11:2888:3888
server.2=172.16.1.12:2888:3888
server.3=172.16.1.13:2888:3888
EOF
node02でノードの構成
mkdir /opt/zookeeper_cluster/{data,logs}
echo "2" > /opt/zookeeper_cluster/data/myid
cd /opt/zookeeper_cluster/conf/
cat > zoo.cfg <<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper_cluster/logs
dataDir=/opt/zookeeper_cluster/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=172.16.1.11:2888:3888
server.2=172.16.1.12:2888:3888
server.3=172.16.1.13:2888:3888
EOF
node03のノードの構成
mkdir /opt/zookeeper_cluster/{data,logs}
echo "3" > /opt/zookeeper_cluster/data/myid
cd /opt/zookeeper_cluster/conf/
cat > zoo.cfg <<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper_cluster/logs
dataDir=/opt/zookeeper_cluster/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=172.16.1.11:2888:3888
server.2=172.16.1.12:2888:3888
server.3=172.16.1.13:2888:3888
EOF
アップとサービスの状態を確認
# 三个节点都执行
/opt/zookeeper_cluster/bin/zkServer.sh start
node01
[root@node01 bin]# /opt/zookeeper_cluster/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper_cluster/bin/../conf/zoo.cfg
Mode: follower
node02
[root@node02 bin]#/opt/zookeeper_cluster/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper_cluster/bin/../conf/zoo.cfg
Mode: follower
node03の
[root@node03 bin]# /opt/zookeeper_cluster/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper_cluster/bin/../conf/zoo.cfg
Mode: leader