對於間歇性使用 CycleCloud 並希望在作業運行之間關閉 CycleCloud 以避免與長時間運行的虛擬機相關的成本的客戶,在 容器實例 中運行 Azure CycleCloud 是一種很好的解決方案。
先決條件
您需要在要從中訪問 CycleCloud 的電腦或伺服器上安裝並運行 Docker 。 下載適用於您的作系統的 安裝包 ,並按照 Docker 的安裝說明進行作。
CycleCloud 容器映像
設置 Docker 並正常工作后,可以運行以下命令從 Microsoft 的容器註冊表中拉取 CycleCloud 容器映射:
docker run mcr.microsoft.com/hpc/azure-cyclecloud
就是這樣! 容器將啟動,並且 CycleCloud 將可透過 Web 瀏覽器 https://localhost存取 。 從那裡,按照配置功能表進行作。
設定
該容器運行 HTTP (80) 和 HTTPs (443) 的 Web 應用程式。 由於 CycleCloud 正在運行 JVM (Java 虛擬機) ,因此應協調 JVM 的 HeapSize 和分配給容器的記憶體。 建議將 HeapSize 設置為容器記憶體分配的一半。 將命令 docker run -m
與以 MB 為單位指定的環境變數一起使用。 例如:
docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 myrepo/cyclecloud:$ver
警告
如果 CycleCloud 服務失敗,容器進程將終止,所有群集數據都將丟失。 為避免這種情況,請將您的容器實例配置為使用持久性存儲作為備份。
永續性記憶體
如果 Azure 容器實例發生故障,您的數據可能會丟失,並且無法恢復 HPC 集群的託管運行狀態。 強烈建議將 Azure 容器實例配置為使用 Azure 檔共用中的持久存儲作為後盾。
如果 Azure 檔共用掛載在 /azurecyclecloud
,則 CycleCloud 容器將使用持久存儲進行以下作:
- 日誌
- 備份恢復點
為了更好地瞭解 Azure 檔共用,請參閱演示 與 Azure 容器實例集成的文檔。
在下面的示例中,存儲共用將裝載在 /azurecyclecloud 中,並將收集日誌和備份點。 使用此配置,可以從故障中恢復 Azure CycleCloud 數據,或用於遷移到其他服務(如虛擬機)中的託管。
az container create \
--resource-group ${ResourceGroup} \
--location ${Location} \
--name ${Name} \
--dns-name-label ${DNSName} \
--image mcr.microsoft.com/hpc/azure-cyclecloud \
--ip-address public \
--ports 80 443 \
--cpu 2 \
--memory 4 \
-e JAVA_HEAP_SIZE=2048 \
--azure-file-volume-account-name ${STORAGE_ACCOUNT_NAME} \
--azure-file-volume-account-key ${STORAGE_KEY} \
--azure-file-volume-share-name ${SHARE_NAME} \
--azure-file-volume-mount-path /azurecyclecloud
支援的版本
可以在產品 dockerhub 頁面中找到 CycleCloud 容器映射的支援版本。 映像可以作為 Azure 容器實例啟動(使用現有資源組、位置以及首選容器和 dns 名稱)。 CycleCloud 包含 SSL 證書生成,因此,如果指定參數兩次 (一次用於 az cli,另一次用於設置環境變數) ,則容器能夠自動建立有效的 SSL 證書。
#!/bin/bash
ResourceGroup="rg-name"
Location="westus2"
CIName="ci-name"
CIDNSName="ci-name"
az container create -g ${ResourceGroup} \
--location ${Location} \
--name ${CIName} \
--dns-name-label ${CIDNSName} \
--image mcr.microsoft.com/hpc/azure-cyclecloud \
--ip-address public \
--ports 80 443 \
--cpu 2 --memory 4 \
-e JAVA_HEAP_SIZE=2048
在上面的示例中,容器和 cyclecloud UI 將在 .https://${CIDNSName}.${Location}.azurecontainer.io
其他組態
該容器運行 HTTP (80) 和 HTTPs (443) 的 Web 應用程式。 由於 CycleCloud 正在運行 JVM (Java 虛擬機) ,因此應協調 JVM 的 HeapSize 和分配給容器的記憶體。 建議將 HeapSize 設置為容器記憶體分配的一半。 將命令 docker run -m
與以 MB 為單位指定的環境變數一起使用。 例如:
docker run -m 2G -e "JAVA_HEAP_SIZE=1024" -p 8080:80 -p 8443:443 mcr.microsoft.com/hpc/azure-cyclecloud