CycleCloud では、クラスターという用語は、1 つのシステムとして連携する接続されたコンピューター (ノード) のグループを表します。 クラスターは入れ子にすることができます。 たとえば、グリッド エンジン スケジューラ ヘッドノードとコンピューティング ノードで構成されるコンピューティング クラスターでは、複数のメタデータとストレージ サーバーで構成される BeeGFS クラスターをマウントできます。 コンピューティング クラスターとストレージ クラスターの両方が、単一の親 HPC クラスターまたはシステムの下に結合されます。
ノードとノード配列
クラスターは基本的にノードで構成され、それぞれが HPC システムで特定の役割を果たします。 ノードと VM という用語は、同じ意味で使用されることもありますが、CycleCloud では意味的に分離されています。 クラスターを構成するノードは、準備と構成のプロセスを完了する Azure 上の仮想マシンです。 言い換えると、Azure インフラストラクチャ サービス レイヤーから VM を 作成します。 ソフトウェアをインストールして構成手順を完了すると、 VM は HPC クラスターの ノード になります。
CycleCloud には、スタンドアロン ノードとノード配列の 2 種類のノードがあります。 ノード配列は、同じように構成されたノードのコレクションです。 ノードとノードの配列の区別は、DevOps Pets と Cattle の類似に従います。 スタンドアロン ノードは、Azure 上の単一の VM から構築されます。 ノード配列は、仮想マシン スケール セットにマップされます。
ただし、ノード アレイと仮想マシン スケール セットには重要な違いがあります。 1 つのノード配列は、複数の仮想マシン スケール セットで構成できます。 この構成により、異なるサイズの VM または異なる VM ファミリから 1 つのノード アレイを構築できます。 唯一の制約は、ノード配列内のすべてのノードがクラスターで同じロールを実行することです。 たとえば、すべてのノードがスケジューラの 1 つのキューにリソースを提供します。
クラスター テンプレート
テキスト テンプレートで、トポロジ、または CycleCloud クラスター内でのノードの編成方法を定義します。 テンプレートは、クラスターのノード間の関係をレイアウトします。 入れ子になったクラスターがある場合、テンプレートはクラスターの親子関係を定義します。 テンプレートでは、各ノードのロールも定義されます。
INI 形式でクラスター テンプレートを定義します。 角かっこで囲まれたセクション [
および ]
を使用して、クラスター、ノード、およびノード配列を定義します。 INI ファイルの基本的な要素は、各セクションの構成の詳細を提供するキーと値のペア アサーションです。 これらの構成の詳細は、VM を起動する仮想マシン イメージや VM のサブネットなど、クラスターの各ノードを作成するためのコンテキスト情報を提供します。 詳細については、「 CycleCloud クラスター テンプレート」を参照してください。
ノードの準備と構成
CycleCloud は、クラスター テンプレートで定義されているベース VM イメージから VM をプロビジョニングします。 ブート プロセス中に CycleCloud エージェント (Jetpack) によって管理される一連の手順を通じて、VM 上の OS を初期化して、動作する HPC ノードに変換するように構成します。 これらの手順は、スクリプトからスケジューリング ソフトウェアのインストールと構成、ファイル システムをマウントするための最後の 1 マイル構成まで多岐に及びます。
各ノードの構成セクション で、cluster-init 仕様を定義します。 起動 VM では、これらの仕様を使用して、クラスター内の特定の役割を準備します。 CycleCloud は、各ノードを準備および構成するためのインフラストラクチャ自動化プラットフォームとして Chef を使用します。 各 cluster-init スペックは 、起動中の VM で実行する必要がある 1 つ以上の Chef ロール や Cookbook Recipes にマップされます。
CycleCloud は、一元化された Chef サーバーに依存しないスタンドアロン モードで Chef を使用します。 代わりに、各 VM の準備に必要な Chef Cookbook のセット全体が、VM の起動フェーズ中にユーザーに属する Azure ストレージ アカウントからダウンロードされます。 このクックブックのセットは、クラスターの作成フェーズ中に CycleCloud アプリケーション サーバーからストレージ アカウントにキャッシュされます。
これらのクックブックをダウンロードすると、Chef はノードの cluster-init 仕様で定義されているレシピの一覧を処理します。 VM を稼働中の HPC ノードに変換する準備と構成フェーズがトリガーされます。
スペックは 、プロジェクトと呼ばれる論理コレクションとして作成します。 たとえば、Slurm などのバッチ スケジューラのプロジェクトは、少なくとも 2 つの仕様で構成されます。1 つはスケジューラ ヘッド ノード用、もう 1 つはコンピューティング ノード用です。 CycleCloud プロジェクトの詳細をご覧ください。
ノード オーケストレーション
クラスターで使用されるスケジューラとサービスに応じて、CycleCloud では、異なるノードを調整してクラスター内のノードの準備フェーズを調整する必要がある場合があります。 たとえば、一部のスケジューラでは、各コンピューティング ノードがスケジューラ デーモンに自身を登録する必要があります。 この要件は、コンピューティング ノードがヘッド ノードのアドレスを認識している必要があることを意味します。 また、コンピューティング ノードは、ヘッド ノードが完全に準備されていることを認識し、準備が整っていない場合は待機する必要があります。
CycleCloud は、ファイル システムのサーバーとクライアントの関係に サービス探索 のこの要素を使用します。