LinuxはZookeeperクラスタを構築する

7317 ワード

LinuxはZookeeperクラスタを構築する


1説明


1.1作成目的


このブログの作成は、zookeeper分散システムを構築し、本人のインストール導入プロセスを共有し、zookeeperの理解とインストールを支援することを目的としています.

1.2適用範囲


このブログはzookeeperに足を踏み入れたばかりの開発者、テスト担当者、実施者にのみ適用されます.詳細な構成とパラメータの最適化については説明されておらず、専門家が移行できます.

2 Zookeeper説明


2.1 Zookeeper概要


2.1.1 Zookeeper概要


ZooKeeperは分散型で、オープンソースの分散型アプリケーション協調サービスであり、GoogleのChubbyのオープンソースの実現であり、HadoopとHbaseの重要なコンポーネントである.分散アプリケーションに一貫性のあるサービスを提供するソフトウェアで、構成メンテナンス、名前サービス、分散同期、グループサービスなどの機能を提供します.ZooKeeperの目標は、複雑でエラーが発生しやすい重要なサービスをカプセル化し、簡単で使いやすいインタフェースと性能が効率的で、機能が安定したシステムをユーザーに提供することです.ZooKeeperコードバージョンでは、zookeeper-3.4.12srcrecipesのコードを持つ分散型のプライベートロック、選挙、キューのインタフェースが提供されています.分散ロックとキューにはJavaとCの2つのバージョンがあり、Javaバージョンのみが選択されます.

2.1.2 Zookeeper原理


ZooKeeperはFast Paxosアルゴリズムに基づいており、paxosアルゴリズムには活鎖の問題がある.すなわち、複数のproposerが交錯してコミットされると、互いに排斥し合う可能性があり、1つのproposerがコミットに成功することができないが、Fast Paxosはいくつかの最適化を行い、選挙によって1つのleaderを生成し、leaderだけがproposeをコミットすることができ、具体的なアルゴリズムはFast Paxosを見ることができる.そのため、ZooKeeperを理解するにはまずFast Paxosについて理解しなければなりません.ZooKeeperの基本運転フロー:1、選挙リーダー.2、データを同期する.3、選挙リーダーの過程にはアルゴリズムがたくさんあるが、達成する選挙基準は一致している.4、リーダーは最高のzxidを持っていなければならない.5.クラスタ内の大多数の機器が応答を得てfollowによって選ばれたリーダー.

2.1.3 Zookeeperの特徴


Zookeeperでは、znodeはUnixファイルシステムのパスに似たノードであり、このノードにデータを格納または取得することができます.znodeの作成時にFlagがEPHEMERALに設定されている場合、このznodeを作成したノードとZookeeperが接続を失うと、このznodeはZookeeperに存在しなくなり、ZookeeperはWatcherを使用してイベント情報を認識します.クライアントが接続タイムアウト、ノードデータの変更、サブノードの変更などのイベント情報を受信すると、対応する動作を呼び出してデータを処理することができる.ZookeeperのWikiページには、Zookeeperを使用してイベント通知、キュー、優先キュー、ロック、共有ロック、取り消し可能な共有ロック、2段階コミットを処理する方法が示されています.ではZookeeperは何ができるのでしょうか.簡単な例では、20の検索エンジンのサーバ(総インデックスの一部を担当する検索タスクごとに)と1つの総サーバ(この20の検索エンジンのサーバに検索要求を発行し、結果セットを統合する責任を負う責任を負う)、1つの代替の総サーバ(総サーバがダウンしたときに総サーバを置き換える責任を負う)、1つのwebのcgi(総サーバに検索要求を発行する)があるとします.検索エンジンのサーバのうち15サーバが検索サービスを提供し、5サーバがインデックスを生成しています.この20の検索エンジンのサーバは、検索サービスを提供しているサーバが提供サービスを停止してインデックスの生成を開始したり、インデックスを生成したサーバがインデックスの生成を完了したりして、提供サービスを検索することができます.Zookeeperを使用すると、総サーバが検索エンジンを提供するサーバの数を自動的に感知し、これらのサーバに検索要求を発行し、総サーバがダウンタイムしたときにスタンバイの総サーバを自動的に有効にすることができます.

