ノード ネットワークの構成

Azure CycleCloud クラスター ノードには、ネットワークの既定の設定が付属しています。 これらの設定は、クラスター テンプレートのノード定義セクションで変更できます。

ネットワーク インターフェイス

Azure CycleCloud は、クラスター用の Azure VM を作成するときに、仮想ネットワーク インターフェイスを VM に接続します。 仮想マシン スケール セットの場合、仮想ネットワーク インターフェイスはロード バランサーに接続します。

クラスター テンプレートのノードのネットワーク インターフェイス定義セクションを変更することで、ノードのネットワーク設定を構成できます。

パブリック IP アドレスの割り当て

ノードに AssociatePublicIpAddress 属性を追加して、ノードがパブリック IP アドレスを受信するかどうかを指定します。 例えば次が挙げられます。

[[node scheduler]]
[[[network-interface eth0]]]
    AssociatePublicIpAddress = true

上記の構成では、仮想ネットワークのネットワーク セキュリティ グループで許可されているポート上のスケジューラ ノードへのパブリック アクセスが許可されます。

既定では、ノードは、クラスターを起動するたびに変更される動的パブリック IP アドレスを取得します。 静的パブリック IP アドレスをノードに割り当てるには、まず Azure サブスクリプションにパブリック IP アドレスを作成します。 次に、 PublicIP 属性をノード ネットワーク インターフェイス セクションに追加し、作成された PublicIP オブジェクトのリソース ID を割り当てます。

