Azure CycleCloud の基本について説明する
多くの組織は、オンプレミスの HPC ワークロードを Azure に移行し、ハイパースケール機能の恩恵を受けられるようにすることを望んでいます。 また、そのような移行に関連する学習曲線を最小限に抑え、既存のデプロイ (特定の HPC スケジューラなど) に関する専門知識を使用することも望んでいます。 最後に、クラウドベースのクラスター リソースのパフォーマンスとコストに関する分析情報を、オンプレミス環境と同等の方法で得ることを望んでいます。
このようなニーズに対応するカスタム ソリューションを実装することは困難です。 クラウドベースの HPC クラスターの構成要素として機能する Azure コンピューティング、ネットワーク、ストレージ リソースに関する詳細な知識が必要になります。 さらに、対応する管理インターフェイスがない場合、標準の Azure 管理ツールに依存してこのようなソリューションを運用すると大きな管理オーバーヘッドが発生します。
Azure CycleCloud を使用すると、これらの問題に対処し、シンプルかつ安全でスケーラブルな方法で、Azure で HPC スケジューラを実装することができます。 このユニットでは、その基本的な機能について学習します。
Note
Azure CycleCloud では、特定の HPC スケジューラを使用する必要があるデプロイ シナリオが対象となります。 これは、Azure Batch を補完し、Azure 上でサービスとしてのスケジューラを提供します。
Azure CycleCloud とは
Azure CycleCloud は、Azure で HPC クラスターをデプロイし、そのワークロードを管理するためのツールです。 次のような幅広い HPC 機能が提供されます。
HPC クラスターのテンプレートベースのデプロイ。 Azure CycleCloud には、Slurm、OpenPBS、LSF、Grid Engine、HTCondor など、最も一般的なクラスター スケジューラのデプロイ用の、カスタマイズ可能なテンプレートが組み込まれています。 お使いの Azure CycleCloud インスタンスにインポートできるその他多くの定義済みテンプレートが、CycleCloud の GitHub リポジトリから入手できます。
Note
テンプレートは INI 形式のファイルです。宣言型の構文を使用して、CycleCloud クラスターでのノードの編成方法 (それぞれのリレーションシップなど) を記述します。 テンプレートには、ノード構成を定義する、プロジェクトへの参照が含まれています。
クラスター ノードの手動スケーリングと自動スケーリング。 Azure CycleCloud を使用すると、ジョブ キューの長さとガバナンス ポリシーに応じて、管理対象クラスターを手動または自動で水平スケーリングすることができます。 また、カスタム スケジューラ用の自動スケーリング アダプターを開発するための REST API も用意されています。
cloud-init スクリプトを使用したノード構成。 Azure CycleCloud では、他の CycleCloud 固有の構成タスクの前に管理対象クラスター ノード内で実行されるカスタム スクリプトに基づいた構成管理がサポートされます。
内部および外部のクラスター ストレージの管理。 Azure CycleCloud では、Azure マネージド ディスクおよびネットワーク接続ストレージ (NFS サーバーや BeeGFS クラスターなど) をプロビジョニング、マウント、およびフォーマットすることによって、クラスター ストレージを構成できます。
監視、ログ記録、アラート。 Azure CycleCloud には組み込みのクラスター監視機能が用意されており、Azure Monitor と統合されます。 また、CycleCloud クラスターからのログ データを Log Analytics に格納し、カスタム メトリック ダッシュボードを作成することもできます。 また、テレメトリ データによってトリガーされるカスタム アラートや電子メール通知を作成することもできます。 すべての Azure CycleCloud アクティビティがログに記録されます。
認証と認可。 Azure CycleCloud では、組み込みのローカル認証がサポートされています。 または、Active Directory Domain Services や、その他の Directory Access Protocol (LDAP) ベースの ID プロバイダーと統合することもできます。 既定では、ローカルに定義されたユーザーは管理対象クラスター ノード上のオペレーティング システムにアクセスできますが、クラスター ユーザーを個別に管理することが可能です。 Azure サブスクリプションのリソースの管理には、Microsoft Entra サービス プリンシパルまたはマネージド ID を使用できます。
ほぼリアルタイムでのコストのレポートと管理。 Azure CycleCloud ではクラスターの使用状況が追跡され、対応するコストが見積もられます。 この機能によって、クラスターのコストが指定した金額を超えた場合にトリガーされる予算アラートを設定できます。 また、Azure CycleCloud は Microsoft Cost Management とも統合されます。
Azure CycleCloud を実装して使用する方法
CycleCloud は Linux ベースの Web アプリケーションとして実装され、お使いの Azure 環境にアクセス可能な任意の場所にインストールできます。 最も簡単な設定方法は、対応する Azure Marketplace イメージを使用して Azure VM をデプロイすることです。Azure Resource Manager (ARM) テンプレートを使用してデプロイを自動化することもできます。 あるいは、yum または apt パッケージ、または Microsoft の Container Registry から入手できるコンテナー イメージを使用することもできます。
初期構成時に SSH キーを指定して、CycleCloud アプリケーションをホストするオペレーティング システムへのアクセスと、後でデプロイされるクラスター ノードへのアクセスをセキュリティで保護することができます。 CycleCloud アプリケーションが Azure Resource Manager と対話できるようにするには、この対話用のセキュリティ コンテキストを提供する Microsoft Entra ID を選択し、Azure ロールベースのアクセス制御 (RBAC) を使用することで、ID に対して対象の Azure サブスクリプションの十分なアクセス許可を割り当てる必要があります。 この ID には、サービス プリンシパルの形式か、Azure VM 上で Azure CycleCloud アプリケーションをホストする場合はマネージド ID の形式を使用することができます。
Azure CycleCloud インスタンスには、Azure ストレージ アカウントと、付随する BLOB コンテナーも必要です。 "ロッカー" と呼ばれるこのコンテナーによって、クラスター ノードにプロジェクトをデプロイするためのステージング領域が提供されます。
インストールが完了すると、Azure CycleCloud アプリケーションにより、HPC システムを管理および監視できるグラフィカル ユーザー インターフェイスと、CycleCloud の自動化および既存のワークフローへの統合を促進するコマンド ライン インターフェイス (CLI) が提供されます。 また、CLI を使用して、テンプレートをインポートしたり、クラスターのプロビジョニングを自動化したり、より高度な管理タスクを実行したりすることもできます。
Azure CycleCloud のアーキテクチャとは
Azure CycleCloud には、Azure Resource Manager と比較して抽象化レイヤーが追加されており、ユーザーが Azure のコンピューティング リソースとストレージ リソースを直接処理する必要性が最小限に抑えられます。 その役割は、グラフィカル インターフェイスまたは CLI を介してアクセスできるスケジューラレベルの構成を、ユーザー定義の仮想ネットワークおよびサブネット内の Azure VM および Azure VM Scale Sets と対話する Azure Resource Manager (ARM) API 呼び出しに変換することです。 これらの呼び出しでは、リージョンの vCPU クォータ、クラスター サイズの制限、および InfiniBand ネットワーク トポロジの制約も考慮されます。 また、このような構成要素を近接配置グループとして使用するか、クラスター ノードを同じ InfiniBand スイッチに接続することによって、クラスター パフォーマンスの最適化も促進されます。
Note
近接配置グループを使用すると、各 Azure VM を互いに近くに併置することができますが、InfiniBand ネットワークは考慮されません。 Azure CycleCloud では、PlacementGroupId と呼ばれる固有の構成要素を使用して、各クラスター ノードを、同じネットワーク スイッチに接続される単一の Azure VM スケール セットにグループ化することができます。 これら 2 つの機能を組み合わせることもできますが、同じ Azure VM スケール セット内にプロビジョニングできるノードの数が減少する可能性があります。
Azure CycleCloud によって HPC クラスターのライフサイクルがオーケストレーションされます。これは通常、1 つ以上の HPC スケジューラ ヘッド ノードと計算ノードで構成されますが、NFS サーバーや BeeGFS クラスターなどのネットワーク接続ストレージ、Azure NetApp Files、Azure HPC Cache、Microsoft Entra Domain Services なども含まれる場合があります。 これには、クラスターとノードの状態をキャッシュする内部 NoSQL データストアが含まれます。 そのノード監視システムによって、アラートが有効になります。 その管理機能は REST API を通じて公開され、Web および CLI を介してアクセスできます。
管理対象クラスターの自動スケーリングは、Demand Calculator と Autoscale Library に依存しています。 それらの特性については、このコースの次のユニットで説明します。
Azure CycleCloud クラスターのライフサイクルとは
クラスターのライフサイクルは、その定義を含むテンプレートを選択することから始まります。 組み込みテンプレートのいずれかを使用するか、カスタム テンプレートを作成して CycleCloud アプリケーションにインポートするかを選択できます。 通常、テンプレートには、作成時にクラスター構成のカスタマイズを可能にするいくつかのパラメーターが含まれています。 クラスター作成プロセスの詳細は、Web と CLI のどちらを使用するかによって異なります。
クラスターの作成が完了したら、起動することができます。 クラスターを起動すると、クラスター テンプレートベースの定義の一部である各ノードについて、タスクのシーケンスがトリガーされます。 このシーケンスは、Azure VM のプロビジョニングを要求する Azure Resource Manager への呼び出しで構成され、"取得中" 状態と呼ばれます。 その後、VM の構成が続きます。これには、対応するプロジェクトで定義されている初期化の実行、スケジュール ソフトウェアのインストールと構成を行うスクリプトの実行、ファイル システム ボリュームのプロビジョニングとマウントが含まれます。 シーケンスが完了すると、ノードは "開始済み" 状態になります。 未処理のエラーまたは不明なエラーが発生すると、"エラー" 状態になります。
クラスター ノードが実行されたら、それらのオペレーティング システムに応じて、SSH または RDP を介してリモートからアクセスできるようになります。 このような接続を使用して、クラスター ジョブを送信することができます。 クラスターの構成に応じて、これによりクラスターのスケーリングがトリガーされることがあります。
送信されたすべてのジョブが完了したら、クラスターを終了できます。 クラスターを終了すると、そのノードが停止されて削除され、すべての非永続的ボリュームが削除されて、クラスターは "オフ" の状態になります。