飼育係、デプロイ

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の:分散協調プロセス技術を説明します」

おすすめ

転載: blog.51cto.com/jiayimeng/2485465