2.1.4 Zookeeper配備


何人のZooKeeperを実行する必要がありますか?zookeeperを実行してもいいですが、本番環境では3、5、7ノードを配置したほうがいいです.デプロイが多ければ多いほど信頼性が高くなります.もちろん奇数個をデプロイするのが望ましいです.偶数個は不可ではありませんが、zookeeperクラスタはダウンタイムの数が半分を超えるとクラスタ全体をダウンタイムさせるので、奇数個のクラスタがより良いです.各zookeeperに1 G程度のメモリが必要ですが、できれば独立したディスクがあるほうがいいです(独立したディスクはzookeeperが高性能であることを確保できます).クラスタ負荷が重い場合は、ZookeeperとRegionServerを同じマシン上で実行しないでください.DataNodesとTaskTrackersのようです.

3インストールの準備


3.1サーバ準備


通常、一般的にZookeeperは3,5,7ノードを配置することが望ましい.配置が多ければ多いほど信頼性が高くなります.もちろん奇数個、偶数個を配置してはいけません.次に3台の機械を配置します.オペレーティングシステムはCentOS 7、JDKバージョンは1.8を採用しています.JDKを取り付けていない子供靴はJDKを取り付けます.各ノードおよび説明を以下の表に示す.
ノード
IP
説明
サーバ1
192.168.204.127
Note1
サーバ2
192.168.204.128
Note2
サーバ3
192.168.204.129
Note3

3.1.1必要に応じて本機ホスト名を変更することができる


1、vi/etc/sysconfig/networkコマンドを実行し、HOSTNAMEを新しいホスト名に変更する実行コマンド:vi/etc/sysconfig/network修正:NETWORKING=yes HOSTNAME=node 1 2、変更/etc/hostsファイル、追加ノードマッピング、カスタムマシン名アクセスターゲットマシン実行コマンド:vi/etc/hosts修正前:127.0.0.1 localhost localhost.localdomainlocalhost4 localhost4.localdomain4::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
変更localdomainはnode 1であり、マッピングを追加します.修正後の内容は以下の通りである:127.0.0.1 localhost node 1 localhost 4 localhost 4.localdomain4::1 localhost node1 localhost6 localhost6.localdomain6 192.168.204.128 node2 192.168.204.129 node3
3、修正/etc/hostnameファイル実行コマンド:vi/etc/hostname(CentOs 7ではこのステップは操作せず、どのように修正しても役に立たない、CentOs 6は省略)ファイル中のすべての文字を削除し、最初の行にnode 1 4を追加し、マシン実行コマンドを再起動する:reboot

3.2ソフトウェア準備


現在Zookeeperのインストールで使用されているバージョンはzookeeper-3.4.12で、http://archive.apache.org/dist/zookeeperダウンロードし、インストールパッケージをサーバに転送します.サーバが外部ネットワークを許可する場合は、wgetコマンド側でzookeeper Wgetをダウンロードできます.https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz .

4 Zookeeperインストール


4.1 Zookeeperインストール


4.1.1第一歩Zookeeperインストールパッケージのダウンロード


インストールパッケージを置くディレクトリに切り替えてコマンドを実行してzookeeper:Wgetをダウンロードしますhttps://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gzまたは直接Wgetへhttp://archive.apache.org/dist/zookeeper/zookeeperをダウンロードします.

4.1.2第二段階Zookeeperインストールパッケージの解凍


/usr/localの下でappsフォルダを作成して、私は基本的にこのソフトウェアをこのディレクトリの下にインストールして、読者は自分でインストールの常用ディレクトリを選ぶことができます:mkdir/usr/local/appsはapps tar-zxvf zookeeeper-3.4.12に解凍します.tar.gz -C/usr/local/apps/

4.1.3ステップ3 zookeeperディレクトリ名の変更


操作を容易にし、環境変数を構成するために、zookeeper-3.4.12をzookeeperに変更しました.mv zookeeper-3.4.12 zookeeper

4.1.4ステップ4プロファイルのコピー


