CycleCloud アプリケーションとクラスター ノードは、インターネット アクセスが制限された環境で動作できますが、開いている TCP ポートの数は最小限に抑える必要があります。
ロックダウンされたネットワークに Azure CycleCloud をインストールする
CycleCloud VM は、クラスター VM を管理し、Azure Active Directory に対して認証するために、複数の Azure API に接続する必要があります。 これらの API は HTTPS を使用するため、CycleCloud には以下の外向き HTTPS アクセスが必要です。
- management.azure.com (Azure ARM 管理)
- login.microsoftonline.com (Azure AD)
- watson.telemetry.microsoft.com (Azure テレメトリ)
- dc.applicationinsights.azure.com (Azure Application Insights)
- dc.applicationinsights.microsoft.com (Azure Application Insights)
- dc.services.visualstudio.com (Azure Application Insights)
- "ratecard.azure-api.net" (Azure 価格データ)
管理 API はリージョン別にホストされます。 パブリック IP アドレスの範囲 については、こちらをご覧ください。
Azure AD 認証は、Microsoft 365 の一般的な API の一部です。 このサービスの IP アドレス範囲 については、こちらをご覧ください。
Azure Insights と Log Analytics の IP アドレス範囲 については、こちらをご覧ください。
Azure CycleCloud は Azure Storage アカウントにアクセスする必要があります。 このサービスおよびサポートされている他の Azure サービスへのプライベート アクセスを提供するには、 Virtual Network サービス エンドポイントを使用することをお勧めします。
ネットワーク セキュリティ グループまたは Azure Firewall を使用して、必要なドメインへの送信アクセスを制限する場合は、HTTPS プロキシ経由ですべての要求をルーティングするように Azure CycleCloud を構成できます。 詳細については、「 Web プロキシの使用」を参照してください。
CycleCloud VM の Azure ネットワーク セキュリティ グループの構成
CycleCloud VM のサブネット用に厳密な Azure ネットワーク セキュリティ グループを構成することで、CycleCloud VM からの送信インターネット アクセスを制限できます。 この方法では、Azure Firewall または HTTPS プロキシを構成する必要はありません。 これを行う最も簡単な方法は、サブネットまたは VM レベルのネットワーク セキュリティ グループでサービス タグを使用して、必要な送信 Azure アクセスを許可することです。
CycleCloud から Azure Storage へのアクセスを許可するようにサブネットの ストレージ サービス エンドポイント を構成する
"インターネット" 宛先サービス タグを使用して、既定で送信アクセスを拒否する次の NSG 送信規則を追加します。
優先順位 名前 港 / ポート プロトコル 情報源 行き先 アクション 4000 アウトバウンドをブロック [任意] [任意] [任意] インターネット 否定する 次の NSG 送信規則を追加して、宛先サービス タグによって必要な Azure サービスへの送信アクセスを 許可 します。
優先順位 名前 港 / ポート プロトコル 情報源 行き先 アクション 100 Azureストレージを許可 443 TCP [任意] Storage 許可する 101 AllowActiveDirectory 443 TCP [任意] AzureActiveDirectory 許可する 102 AllowAzureMonitor 443 TCP [任意] AzureMonitor 許可する 103 AllowAzureRM 443 TCP [任意] AzureResourceManager 許可する
クラスター ノードと CycleCloud の間の内部通信
クラスター ノードと CycleCloud サーバー間の通信を許可するには、次のポートを開きます。
| 名前 | 情報源 | 行き先 | サービス | プロトコル | ポート範囲 |
|---|---|---|---|---|---|
| amqp_5672 | クラスター ノード | CycleCloud | AMQP | TCP | 5672 |
| https_9443 | クラスター ノード | CycleCloud | HTTPS | TCP | 9443 |
ロックダウンされたネットワークでの Azure CycleCloud クラスターの起動
注
Azure CycleCloud では、送信インターネット アクセスなしでサブネット内のクラスター ノードを実行できます。 ただし、多くの場合、カスタム イメージまたは既定の CycleCloud クラスターの種類とプロジェクトのカスタマイズ、またはその両方が必要になる高度なトピックです。
クラスターの種類とプロジェクトを積極的に更新して、その作業の大部分またはすべてを排除しています。 ロックダウンされた環境でクラスターの種類またはプロジェクトでエラーが発生した場合は、サポートリクエストを開いて支援を求めてください。
送信インターネット アクセスを使用して仮想ネットワークまたはサブネットで VM または Cyclecloud クラスターを実行するには、通常、次の手順が必要です。
- 完全な機能を実現するために、クラスター VM から Azure Cyclecloud に到達できるようにします。 次のいずれか:
- クラスター VM は、HTTPS と AMQP 経由で直接 Azure Cyclecloud に接続するか、または
- クラスターの作成時に Cyclecloud ReturnProxy 機能を有効にします。 Cyclecloud は、SSH 経由で ReturnProxy VM に接続できる必要があります。
- 次の方法で、クラスター VM に必要なすべてのソフトウェア パッケージがあることを確認します。
- カスタムマネージドイメージにプレインストールする
- VM がアクセスできるパッケージ リポジトリ ミラーを提供する
- Azure Storage から VM にコピーし、Cyclecloud プロジェクトを介して直接インストールする。
- すべてのクラスター ノードが Azure Storage アカウントにアクセスできることを確認します。 このサービスおよびサポートされている他の Azure サービスへのプライベート アクセスを提供するには、Azure Storage の 仮想ネットワーク サービス エンドポイント を有効にします。
GitHub からのプロジェクトの更新
CycleCloud は、 ステージング オーケストレーション フェーズ中に GitHub からクラスター プロジェクトをダウンロードします。 このダウンロードは、初期インストール後、CycleCloud をアップグレードした後、または特定の種類のクラスターを初めて起動したときに行われます。 ロックダウンされた環境では、 github.com への HTTPS 送信トラフィックがブロックされる可能性があります。 このトラフィックがブロックされている場合、ステージング リソース フェーズ中のノードの作成は失敗します。
最初のノードの作成時に GitHub へのアクセスを一時的に開くことができる場合、CycleCloud は後続のすべてのノード用にローカル ファイルを準備します。 一時的なアクセスができない場合は、必要なファイルを別のマシンからダウンロードして CycleCloud にコピーできます。
まず、クラスターに必要なプロジェクトとバージョン (Slurm 3.0.8 など) を決定します。 通常は、特定のプロジェクトのデータベース内で最も高いバージョン番号です。 最新バージョンを見つけるには、GitHub プロジェクト ページにアクセスするか、CycleCloud に最新バージョンのクエリを実行します。
CycleCloud に対してクエリを実行するには (多くの場合、複数のバージョンが一覧表示されていることに注意してください)。
/opt/cycle_server/cycle_server execute 'select Name, Version, Url from cloud.project where name == "slurm" order by Version'
Name = "slurm"
Version = "3.0.8"
Url = "https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"
このプロジェクト バージョンとすべての依存関係は 、リリース タグで確認できます。
すべてのリリース成果物を手動でダウンロードできますが、CycleCloud CLI にはこの操作のヘルパーが用意されています。
まず、CycleCloud CLI を使用して、GitHub からリポジトリをフェッチして準備します。 この操作は、CycleCloud が "ステージング リソース" フェーズ中に実行するのと同じ操作です。
RELEASE_URL="https://github.com/Azure/cyclecloud-slurm/releases/3.0.8"
RELEASE_VERSION="3.0.8"
mkdir "${RELEASE_VERSION}"
cd "${RELEASE_VERSION}"
# Download release artifacts from githug (on a machine with github access)
cyclecloud project fetch "${RELEASE_URL}" .
# Create a tarball with the project files pre-staged
cyclecloud project build
mv ./build/slurm "./${RELEASE_VERSION}"
tar czf "slurm-${RELEASE_VERSION}.tgz" ./blobs "./${RELEASE_VERSION}"
次に、パッケージ化されたプロジェクト tarball を CycleCloud サーバーにコピーし、抽出します。
#... copy the "slurm-${RELEASE_VERSION}.tgz" file to the Cyclecloud server in /tmp
sudo -i
mkdir -p /opt/cycle_server/work/staging/projects/slurm
cd /opt/cycle_server/work/staging/projects/slurm
tar xzf "/tmp/slurm-${RELEASE_VERSION}.tgz"
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging
これらのファイルをローカルでステージングすると、CycleCloud によってファイルが検出され、GitHub からのダウンロードは試みられません。