在鎖定的網路中運作

CycleCloud 應用程式和叢集節點可以在具有有限網際網路存取的環境中運作,不過必須保持開啟的 TCP 埠數目最少。

在鎖定的網路中安裝 Azure CycleCloud

CycleCloud VM 必須能夠連線到數個 Azure API,以協調叢集 VM,以及向 Azure Active Directory 進行驗證。 由於這些 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 價格資料)

管理 API 會以區域方式裝載,您可以在 這裡找到公用 IP 位址範圍。

Azure AD 登入是 Microsoft 365 常見 API 和服務 IP 位址範圍的一部分,請參閱 這裡

您可以 在這裡找到 Azure Insights 和 Log Analytics IP 位址範圍。

Azure CycleCloud 必須能夠存取 Azure 儲存體帳戶。 提供此服務的私人存取,以及任何其他支援的 Azure 服務的建議方式是透過虛擬網路服務端點

如果使用網路安全性群組或Azure 防火牆來限制所需網域的輸出存取,則可以設定 Azure Cyclecloud 透過 HTTPS Proxy 路由傳送所有要求。 請參閱: 使用 Web Proxy

設定 CycleCloud VM 的 Azure 網路安全性群組

限制 CycleCloud VM 的輸出網際網路存取,而不需設定Azure 防火牆或 HTTPS Proxy 的其中一種方式,就是為 CycleCloud VM 的子網設定嚴格的 Azure 網路安全性群組。 最簡單的做法是在子網或 VM 層級網路安全性群組中使用服務標籤,以允許所需的輸出 Azure 存取。

  1. 設定子網的 儲存體服務端點 ,以允許從 CycleCloud 存取 Azure 儲存體

  2. 新增下列 NSG 輸出規則,以預設使用「網際網路」目的地服務標籤拒絕輸出存取:

優先順序 名稱 連接埠 通訊協定 來源 Destination 動作
4000 BlockOutbound 任意 任意 任意 網際網路 拒絕
  1. 新增下列 NSG 輸出規則, 以允許 依目的地服務標籤對所需 Azure 服務的輸出存取:
優先順序 名稱 連接埠 通訊協定 來源 Destination 動作
100 AllowAzureStorage 443 TCP 任意 儲存體 Allow
101 AllowActiveDirectory 443 TCP 任意 AzureActiveDirectory 允許
102 AllowAzureMonitor 443 TCP 任意 AzureMonitor Allow
103 AllowAzureRM 443 TCP 任意 AzureResourceManager Allow

叢集節點與 CycleCloud 之間的內部通訊

必須開啟這些埠,才能允許叢集節點與 CycleCloud 伺服器之間的通訊:

名稱 來源 Destination 服務 通訊協定 連接埠範圍
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 儲存體複製到 VM,並直接由 Cyclecloud 專案安裝
  3. 所有叢集節點都必須能夠存取 Azure 儲存體帳戶。 為這項服務提供私人存取的建議方式,以及任何其他支援的 Azure 服務,就是為 Azure 儲存體啟用虛擬網路服務端點

來自 GitHub 的 Project 更新

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 下載它們。