LTN Blog 〜 Lenovo Technology Network 〜

レノボのソリューション・サーバー製品に関する技術情報、お役立ち情報をお届けします

Nutanixのクラスタのコンポーネントを覚えてみよう!

皆さん、こんにちは レノボ・エンタープライズ・ソリューションズ 小宮です。

本日はNutanixのクラスタについてお話したいと思います。

 

今回の内容については、Nutanix Bible(http://nutanixbible.jp/)にも記載している内容になりますが、実際には単語レベルでの説明はあるものの各プロセスについての詳細に書かれていないため、筆者が理解できるようにいろいろとまとめてみました。

f:id:t_komiya:20181031003027p:plain

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には依存関係がないため、他のクラスタコンポーネントを実行しなくても起動できます。

 

f:id:t_komiya:20181031004531p:plain

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を使用してフォロワーからリーダーに転送されます。これにより、管理者は任意のコントローラVM IPアドレスを使用してPrismにアクセスできます。Prismリーダーが失敗した場合、新しいリーダーが選出されます。

Prismはクラスタ構成データ用にZeusと通信し、統計情報はユーザーに提示するためにCassandraと通信します。また、VMステータスおよび関連情報についてESXiホストと通信します。

 

少し難しい内容になっておりますが、Nutanixの重要なコンポーネントであるため、今後Nutanix Bibleを読むときに役立てて頂ければ幸いです。

 

よろしくお願い致します。