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