共用方式為


在鎖定的網路中操作

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 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 記憶體帳戶。 若要提供此服務的私人存取,以及任何其他支援的 Azure 服務,建議方式是透過 虛擬網路服務端點

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

設定 CycleCloud VM 的 Azure 網路安全組

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

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

  2. 使用 「Internet」 目的地服務標籤,將下列 NSG 輸出規則新增至 拒絕 輸出存取:

優先權 名字 港口 協定 目的地 行動
4000 BlockOutbound 任何 任何 任何 互聯網 否認
  1. 將下列 NSG 輸出規則新增至 允許 目的地服務標籤對所需 Azure 服務的輸出存取:
優先權 名字 港口 協定 目的地 行動
100 AllowAzureStorage 443 TCP 任何 存儲 允許
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 叢集

注意

目前完全支援在子網中執行沒有輸出因特網存取的叢集節點,但它是一個進階主題,通常需要自定義映像或自定義預設 CycleCloud 叢集類型和專案或兩者。

我們正積極更新叢集類型和專案,以消除大部分或全部的工作。 但是,如果您在鎖定的環境中遇到叢集類型或項目失敗,請考慮開啟支援要求以尋求協助。

在具有輸出因特網存取的虛擬網路或子網中執行 VM 或 Cyclecloud 叢集通常需要下列各項:

  1. Azure Cyclecloud 必須可從叢集 VM 連線,才能取得完整的功能。 也:
    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 的專案更新

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"

此專案版本和所有相依性都位於 [發行卷標] 中(https://github.com/Azure/cyclecloud-slurm/releases/tag/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 tarbal 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 下載它們。