本文介绍如何创建自己的自定义 VM 映像,为 HPC Pack 2016 群集部署 IaaS 计算节点。
创建自定义 VM 映像的方法有两种不同的方法,一种用于 HPC Pack 2016 Update 3 和 HPC Pack 2019,另一种用于 HPC Pack 2016 RTM、HPC Pack 2016 Update 1 和 HPC Pack 2016 Update 2。 应根据头节点的 HPC Pack 版本选择正确的方法。
注释
HPC Pack Update 3 VM 映像与 HPC Pack Update 2(及更早版本)VM 映像之间的差异是 HPC Pack 计算节点和 Windows Management Framework 5.1 必须在后者中预安装。
小窍门
还可以使用 Azure 映像生成器 功能自动创建自定义 VM 映像。
为 HPC Pack 2016 Update 3 和 HPC Pack 2019 创建自定义 VM 映像
步骤 1:在 Azure 中创建虚拟机
在 Azure 门户中,创建具有以下作系统之一的 Azure 虚拟机: Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019。
步骤 2:在虚拟机中安装和配置自己的应用程序
登录到虚拟机,并安装和配置自己的应用程序。
步骤 3:使用 Sysprep 通用化虚拟机
详细链接: 在创建映像之前通用化 VM
- 登录到 Windows 虚拟机。
- 以管理员身份打开“命令提示符”窗口。
- 删除 panther 目录 (C:\Windows\Panther)。
- 然后将目录更改为 %windir%\system32\sysprep,然后运行:sysprep.exe /oobe /generalize /mode:vm /shutdown
Sysprep 完成通用化 VM 后,VM 将关闭。 不要重新启动 VM。
Sysprep 完成运行后,将虚拟机的状态设置为“通用化”。
Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized
步骤 4:创建 VM 映像
打开 Azure 门户,从虚拟机列表中查找虚拟机。 在虚拟机的“ 概述 ”页上,单击“ 捕获 ”以从虚拟机创建托管映像。
- 打开 Azure 门户。
- 在左侧菜单中,单击“虚拟机”,找到虚拟机。
- 在虚拟机的 “概述 ”页上的上部菜单中,单击“ 捕获”。
- 在 “名称”中,键入要用于图像的名称。
- 在 资源组 中,选择“ 新建 ”并键入名称,或选择“ 使用现有 ”并从下拉列表中选择要使用的资源组。
- 创建映像后,选择“自动删除此虚拟机”。
- 单击“ 创建 ”以创建 VM 映像。
为 HPC Pack 2016 Update 2 创建自定义 VM 映像(或更早版本)
步骤 1:使用 HPC Pack 2016 Update 2 创建或选择 Azure IaaS 计算节点(或更早版本)
可以创建 Azure 虚拟机,并在其上手动安装正确的 HPC Pack 2016 计算节点版本,或选择现有 HPC Pack 2016 群集中当前运行的 Azure IaaS 计算节点。
如果未在 IaaS 计算节点中安装 Windows Management Framework (WMF) 5.1 ,请下载并安装它。
步骤 2:在 Azure IaaS 计算节点中安装和配置自己的应用程序
登录到虚拟机,并安装和配置自己的应用程序。
步骤 3:从虚拟机卸载 VM 扩展
在 Azure 门户中,找到相应的 Azure 虚拟机,单击“ 扩展”,卸载所有 VM 扩展(如果有)。
步骤 4:从计算节点清除群集特定信息
登录到 Azure IaaS 计算节点,以管理员身份打开 Windows PowerShell 控制台,并运行以下 PowerShell 脚本以清除群集特定信息。
# Step 1. Stop all the HPC services and change StartupType to Disabled
$hpcServices = @("HpcManagement", "HpcNodeManager", "msmpi", "HpcMonitoringClient", "HpcSoaDiagMon")
foreach($svc in $hpcServices)
{
Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue
Set-Service -Name $svc -StartupType Disabled
}
# Step 2: Remove HPC logs and temp files from this node
$datadir = [System.Environment]::GetEnvironmentVariable("CCP_DATA", [System.EnvironmentVariableTarget]::Machine)
$logFilesPath = [System.IO.Path]::Combine($datadir, "LogFiles")
if(Test-Path $logFilesPath -PathType Container)
{
Get-ChildItem -Path $logFilesPath | select -ExpandProperty FullName | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
}
Get-ChildItem -Path C:\Windows\Temp | select -ExpandProperty FullName | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
Get-ChildItem -Path $env:TEMP | select -ExpandProperty FullName | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
# Step 3: Remove CustomData.bin if it exists
Remove-Item "$env:SYSTEMDRIVE\AzureData\CustomData.bin" -Force -ErrorAction SilentlyContinue
# Step 4: Remove the HPC communication certificate
$thumbprint = Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\HPC -Name SSLThumbPrint
Remove-Item Cert:\LocalMachine\My\$thumbprint -ErrorAction SilentlyContinue
Remove-Item Cert:\LocalMachine\Root\$thumbprint -ErrorAction SilentlyContinue
# Step 5: Clear the information of the current HPC cluster
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\HPC -Name ClusterConnectionString -Value ""
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\HPC -Name SSLThumbPrint -Value ""
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\HPC -Name NonDomainRole -Value 0 -Type DWord
if(Test-Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\HPC)
{
Set-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\HPC -Name ClusterConnectionString -Value ""
Set-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\HPC -Name SSLThumbPrint -Value ""
Set-ItemProperty -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\HPC -Name NonDomainRole -Value 0 -Type DWord
}
[Environment]::SetEnvironmentVariable("CCP_SCHEDULER", "", [System.EnvironmentVariableTarget]::Machine)
[Environment]::SetEnvironmentVariable("CCP_CLUSTERCONNECTIONSTRING", "", [System.EnvironmentVariableTarget]::Machine)
步骤 5:使用 Sysprep 通用化虚拟机
详细链接: 在创建映像之前通用化 VM
- 登录到 Windows 虚拟机。
- 以管理员身份打开“命令提示符”窗口。
- 删除 panther 目录 (C:\Windows\Panther)。
- 然后将目录更改为 %windir%\system32\sysprep,然后运行:sysprep.exe /oobe /generalize /mode:vm /shutdown
Sysprep 完成通用化 VM 后,VM 将关闭。 不要重新启动 VM。
Sysprep 完成运行后,将虚拟机的状态设置为“通用化”。
Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized
步骤 6:创建 VM 映像
打开 Azure 门户,从虚拟机列表中查找虚拟机。 在虚拟机的“ 概述 ”页上,单击“ 捕获 ”以从虚拟机创建托管映像。
- 打开 Azure 门户。
- 在左侧菜单中,单击“虚拟机”,找到虚拟机。
- 在虚拟机的 “概述 ”页上的上部菜单中,单击“ 捕获”。
- 在 “名称”中,键入要用于图像的名称。
- 在 资源组 中,选择“ 新建 ”并键入名称,或选择“ 使用现有 ”并从下拉列表中选择要使用的资源组。
- 创建映像后,选择“自动删除此虚拟机”。
- 单击“ 创建 ”以创建 VM 映像。