みなさん、こんにちは
本日投稿の内容について、以前別サイトで私が投稿したブログの内容です。
サイトの閉鎖に伴い、こちらで再度掲載いたします。
今回はNutanixのクラスタのコンポーネントをご紹介します。
今回の内容については、Nutanix Bible(http://nutanixbible.jp/)にも記載している内容になりますが、実際には単語レベルでの説明はあるものの各プロセスについての詳細に書かれていないため、筆者が理解できるようにいろいろとまとめてみました。
Nutanixクラスターには分散アーキテクチャーがあり、クラスター内の各ノードはクラスタリソースおよびその重要性を共有しています。各ノードにはクラスタ操作中に特定のタスクを実⾏するソフトウェアコンポーネントがあります。
すべてのコンポーネントは、クラスタ内の複数のノードで実⾏され、コンポーネントを実⾏する役割の間で接続が依存しています。ほとんどのコンポーネントは、他のコンポーネントにも依存しています。
Zeus
分散システムの重要な要素は、すべてのノードがクラスターの構成を保管して更新します。内容はホストやディスクなどのクラスタ内の物理コンポーネント、およびストレージコンテナなどの論理コンポーネントに関する詳細が含まれます。
これらのコンポーネントの状態(IPアドレス、容量、データ複製ルールなど)もクラスタ構成に格納されます。
Zeusは他のすべてのコンポーネントがクラスタ構成にアクセスするために使⽤するNutanixライブラリです。現在、Apache Zookeeperを使⽤して実装されています。
Cassandra
CassandraはNutanixデータストアに格納されているゲストVMデータに関するすべてのメタデータを格納している分散型の⾼性能でスケーラブルなデータベースです。NFSデータストアの場合、Cassandraはデータストアに保存された⼩さなファイルも保持します。ファイルのサイズが512Kに達すると、クラスタはデータを保持するvDiskを作成します。
Cassandraはクラスタのすべてのノードで実⾏されます。これらのノードはGossipプロトコルを使⽤して1秒に1回、互いに通信し、データベースの状態がすべてのノードで最新であることを保証します。
CassandraはZeusに依存して、クラスタ構成に関する情報を収集します。
ZooKeeper
Zookeeperはクラスタに適⽤される冗⻑度に応じて、3つ(RF2)または5つ(RF3)のノードで実⾏されます。複数のノードを使⽤すると失効したデータが他のコンポーネントに返されるのを防ぎます。⼀⽅、奇数を使⽤すると、2つのノードが異なる情報を持つ場合に繋ぎを解除する⽅法が提供されます。
これらの3つのノードのうち、1つのZooKeeperノードがリーダーとして選出されます。リーダは情報の要求をすべて受信し、2つのフォロワノードに付与します。リーダーが応答を停⽌すると、新しいリーダーが⾃動的に選出されます。
Zookeeperには依存関係がないため、他のクラスタコンポーネントを実⾏しなくても起動できます。
Medusa
他のシステム(仮想マシンをホストするハイパーバイザーなど)のデータを格納する分散システムには、そのデータの格納場所を把握する⽅法が必要です。
Nutanixクラスタの場合、そのデータのレプリカが格納されている場所を追跡することも重要です。
Medusaは、このメタデータを保持するデータベースの前に存在しているNutanixの抽象化レイヤーです。データベースは、Apache Cassandraの変更された形式を使⽤して、クラスタ内のすべてのノードに分散されます。
Stargate
他のシステム(ハイパーバイザなど)にストレージを提供する分散システムでは、受信するデータを受信し処理するための統合コンポーネントが必要です。
Nutanixクラスタには、この責任を管理するStargateという⼤きなソフトウェアコンポーネントがあります。
ハイパーバイザーの視点からStargateはNutanixクラスターの主要な接点です。すべての読み取りおよび書き込み要求は、NutanixのvSwitchを介して、そのノード上で実⾏されているStargateプロセスに送信されます。
Stargateはメタデータを収集するMedusaとクラスタ構成データを収集するZeusに依存します。
Curator
分散システムではプロセス全体を監視するコンポーネントを持つことが重要です。未使⽤のデータブロックを指すメタデータが蓄積されたり、ノード間またはディスク階層間でデータのアンバランスが発⽣する可能性があります。
Nutanixクラスタでは、各ノードがこれらの責任を扱うCuratorプロセスを実⾏します。Curatorのマスターノードは、メタデータデータベースを定期的にスキャンし、スターゲイトまたは他のコンポーネントが実⾏すべきクリーンアップおよび最適化タスクを識別します。メタデータの分析は、MapReduceアルゴリズムを使⽤して他のCuratorノード間で共有されます。
Curatorはどのノードが利⽤可能であるかを知るためにZeusに依存し、メタデータを収集するためにMedusaを使⽤します。その分析に基づいて、Stargateにコマンドを送信します。
Prism
ユーザーがアクセスできない場合、分散システムは役に⽴たない。Prismは管理者がNutanixクラスタを構成および監視するための管理ゲートウェイを提供します。
これには、nCLIおよびWebコンソールが含まれます。
Prismはクラスタ内のすべてのノードで動作し、他のコンポーネントと同様に、リーダーを選択します。すべてのリクエストは、Linux ip tablesを使⽤してフォロワーからリーダーに転送されます。これにより、管理者は任意のコントローラVMIPアドレスを使⽤してPrismにアクセスできます。Prismリーダーが失敗した場合、新しいリーダーが選出されます。
Prismはクラスタ構成データ⽤にZeusと通信し、統計情報はユーザーに提⽰するためにCassandraと通信します。また、VMステータスおよび関連情報についてESXiホストと通信します。
少し難しい内容になっておりますが、Nutanixの重要なコンポーネントであるため、今後Nutanix Bibleを読むときに役⽴てて頂ければ幸いです。
以上、よろしくお願い致します。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。