I.概要
1.1はじめに
飼育係は、分散アプリケーションのためのApacheプロジェクトコーディネーションサービスを提供し、分散型オープンソースであり、
1.2、作業のメカニズム
理解するための設計の観点から飼育係モード:これらのデータの状態が変化すると、飼育係のデータストレージとみんなに心配の管理を担当し、その後、観察者の登録を受け付けるサービスベースの分散管理フレームワークのオブザーバーデザインパターンであり、これは、飼育係に通知を担当してきました。オブザーバーに登録されたものがそれに応じて反応します。
1.3特長
1)飼育係:リーダー(リーダー)からなるクラスタ、より多くのフォロワー(フォロワー)。
2)限り、複数のクラスタ・ノードの生存率の半分以下として、飼育係クラスタは通常のサービスすることができるであろう。
一貫性のある3)グローバルデータ:各サーバーはデータの同一コピーを保持して、クライアントに関係なく、サーバーに接続しているのは、データが一致しています。
4)が順次更新要求、同じクライアントからの更新要求は、それらが送信された順序で実行されます。
5)データ更新アトミック、成功か失敗のどちらかのデータ更新。
6)リアルタイム、一定時間内に、クライアントが最新のデータを読み取ることができます。
1.4、データ構造
ZooKeeperのデータモデル構造およびUnixファイルシステムが類似している、全体のツリーとして見ることができ、各ノードは、のznodeと呼ばれます。データを記憶することができるそれぞれのznodeデフォルトの1メガバイトは、それぞれのznodeを一意にパスによって識別されます。
znode 4種類の合計:持続的(永続的な)、一時的な(はかない)が、注文(persistent_sequential)と、一時的に(ephemeral_sequential)を注文したラスティング。
1.5、アプリケーションのシナリオ
提供されるサービスが含まれます:、統一構成管理、統一されたクラスタ管理、オフラインのダイナミック・サーバ・ノード、ソフト負荷分散サービスを命名統一します。
他の成分と組み合わせて使用される1.6、
クラスタ内の選挙のメインのノードが利用可能なサーバを追跡し、クラスタを保存するためのHBase、ZooKeeperの中のメタデータ:HBaseの
カフカ:ZooKeeperの、中にはカフカのクラッシュを検出するための、テーマに(トピック)の調査結果を実現すると生産と消費の状況のテーマを保ちます
第二に、クラスタの展開
前提
①クラスタ少なくともノード半数生存率は、クラスタの数は、好ましくは奇数、3つの最小値である
JDKインストールする必要があります②各サーバークラスタ
③ノード時間/タイムゾーンの同期
④クラスターの無料の漏れない内部を
ローカルおよび解析のためのホスト名を変更⑤
クラスター計画:ノード1で展開飼育係、ノード2、ノード3の3つのノード
2.1、JDKのインストール
古いバージョンのアンインストール
rpm -qa | grep openjdk | xargs rpm -e --nodeps
インストールディレクトリを作成します。
mkdir -p /usr/lib/jvm/jdk1.8.0_73
インストール
tar -xvzf jdk-8u73-linux-x64.tar.gz -C /usr/lib/jvm
/ etc / profileを内に環境変数を追加します。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_73
export JRE_HOME=/usr/lib/jvm/jdk1.8.0_73/jre
export CLASSPATH=.:/usr/lib/jvm/jdk1.8.0_73/lib:/usr/lib/jvm/jdk1.8.0_73/jre/lib
export PATH=$PATH:/usr/lib/jvm/jdk1.8.0_73/bin
環境変数を再読み込み
source /etc/profile
2.2、ZK実装(各ノードクラスタ)
インストールディレクトリを抽出するには
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
ディレクトリを作成しますzkData
mkdir -p /opt/zookeeper-3.4.9/data
MYIDファイルの作成、ファイル内のサーバーに対応する番号を追加
echo "1" > /opt/zookeeper-3.4.9/data/myid
2.3コンフィギュレーションファイル(クラスタノード)を変更
このディレクトリzoo_sample.cfg /opt/zookeeper-3.4.9/conf改名zoo.cfgです
mv zoo_sample.cfg zoo.cfg
データ格納ディレクトリを変更します。
dataDir=/opt/zookeeper-3.4.9/data
dataLogDir=/opt/zookeeper-3.4.9/logs
次の設定を追加します。
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
#此处的1为data目录下myid的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
#node1为zk节点的主机名,前提是已经做好本地解析
#2888是follower与leader交换信息的端口
#3888是用于执行选举leader时相互通信的端口
#ZooKeeper服务器在启动时从一个名为zoo.cfg的配置文件读取所有 选项,多个服务器如果角色相似,同时基本配置信息一样,就可以共享 一个文件。data目录下的myid文件用于区分各个服务器,对每个服务器 来说,data目录必须是唯一的,因此这个目录可以更加方便地保存一些 差异化文件。服务器ID将myid文件作为一个索引引入到配置文件中。
他の構成
tickTime =2000 #通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
initLimit =10 #LF初始通信时限
syncLimit =5 #LF同步通信时限
clientPort =2181 #客户端连接端口
zkEnv.sh:ログ保存ディレクトリを変更ZK
sed -i 's/ZOO_LOG_DIR="."/ZOO_LOG_DIR="\/opt\/zookeeper-3.4.9\/logs"/g' /opt/zookeeper-3.4.9/bin/zkEnv.sh
sed -i 's/ZOO_LOG4J_PROP="INFO,CONSOLE"/ZOO_LOG4J_PROP="DEBUG,ROLLINGFILE"/g' /opt/zookeeper-3.4.9/bin/zkEnv.sh
log4j.properties:log4jの設定ファイルを変更しZK
sed -i 's/zookeeper.root.logger=INFO, CONSOLE/zookeeper.root.logger=INFO, ROLLINGFILE/g' /opt/zookeeper-3.4.9/conf/log4j.properties
sed -i 's/zookeeper.log.dir=./zookeeper.log.dir=\/opt\/zookeeper-3.4.9\/logs/g' /opt/zookeeper-3.4.9/conf/log4j.properties
sed -i 's/zookeeper.tracelog.dir=./zookeeper.tracelog.dir=\/opt\/zookeeper-3.4.9\/logs/g' /opt/zookeeper-3.4.9/conf/log4j.properties
2.4、(クラスタ内の各ノード)開始
/opt/zookeeper-3.4.9/bin/zkServer.sh start-foreground
zkServer.shスクリプトパラメータ
開始-フォアグラウンド:タイムズは珍しい何も見え始めているが、また、運転中に異常を見ることができます。
印刷-CMD:各パラメータの飼育係の開始を確認し、パスのJavaを備えるように
2.5、ステータスを表示します
[root@node1 zookeeper-3.4.9]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
スタンドアローンドッキングウィンドウの展開に基づいて第三に、
3.1、ドッキングウィンドウのドッキングウィンドウ-構成し、インストールします
インストールパッケージの抽出
tar zxvf docker-18.09.8.tgz
インストール
mv docker/* /usr/bin/
mkdir /etc/docker
cp daemon.json /etc/docker/daemon.json
cp docker.service /usr/lib/systemd/system/docker.service
インストールのドッキングウィンドウ、コン
cp docker-compose/docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
起動し、起動を設定
systemctl daemon-reload
systemctl start docker
systemctl enable docker
systemctl restart docker
3.2、導入ミラーのZooKeeper
docker load -i zookeeper-3.4.9_20191008.tar
3.3、すぐドッキングウィンドウ-compose.ymlファイル
version: '2'
services:
zookeeper:
image: zookeeper:3.4.9
restart: always
container_name: zookeeper
ports:
- 2181:2181
environment:
ZOO_IP: 192.168.143.200
ZOO_MY_ID: 1
volumes:
- "/home/data/zookeeper/data:/opt/zookeeper-3.4.9/data"
- "/home/data/zookeeper/logs:/opt/zookeeper-3.4.9/logs"
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
network_mode: "host"
①容器は、ホストのポート2181にポート2181に暴露される
②論理データとログディレクトリが搭載されている
③容器ローカル時刻とホストファイルのタイムゾーンをマウント
④コンテナホストネットワーク
3.4、飼育係ミラーを開始
docker-compose -f docker-compose.yml up -d
3.5、チェック
血管の状態を確認します
[root@master home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4685488115a zookeeper:3.4.9 "/opt/zookeeper-3.4.…" 12 minutes ago Up 12 minutes zookeeper
コンテナの内部を確認してください飼育係
[root@master home]# docker exec -it e4685488115a /bin/bash
[root@master /]# ps afx
PID TTY STAT TIME COMMAND
122 pts/0 Ss 0:00 /bin/bash
135 pts/0 R+ 0:00 \_ ps afx
1 ? Ssl 0:01 /opt/jdk1.8.0_73/bin/java -Dzookeeper.log.dir=/opt/zookeeper-3.4.9/logs -Dzookeeper.root.logger=DEBUG,ROLLI
[root@master /]# jps
1 QuorumPeerMain
136 Jps
ホストのリスニングポート検査
[root@master home]# netstat -tanlp | grep java
tcp6 0 0 :::41309 :::* LISTEN 5850/java
tcp6 0 0 :::2181 :::* LISTEN 5850/java
四、飼育係の管理4文字のコマンド
4.1、コンフィギュレーション・ファイルのサポート4文字のコマンドを変更
飼育係は、下zoo.cfg 4文字のファイルを開くコマンドで、以下の設定を追加ホワイトリスト、彼らの実行を監視するために、4ワードのコマンドの数を提供し
4lw.commands.whitelist = *#4すべての単語のコマンドを使用することができます
4.2、4文字のコマンドの概要
CONF:出力関連サービスの詳細な構成。
短所:すべてのクライアントのためのサーバーへの一覧の完全な詳細な接続/セッション接続。「受信/送信」を含むパケットの数、セッションID、動作遅延は、最後の操作は、等が行われます。
ダンプ:キュー・セッション暫定ノードで待機しているすべてのメッセージの出力は、このコマンドはリーダーのために実行されます。
ENVI:プリントは、サービス環境(confにコマンドとは異なる)に関する詳細情報を。
REQS:リスト未処理の要求
ruok:テストサービスが正しい状態になっています。もしそうなら、サービスリターン「imokは」、それ以外の場合には、対応するものではありません。
STAT:パフォーマンスとクライアント接続のリストを出力。
wchs:ウォッチリストサーバーの要約情報。
wchc:セッションによって、より多くの情報ウォッチリストサーバーの場合、その出力は、関連ウォッチセッションのリストがあります。
wchp:パスを通してより多くの情報ウォッチリストサーバについては。これは、セッションに関連付けられたパスを出力します。
MNTR:出力は、より多くのstatコマンドサーバの統計情報よりも詳述されている
機能のコマンドをリセットし、すべての接続の統計情報:CRST
例:NCとのより多くの情報の出力サーバの設定については、
NC#[マスターホーム@ルート] yumを-Yインストール
出力サーバの統計情報:例
参考記事:
http://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html
「ZooKeeperの:分散協調プロセス技術を説明します」