ロックダウンされたネットワークで動作する

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 アプリケーション Insights)
  • dc.applicationinsights.microsoft.com (Azure アプリケーション Insights)
  • dc.services.visualstudio.com (Azure アプリケーション Insights)
  • ratecard.azure-api.net (Azure Price Data)

管理 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 ネットワーク セキュリティ グループの構成

Azure Firewallまたは HTTPS プロキシを構成せずに CycleCloud VM からの送信インターネット アクセスを制限する方法の 1 つは、CycleCloud VM のサブネット用に厳密な Azure ネットワーク セキュリティ グループを構成することです。 これを行う最も簡単な方法は、サブネットまたは VM レベルのネットワーク セキュリティ グループサービス タグを使用して、必要な送信 Azure アクセスを許可することです。

  1. CycleCloud から Azure Storage へのアクセスを許可するようにサブネットの ストレージ サービス エンドポイント を構成する

  2. "インターネット" 宛先サービス タグを使用して、既定で送信アクセスを拒否するには、次の NSG 送信規則を追加します。

Priority 名前 Port Protocol ソース 到着地 アクション
4000 BlockOutbound Any Any Any インターネット 拒否
  1. 次の NSG 送信規則を追加して、宛先サービス タグによって必要な Azure サービスへの送信アクセスを 許可 します。
Priority 名前 Port Protocol ソース 到着地 アクション
100 AllowAzureStorage 443 TCP Any 記憶域 Allow
101 AllowActiveDirectory 443 TCP Any AzureActiveDirectory Allow
102 AllowAzureMonitor 443 TCP Any AzureMonitor Allow
103 AllowAzureRM 443 TCP Any AzureResourceManager Allow

クラスター ノードと CycleCloud 間の内部通信

クラスター ノードと CycleCloud サーバー間の通信を許可するには、次のポートを開く必要があります。

名前 source 宛先 サービス Protocol ポート範囲
amqp_5672 クラスタ ノード CycleCloud AMQP TCP 5672
https_9443 クラスタ ノード CycleCloud HTTPS TCP 9443

ロックダウンされたネットワークでの Azure CycleCloud クラスターの起動

注意

アウトバウンド インターネット アクセスのないサブネットでクラスター ノードを実行することは現在完全にサポートされていますが、多くの場合、カスタム イメージまたは既定の CycleCloud クラスターの種類とプロジェクトのカスタマイズ、またはその両方を必要とする高度なトピックです。

クラスターの種類とプロジェクトを積極的に更新して、その作業の大部分またはすべてを排除しています。 ただし、ロックダウンされた環境でクラスターの種類またはプロジェクトでエラーが発生した場合は、サポートリクエストを開いてサポートを依頼することを検討してください。

送信インターネット アクセスを使用して仮想ネットワークまたはサブネットで VM または Cyclecloud クラスターを実行するには、通常、次のものが必要です。

  1. 完全な機能を実現するには、クラスター VM から Azure Cyclecloud に到達できる必要があります。 次のいずれか:
    1. クラスター VM は、HTTPS と AMQP を介して Azure Cyclecloud に直接接続できる必要があります。
    2. クラスター作成時に Cyclecloud ReturnProxy 機能を有効にし、Cyclecloud 自体が SSH 経由で ReturnProxy VM に接続できる必要があります
  2. クラスターに必要なすべてのソフトウェア パッケージは、次のいずれかである必要があります。
    1. クラスター VM のカスタム マネージド イメージにプレインストールされているか、または
    2. VM からアクセス可能なパッケージ リポジトリ ミラーで使用できます。
    3. Azure Storage から VM にコピーされ、Cyclecloud プロジェクトによって直接インストールされる
  3. すべてのクラスター ノードが Azure Storage アカウントにアクセスできる必要があります。 このサービスとその他のサポートされている Azure サービスへのプライベート アクセスを提供する推奨される方法は、Azure Storage のVirtual Network サービス エンドポイントを有効にすることです。

GitHub からのプロジェクト 更新

Cyclecloud は、"ステージング" オーケストレーション フェーズ中に GitHub からクラスター プロジェクトをダウンロードします。 このダウンロードは、初期インストール後、Cyclecloud のアップグレード後、または特定の種類のクラスターを初めて起動したときに行われます。 ロックダウンされた環境では、 github.com への HTTPS 送信トラフィックがブロックされる可能性があります。 このような場合、ステージング リソース フェーズ中のノードの作成は失敗します。

最初のノードの作成時に GitHub へのアクセスを一時的に開くことができる場合、CycleCloud は後続のすべてのノードのローカル ファイルを準備します。 一時的なアクセスができない場合は、必要なファイルを別のマシンからダウンロードして CycleCloud にコピーできます。

まず、クラスターに必要なプロジェクトとバージョン (Slurm 2.5.0 など) を決定します。 通常は、特定のプロジェクトのデータベースで最も高いバージョン番号です。

/opt/cycle_server/cycle_server execute 'select * from cloud.project where name == "slurm"'

AdType = "Cloud.Project"
Version = "2.5.0"
ProjectType = "scheduler"
Url = "https://github.com/Azure/cyclecloud-slurm/releases/2.5.0"
AutoUpgrade = false
Name = "slurm"

このプロジェクトのバージョンとすべての依存関係は、[リリース タグ] (https://github.com/Azure/cyclecloud-slurm/releases/tag/2.5.0) にあります。 リリースのすべての成果物をダウンロードする必要があります。 最初にコード成果物をダウンロードし、追加の依存関係の BLOB ディレクトリを作成します。

wget https://github.com/Azure/cyclecloud-slurm/archive/refs/tags/2.5.0.tar.gz
tar -xf 2.5.0.tar.gz 
cd cyclecloud-slurm-2.5.0 && mkdir blobs 
#... download all other release artifacts to the /blobs directory with wget ...
wget -P "blobs/" https://github.com/Azure/cyclecloud-slurm/releases/download/2.6.1/cyclecloud_api-8.1.0-py2.py3-none-any.whl
#... copy all the files to the Cyclecloud server
#... then on the Cyclecloud server:
cyclecloud project build
mkdir -p /opt/cycle_server/work/staging/projects/slurm/2.5.0
mkdir -p /opt/cycle_server/work/staging/projects/slurm/blobs
cp build/slurm/* /opt/cycle_server/work/staging/projects/slurm/2.5.0/
cp blobs/* /opt/cycle_server/work/staging/projects/slurm/blobs/
chown -R cycle_server:cycle_server /opt/cycle_server/work/staging

これらのファイルがローカルでステージングされると、Cyclecloud はファイルを検出し、GitHub からダウンロードしようとしません。