[[node scheduler]]
[[[network-interface eth0]]]
    PublicIp = /subscriptions/${subscription_id/resourceGroups/${resource_group_name}/providers/Microsoft.Network/publicIPAddresses/${public-ip-name}

または、Azure サブスクリプションにネットワーク インターフェイスを作成し、 そのネットワーク インターフェイスにパブリック IP アドレスをアタッチします。 次に、ノード構成でそのネットワーク インターフェイス ID を指定します。

[[node scheduler]]
[[[network-interface eth0]]]
    NetworkInterfaceId = /subscriptions/${subscription_id/resourceGroups/${resource_group_name}/providers/Microsoft.Network/networkInterfaces/${network-interface-name}

パブリック DNS ラベルの割り当て

パブリック ネットワーク インターフェイスに PublicDnsLabel を追加すると、その IP アドレスの DNS 名をカスタマイズできます。

[[node scheduler]]
[[network-interface eth0]]
    AssociatePublicIpAddress = true
    PublicDnsLabel = myuniquename

上記の構成では、静的に割り当てられたパブリック IP アドレスと、に解決される VM の DNS エントリが提供されます ( VM の対応する Azure の場所と一致します)。

プライベート IP アドレスの割り当て

既定では、仮想マシンは Azure で動的に割り当てられたプライベート IP アドレスを取得します。 場合によっては、ノードの固定プライベート IP アドレスが必要になります。 このオプションを構成するには、クラスター構成のネットワーク インターフェイス セクションを使用します。

[[[network-interface eth0]]]
PrivateIp = x.x.x.x

指定するプライベート IP アドレスは、関連付けられているサブネットに対して有効である必要があります。 Azure では、サブネット内の最初の 4 つの IP と最後の IP が予約されます。 これらのアドレスをノードに手動で割り当てることはできません。

ネットワーク セキュリティ グループ

Azure CycleCloud は、ユーザー定義の仮想ネットワークとサブネットに仮想マシンと仮想マシン スケール セットをプロビジョニングします。 仮想ネットワークに関連付けられているネットワーク セキュリティ グループは、ノード上の特定のポートへのアクセスを制御します。 詳細については、 仮想ネットワークのドキュメントを参照してください。

AssociatePublicIpAddress = trueを使用してノードのネットワーク インターフェイスを構成したり、PublicIpを割り当てたりすると、ノードは自動的にネットワーク セキュリティ グループを受け取ります。

このネットワーク セキュリティ グループは、 SecurityGroupを使用して指定できます。 SecurityGroupを省略すると、ノードの input-endpoints セクションからネットワーク セキュリティ グループが自動的に生成されます。 インターフェイスに指定する SecurityGroup は、 input-endpoints用に作成された自動 nsg をオーバーライドします。 SecurityGroupを指定しない限り、すべてのインターフェイスは、input-endpoint定義から自動 nsg を取得します。

必要なポートとトラフィック

CycleCloudのネットワークセキュリティグループ(NSG)、ファイアウォールの設定、またはアプライアンスのルーティングを行う際、以下の表を権威的なトラフィックマトリックスとして使用してください。 インバウン ドと アウトバウン ドは、それぞれ宛先と送信元でのルールの方向を表します。 各送信元と宛先を該当するサブネット、プライベートIPアドレス、または承認されたクライアント範囲に制限します。

CycleCloudとクラスタトラフィック

Source 行き先 方向 Protocol Port Purpose Applicability
管理者およびAPIクライアント CycleCloud VM Inbound TCP 443 CycleCloudのウェブインターフェースとHTTPS上のAPI CycleCloudにアクセスするユーザーおよびツールに必須です。 承認された民間または企業の供給源をご利用ください。
Administrators CycleCloud VM Inbound TCP 22 管理者SSHアクセス Optional. Azure Bastion、VPN、ExpressRouteを好み、送信元を制限しましょう。
クラスター ノード CycleCloud VM クラスターノードからのアウトバウンド;CycleCloudへのインバウンド TCP 9443 ノードステータス、APIリクエストの自動スケーリング、HTTPSによるサービス同期 CycleCloud 8におけるノードとCycleCloud間の直接通信に必要です。
CycleCloud VM プロキシノードの返還 CycleCloudからの送信; プロキシへの受信 TCP 22 リターンプロキシのSSHトンネルを確立します 返品プロキシを有効にした時のみ必要です。
クラスター ノード プロキシノードの返還 クラスタノードからのアウトバウンド;プロキシへのインバウンド TCP 37140 リターンプロキシ経由でHTTPSトラフィックをCycleCloudポート9443に転送します。 返品プロキシを有効にした時のみ必要です。
CycleCloud VM クラスタスケジューラ、ログイン、またはその他の管理ノード CycleCloud からの送信; クラスターノードへの受信 TCP 22 ノードオーケストレーション、システムアクセス、ジョブ監視 CycleCloudがSSHを使って管理ノードに接続する必要がある場合に必要です。
クラスターユーザー スケジューラまたはログインノード Inbound TCP 22 ユーザーSSHアクセスとジョブ提出 クラスタアクセス設計に基づくオプションです。 送信元は承認されたユーザーネットワークに限定してください。
管理者または利用者 Windowsクラスタノード Inbound TCP 3389 リモート デスクトップ プロトコル (RDP) アクセス Windowsノードではオプションです。 送信元は承認されたユーザーネットワークに限定してください。

CycleCloud 7はまた、クラスタノードからCycleCloud VMへTCP 5672を使用して、高度なメッセージキューイングプロトコル(AMQP)トラフィックを処理しています。 リターンプロキシが有効になると、CycleCloud 7ノードはTCP 37141をプロキシに使い、トラフィックをポート5672に転送します。 CycleCloud 8専用の展開のためにポート5672や37141を開かない方がいいです。

スケジューラ、監視、ワークロードトラフィック

Source 行き先 方向 Protocol Port Purpose Applicability
Slurmクライアントとコンピュートノード スラームスケジューラノード スケジューラーへの入力 TCP 6817 slurmctld との通信 デフォルトのポートを使うとSlurmには必須です。 SlurmctldPortをカスタマイズする場合はルールを更新してください。
スラームスケジューラノード スラーム計算ノード 計算ノードへのインバウンド TCP 6818 slurmd との通信 デフォルトのポートを使うとSlurmには必須です。 SlurmdPortをカスタマイズする場合はルールを更新してください。
スケジューラおよび計算ノード スケジューラおよび計算ノード 受信と送信 スケジューラ定義 スケジューラ定義済み スケジューラデーモンとオートスケーリングアダプター通信 選択したスケジューラーでは必須です。 PBS Proでは、IBM LSF、Grid Engine、またはHTCondorが、そのスケジューラとクラスタテンプレートで設定したポートを許可しています。 CycleCloudは共通の一つのレンジを定義していません。
CycleCloud 7 VM クラスタプライマリノード CycleCloud からの送信; プライマリ ノードへの受信 TCP 8652 神経節モニタリング CycleCloud 7のみです。 CycleCloud 8はAzure Monitorからクラスタのメトリクスを取得し、このインバウンドルールを必要としません。
クラスター ノード 共有ファイルシステムエンドポイント インバウンドとアウトバウンド TCP 2049 ネットワークファイルシステム(NFS)アクセス Optional. NFSベースの共有ストレージにのみ必要です。 選択したNFSバージョンに必要な追加ポートを追加し、マウント設定を行ってください。
クラスター ノード ディレクトリサービス インバウンドとアウトバウンド TCP 389人または636人 軽量ディレクトリアクセスプロトコル(LDAP)、またはTLS認証上のLDAP Optional. 暗号化されたLDAPにはポート636を好みます。 アイデンティティデザインで必要なポートを使いましょう。

標準的なSlurm展開では、MungeクライアントはUnixドメインソケットを介してローカル munged デーモンと通信します。 TCPポート4065をノード間NSGルールとして追加するのは、カスタムコンポーネントがそのポートを明示的に使っている場合を除きましょう。

Azure サービスおよびパッケージのエグレス

Source 行き先 方向 Protocol Port Purpose Applicability
CycleCloud VM AzureResourceManager サービス タグ 送信 TCP 443 Azure リソースのデプロイおよび管理 必須です。
CycleCloud VM AzureActiveDirectory サービス タグ 送信 TCP 443 Microsoft Entra ID に対して認証する Microsoft Entra認証または管理型IDを使用する展開時に必要です。
CycleCloud VM AzureMonitor サービスタグと必要なテレメトリエンドポイント 送信 TCP 443 メトリックを取得し、テレメトリを送信 CycleCloud 8の監視に必須です。 完全限定ドメイン名(FQDN)でフィルタリングするファイアウォールについては、「 ロックダウンネットワークで動作」に記載されているテレメトリーおよびアプリケーションインサイトエンドポイントを許可してください。
CycleCloud VM ratecard.azure-api.net 送信 TCP 443 Azure の価格データを取得する 費用見積もりに必須です。 利用データはRateCard APIアクセスなしでも利用可能ですが、コストは表示されません。
CycleCloud VM およびクラスタノード Storage サービスタグ、サービスエンドポイント、またはプライベートエンドポイント 送信 TCP 443 CycleCloud ストレージとステージ済みのクラスター成果物にアクセスする 必須です。 プライベートエンドポイントを使う場合は、プライベートDNSを設定し、公開ストレージアクセスを明示的に制限または無効にしてください。
CycleCloud VM およびクラスタノード 承認済みパッケージリポジトリとGitHubダウンロードエンドポイント 送信 TCP 443 インストールパッケージとCycleCloudプロジェクトをダウンロード カスタムイメージ、プライベートミラー、事前段階プロジェクトからアーティファクトが入手できない場合のみ必要です。 ダウンロードリダイレクトで到達した github.com および到達先のホストを許可するか、承認されたファイアウォールやHTTPSプロキシ経由でトラフィックをルーティングしてください。

NSGはステートフルなので、レスポンストラフィック用の別ルールは必要ありません。 Azure Firewall、ネットワーク仮想アプライアンス、オンプレミスファイアウォールを使用する場合は、同等のルートとルールを設定してください。 ロックダウン展開については、「 ロックダウンネットワークでの運用」を参照してください。

ノード配列内の入力エンドポイント

[[nodearray execute]]
  [[[network-interface eth0]]]
    AssociatePublicIpAddress = true

  [[[input-endpoint SSH]]]
  PrivatePort = 22
  PublicPort = 10000

  [[[input-endpoint MyCustomPort]]]
  PrivatePort = 999
  PublicPort = 10999
  Protocol = tcp

上記の構成では、ネットワーク セキュリティ グループが仮想ネットワークに対して許可するポート上の実行ノードへのパブリック アクセスを有効にします。 ノード配列の場合、 PublicPort は配列内のノードの基本ポート番号です。 ノード配列用に予約されているポートの範囲は、エンドポイントごとに 500 ポートです。 エンドポイントは既定で TCP プロトコルですが、UDP は Protocol = UDPを設定することでもサポートされます。 既定では、ノードは、クラスターを起動するたびに変更される動的パブリック IP アドレスを取得します。 静的パブリック IP アドレスをノードに割り当てるには、プライマリ インターフェイスのネットワーク インターフェイス構成に PublicIP を追加します。

リターン プロキシ ノードの場合、 AssociatePublicIpAddressを指定しないと、システムによってパブリック IP アドレスが自動的に作成されます。 AssociatePublicIpAddressを False に設定すると、ノードは警告で失敗し、ノードの自動 nsg は作成されません。

注

AssociatePublicIpAddressを使用してノードを起動すると、ノードまたはクラスターを削除するまで、ノードはその IP アドレスを保持します。