プロファイルをコピーしzooと名前を変更します.cfg cp/usr/local/apps/zookeeper/conf/zoo_sample.cfg zoo.cfg

4.1.5ステップ5ディレクトリの作成


mkdir/usr/local/apps/zookeeper/datatmpディレクトリmkdir/usr/local/apps/zookeeper/logsディレクトリ

4.1.6第六歩Zookeeper配置


修正zoo.cfgプロファイルtickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/apps/zookeeper/datatmp dataLogDir=/usr/local/apps/zookeeper/logs clientPort=2181 server.1=192.168.204.127:2888:3888 server.2=192.168.204.128:2888:3888 server.3=192.168.204.129:2888:3888

4.1.7ステップ7環境変数の構成


起動を容易にするために、環境変数を構成し、profileファイルで構成します:vi/etc/profile追加システム変数ZK_HOMEそしてPATHを修正する:
export ZK_HOME=/usr/local/apps/zookeeper
export PATH=$PATH:$ZK_HOME/bin

4.1.8ステップ8 myidの作成


さっきcfgファイルのdataDirプロパティで指定したディレクトリ(本明細書では/usr/local/apps/zookeeper/datatmp)の下にmyidを作成し、指定したserver番号を追加します.このマシンはmasterでzooです.cfgではmaster番号が1(server.1=192.168.204.127:2888:3888)なのでmyidコンテンツは1でよい.cd/usr/local/apps/zookeeper/datatmp echo 1>myid注意:myidファイルについて.myidファイルには、サーバIDという数字が1つしかありません.例えばserver.1のmyidファイルの内容は「1」です.注意、各serverのmyidファイルのid数が異なり、serverと異なることを確認してください.id=host:port:portのidは一致します.また、idの範囲は1~255です.

4.1.9ステップ9ノードのコピー


それぞれ他の2台の機械で第1歩から第8歩までの作業を繰り返し、第1歩から第7歩までの操作は変わらず、第8歩はecho 1>myidを実行するにはそれぞれecho 2>myid echo 3>myidに修正し、myidの各機械が唯一であることを保証する必要がある.

4.1.10ステップ10ファイアウォールを閉じるか、対応するポートを開く


ファイアウォールを閉める方法が不明な子供靴については、この仁兄のブログを参考にしてください.https://www.linuxidc.com/Linux/2016-12/138979.htm

4.2起動と停止


4.2.1 Zookeeper起動


cd/usr/local/apps/zookeeper/bin zkServer.sh start(環境変数を構成した後、実際には他のディレクトリで実行してもよい)は、それぞれ3台のマシンで対応する操作を行い、Zookeeperのインストールが完了し、起動します.

4.2.2 Zookeeper停止


cd/usr/local/apps/zookeeper/bin zkServer.sh stop

4.2.3 Zookeeper状態


cd/usr/local/apps/zookeeper/bin zkServer.sh status

4.2.4 Zookeeperのインストールが成功したかどうかを確認する


cd/usr/local/apps/zookeeper/bin zkCli.sh -server 192.168.204.127:2181

5注意事項


5.1.1独立したトランザクション・ログ出力


各更新操作について、ZKはトランザクション・ログがドロップされたことを確認した後、クライアント・レスポンスに戻ります.したがって,トランザクションログの出力性能はZK全体のスループット性能に大きく影響する.トランザクション・ログの出力に個別のディスクを割り当てることを強くお勧めします.

5.1.2適切なJVMスタックサイズの構成


適切なJVMスタックサイズが設定されていることを確認します.設定が大きすぎると、メモリがディスクと交換され、ZKのパフォーマンスが大幅に低下します.例えば、4 Gメモリのマシンの場合、JVMのスタックサイズを4 G以上に設定すると、メモリとディスク空間の交換が頻繁に発生し、通常は3 Gに設定すればよい.もちろん、最適なスタックサイズ値を得るために、特定の使用シーンでいくつかの圧力テストを行います.
作者:洪城屠夫出所:CSDN原文:https://blog.csdn.net/zhangkai19910815/article/details/84230349本文は博主のオリジナルの文章で、転載して博文のリンクを添付してください!