CentOS6.8はzookeeperクラスターを展開します

同社のキャッシングソリューションの改善により、codisクラスターがメインのキャッシングソリューション(codis:国内のエンドウ豆ポッドによって開発されたredisクラスターソリューション、オープンソース、githubアドレス:https://github.com/CodisLabs/codis)、codisクラスターとして用意されています。 zookeeperクラスターに依存しますが、この記事ではzookeeperクラスターの実装を紹介します。

1.Zookeeperの原理の紹介

ZooKeeperは、オープンソースの分散アプリケーション調整サービスであり、分散アプリケーションが同期サービス、構成の保守、および命名サービスを実装できる単純なプリミティブのセットが含まれています。

動物園飼育員の設計目的

Zookeeperのしくみ

1、 動物園管理者クラスターでは、各ノードには次の3つの役割と4つの状態があります。

役割:リーダー、フォロワー、オブザーバー
ステータス:リード、フォロー、観察、見ている

Zookeeperの中核はアトミックブロードキャストです。このメカニズムにより、サーバー間の同期が保証されます。このメカニズムを実装するプロトコルは、Zabプロトコル(ZooKeeper Atomic Broadcastプロトコル)と呼ばれます。 Zabプロトコルには、リカバリモード(リカバリがマスターを選択)とブロードキャストモード(ブロードキャスト同期)の2つのモードがあります。サービスが開始されるか、リーダーがクラッシュした後、Zabはリカバリモードに入ります。リーダーが選出され、ほとんどのサーバーがリーダーの状態との同期を完了すると、リカバリモードは終了します。状態の同期により、リーダーとサーバーのシステム状態が同じになります。

トランザクションシーケンスの一貫性を確保するために、zookeeperは増加するトランザクションID番号(zxid)を使用してトランザクションを識別します。すべての提案は、作成時にzxidを追加します。実装では、zxidは64ビットの数値です。その上位32ビットは、リーダーの関係が変更されたかどうかを識別するためにエポックによって使用されます。リーダーが選択されるたびに、リーダーの治世の現在の期間を識別する新しいエポックがあります。下位32ビットはアップカウントに使用されます。

各サーバーには、作業中に4つの状態があります。

探している:現在のサーバーは、リーダーが誰で、検索しているのかを知りません。

リーダー:現在のサーバーが選ばれたリーダーです。

FOLLOWING:リーダーが選出され、現在のサーバーがリーダーと同期されます。

観察:ほとんどの場合、観察者の行動は信者の行動とまったく同じですが、彼らは選挙や投票に参加せず、選挙と投票の結果を受け入れる(観察する)だけです。

Zookeeperクラスターノード

ラボ環境

ホスト名 システム IPアドレス
linux-node1 CentOS release 6.8 192.168.1.148
linux-node2 CentOS release 6.8 192.168.1.149
linux-node2 CentOS release 6.8 192.168.1.150

2、Zookeeperのインストール

Zookeeperを実行するにはjava環境が必要であり、jdkをインストールする必要があります。注:Zookeeperとjdkを各サーバーにインストールする必要があります。必要なインストールパッケージをローカルにダウンロードしてサーバーにアップロードすることをお勧めします。サーバーでのダウンロード速度が遅すぎます。

2.1、 JDKのインストール

JDKダウンロードアドレス:[http://www.oracle.com/technetwork/java/javase/downloads/index.html](http://www.oracle.com/technetwork/java/javase/downloads/index.html)

rpm -ivh jdk-8u101-linux-x64.rpm

2.2、 Zookeeperのインストール

動物園飼育係のリンク:[http://zookeeper.apache.org/](http://zookeeper.apache.org/)

wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz -P /usr/local/src/
tar zxvf zookeeper-3.4.8.tar.gz -C /opt
cd /opt && mv zookeeper-3.4.8 zookeeper
cd zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg

動物飼育係を環境変数に追加する

echo -e "# append zk_env\nexport PATH=$PATH:/opt/zookeeper/bin">>/etc/profile

3、Zookeeperクラスター構成

注:ズーキーパークラスターを構築するときは、開始されたズーキーパーノードを必ず停止してください。

3.1、 Zookeeper構成ファイルの変更

変更された構成ファイルzoo.cfgは次のとおりです。

egrep -v "^#|^$" zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper/logs
dataDir=/opt/zookeeper/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=192.168.1.148:2888:3888
server.2=192.168.1.149:2888:3888
server.3=192.168.1.150:2888:3888

関連するディレクトリを作成します。3つのノードすべてが必要です

mkdir -p /opt/zookeeper/{logs,data}

残りのzookeeperノードをインストールしたら、構成ファイルzoo.cfgを同期します。

3.2、 構成パラメーターの説明

tickTimeは、ハートビートを維持するためのzookeeperサーバー間、またはクライアントとサーバー間の時間間隔です。つまり、tickTimeごとにハートビートが送信されます。

initLimit構成アイテムは、クライアントを受け入れるようにzookeeperを構成するために使用されます(ここで説明するクライアントは、ユーザーをzookeeperサーバーに接続するクライアントではなく、zookeeperサーバークラスターのリーダーに接続されるフォロワーサーバーです)。ハートビート間隔の数。

10ハートビートの時間(つまり、tickTime)を超えた場合、zookeeperサーバーはクライアントからの戻りメッセージを受信しておらず、クライアント接続が失敗したことを示しています。合計時間は10 * 2000 = 20秒です。

構成アイテムsyncLimitは、リーダーとフォロワーの間で送信されるメッセージの長さ、要求時間と応答時間を識別し、最長時間はtickTimeの長さを超えることはできません。合計時間長は5 * 2000 = 10秒です。

dataDirは、その名前が示すように、zookeeperがデータを保存するディレクトリです。デフォルトでは、zookeeperはこのディレクトリにデータを書き込むためのログファイルも保存します。

clientPortポートは、クライアントがZookeeperサーバーに接続するためのポートであり、Zookeeperはこのポートをリッスンして、クライアントのアクセス要求を受け入れます。

Aのserver.A = B:C:Dは、どのサーバーがこの番号であるかを示す番号、BはこのサーバーのIPアドレス、Cの最初のポートはクラスターメンバー間の情報交換に使用され、このサーバーとクラスターを示します。リーダーサーバーが情報を交換するために使用するポート。Dは、リーダーがハングしたときにリーダーの選出に使用されるポートです。

3.3、 ServerIDIDを作成する

zoo.cfg構成ファイルの変更に加えて、myidファイルをzookeeperクラスターモードで構成する必要があります。これは、dataDirディレクトリに配置する必要があります。

このファイルにはAの値であるデータがあり(Aはzoo.cfgファイルのserver.A = B:C:DのAです)、myidファイルはzoo.cfgファイルで構成されたdataDirパスに作成されます。

192.168.1.148サーバー上にmyidファイルを作成し、値を1に設定します。これは、次のようにzoo.cfgファイルのserver.1と一致します。

echo "1">/opt/zookeeper/data/myid

次のように、192.168.1.149サーバーにmyidファイルを作成し、値を1に設定します。その一方で、zoo.cfgファイルのserver.2との整合性を保ちます。

echo "2">/opt/zookeeper/data/myid

次のように、192.168.1.150サーバーにmyidファイルを作成し、値を1に設定します。これは、zoo.cfgファイルのserver.3と一致します。

echo "3">/opt/zookeeper/data/myid

この時点で、関連する構成は完了しています。

4、Zookeeperクラスタービュー

1、 各サーバーでzookeeperノードを起動します。

linux-node1、linux-node2、linux-node3

/opt/zookeeper/bin/zkServer.sh start

注:トラブルシューティング

Zookeeperノードを開始できません。考えられる理由:zoo.cfg構成ファイルが正しくなく、iptablesが閉じられていません。

2、 起動後、各ノードの状態を確認してください

linux-node1

linux-node2

linux-node3

上記から、linux-node1およびlinux-node3サーバーのzookeeperステータスはフォローモードであり、linux-node2サーバーのzookeeperステータスはリーダーモードであることがわかります。

5、Zookeeperクラスター接続

Zookeeperクラスターをセットアップすると、クライアントスクリプトを介してZookeeperクラスターに接続できます。クライアントにとって、Zookeeperクラスターは全体であり、Zookeeperクラスターへの接続は、実際にはクラスター全体の排他的なサービスのように感じられます。

linux-node1でテスト済み

上の図から、zookeeperクラスター全体が構築およびテストされていることがわかります。

動物園管理人の原則:

http://blog.csdn.net/wuliu_forever/article/details/52053557
http://www.cnblogs.com/luxiaoxun/p/4887452.html

Recommended Posts

CentOS6.8はzookeeperクラスターを展開します
Centos7.6はdjango + nginx + uwsgiをデプロイします
Kickstart + PXEはCentOS6.6を自動的に展開します
CentOS7でGitBookを展開する
CentOS7.3.1611はk8s1.5.2クラスターを展開します
Centos6.9ビルドrabbitmq3.6.8クラスター
CentOS6インストールcouchdb2クラスター
実際のCentOSシステムにHadoopクラスターサービスを展開する
CentOS7はsaltstackサービスを展開します
Centos7ビルドKubernetesクラスター
Centos7mqttクラスターのインストール
CentOSの下にJDK + Tomcat8をデプロイします
centos7にvuepressをデプロイする
CentOSクラスター関連の問題
Centos7はKubernetesクラスターを展開します
Centos6.8はvncサービスを展開します
CentOS7はk8sクラスターを展開します
Jenkinをcentos7にデプロイします
CentOS7デプロイvsftp(FTP)サービス
Centos7.4デプロイメント構成Elasticsearch5.6クラスター
Centos7へのGlusterfsクラスターのインストール
CentOSでのRedisクラスターのインストール
CentOS 7 GaleraClusterインストールガイド
Centos7.2 /7.3クラスターインストールKubernetes1.8.4 +ダッシュボード
CentOS7.2はNode.js開発環境を展開します
centOS7を使用してフロントエンドプロジェクトを展開する
CentOs7.3ビルドZooKeeper-3.4.9スタンドアロンサービス
CentOS 7.2デプロイメールサーバー(Postfix)
CentOSでのRedisクラスターのインストール
CentOS7.7はk8をデプロイします(1マスター+ 2ノード)
CentOs7.3ビルドSolrCloudクラスターサービス
Centos7インストールk8sクラスター1.15.0バージョン
CentOS7.7はk8をデプロイします(3マスター+3ノード+1クライアント)
CentOS7.7はk8s + Prometheus(1マスター+ 2ノード)を展開します
Centos6.9でのRabbitMQクラスター展開レコード
Centos7hadoopクラスターのインストールと構成
CentOS8でPXCクラスターを構築する
CentOS7でのElasticsearchクラスター展開レコード
CentosでTomcatを展開して最適化する
CentOS 8(1)
CentOS7.2はWebサイトアクセスログアナライザーを展開します-Piwik
k8sプラクティス(1):Centos 7.6デプロイメントk8s(v1.14.2)クラスター
(1)クラスター環境を構築するためのCentos7のインストール
Centos7はHAproxyを展開してNginxクラスターを実装します
Dockerをデプロイし、CentOSでNginxを構成します
CentOS6でのRHCSクラスターの簡単な実践