在鎖定的網路中運作
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 存取。
設定子網的 儲存體服務端點 ,以允許從 CycleCloud 存取 Azure 儲存體
新增下列 NSG 輸出規則,以預設使用「網際網路」目的地服務標籤拒絕輸出存取:
優先順序 | 名稱 | 連接埠 | 通訊協定 | 來源 | Destination | 動作 |
---|---|---|---|---|---|---|
4000 | BlockOutbound | 任意 | 任意 | 任意 | 網際網路 | 拒絕 |
- 新增下列 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 叢集通常需要下列各項:
- 必須可從叢集 VM 連線到 Azure Cyclecloud,才能取得完整功能。 下列任一方法︰
- 叢集 VM 必須能夠透過 HTTPS 和 AMQP 直接連線到 Azure Cyclecloud,或
- 必須在叢集建立期間啟用 Cyclecloud ReturnProxy 功能,而 Cyclecloud 本身必須能夠透過 SSH 連線到 ReturnProxy VM
- 叢集所需的所有軟體套件都必須是:
- 預先安裝在叢集 VM 的自訂受控映射中,或
- 可在可從 VM 存取的套件存放庫鏡像中使用,或
- 從 Azure 儲存體複製到 VM,並直接由 Cyclecloud 專案安裝
- 所有叢集節點都必須能夠存取 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 下載它們。