练习 - 将磁盘添加到 HPC 集群的调度器节点
Azure CycleCloud 依赖于模板来定义群集配置。 其默认实现包括最常见的计划程序内置模板,但可以在 Azure CycleCloud GitHub 存储库中找到其他几个模板。
回想一下,想要使用自定义的 Azure CycleCloud 模板测试实现群集的过程。 为此,你将利用Azure CycleCloud GitHub存储库,该存储库托管了由 Microsoft 精心策划的 Slurm 项目。 通过在此存储库中更改调度程序节点的存储配置,修改现有的群集模板,随后将新修改的模板导入到 Azure CycleCloud 应用程序中,使用该应用程序的图形界面创建群集,并最终验证存储配置的更改。
重要
若要完成本模块中的练习,必须满足以下先决条件:
- 拥有在三组 VM 大小中具有可用 vCPU 核心的 Azure 订阅:
- 至少 DSv3 系列的 4 个 vCPU 核心
- FSv2 系列至少 100 个 vCPU 核心
- NC 系列至少有 48 个 vCPU 核心
- 拥有在 Azure 订阅中具有所有者或参与者角色的 Microsoft 帐户或 Microsoft Entra 帐户。
- 将 Azure CycleCloud 应用程序部署到可通过与其网络接口关联的公共 IP 地址访问的 Azure VM。
- 将 Azure CycleCloud 应用程序配置为具备“所有者”或“参与者”角色级别访问 Azure 订阅的权限。
- 拥有具有管理员角色的 Azure CycleCloud 应用程序用户帐户。
- 创建可在其中部署群集节点的 Azure 虚拟网络子网。
- 具有用于配置 Azure CycleCloud 应用程序的 SSH 密钥对的私钥。
注释
在本模块的最后一个练习中,需要私钥直接连接到群集节点。
在本练习中,你将执行以下任务:
- 任务 1:安装和配置 Azure CycleCloud CLI
- 任务 2:配置 Azure CycleCloud Slurm 项目
- 任务 3:实现自定义 Azure CycleCloud 模板
- 任务 4:启动新群集并检查其存储配置
任务 1:安装和配置 Azure CycleCloud CLI
此练习和后续练习中的大多数管理任务都使用 Azure CycleCloud CLI,因此首先安装它并将其连接到 Azure CycleCloud 应用程序。 为了简化初始设置,你将使用 Azure Cloud Shell。
注释
或者,可以登录到托管 Azure CycleCloud 应用程序的 Azure VM,其中已安装 Azure CycleCloud CLI。
在计算机上,打开任何与 Azure 门户兼容的 Web 浏览器,导航到 Azure 门户,并在出现提示时,使用 Microsoft 帐户或在 Azure 订阅中具有参与者或所有者角色的 Microsoft Entra 帐户进行身份验证,你将在本模块中使用该订阅。
注释
Azure 门户支持最常见的新式 Web 浏览器,包括当前版本的 Microsoft Edge、Google Chrome、Mozilla Firefox 和 Apple Safari。
在 Azure 门户中,通过在搜索文本框旁边的工具栏中选择其图标,打开 Cloud Shell 。
如果系统提示选择“Bash”或“PowerShell”,请选择“Bash”。
注释
如果这是你第一次启动 Azure Cloud Shell,并且你会看到“ 你没有装载存储 ”消息,请选择在本练习中正在使用的订阅,然后选择“ 创建存储”。
在 Azure Cloud Shell 窗格中的 Bash 会话中,运行以下命令,将变量的值设置为 Azure CycleCloud 应用程序服务器的公共 IP 地址(将占位符
<public_ip_address>
替换为实际的公共 IP 地址):PIP=<public_ip_address>
运行以下命令,下载包含特定于 Azure CycleCloud 实例的 CLI 安装程序的 .zip 文件:
curl -O --insecure https://$PIP/static/tools/cyclecloud-cli.zip
连续运行以下命令以提取和执行执行 Azure CycleCloud CLI 安装的脚本:
unzip ./cyclecloud-cli.zip cd ./cyclecloud-cli-installer ./install.sh
注释
忽略有关路径环境变量的任何消息,并继续执行下一步。
运行以下命令以建立与 Azure CycleCloud 实例的连接,其中
<username>
和<password>
占位符表示具备管理员角色的 Azure CycleCloud 应用程序用户帐户的凭据:cyclecloud initialize --batch --url=https://$PIP --username=<username> --password=<password> --verify-ssl=false
注释
在 Azure CycleCloud 应用程序配置中,将
--verify-ssl
参数设置为false
适应使用自签名证书或来自不受信任的证书颁发机构的证书的情形。运行以下命令,通过显示其保险箱配置来验证与 Azure CycleCloud 实例的连接:
cyclecloud locker list
注释
输出应包含在 CycleCloud 中注册的每个 Azure 订阅的保险箱名称及其在各个 Azure 存储帐户中各自的容器的名称。 应记录与要用于此实验室的 Azure 订阅对应的储物柜的名称,因为稍后在本练习中需要用到它。 命令的输出采用以下格式(其中
<locker-name>
占位符表示保险箱的名称,<storage_account_name>
占位符表示托管该保险箱的存储帐户的名称,<container_name>
占位符表示该存储帐户中的保险箱容器的名称):<locker-name> (az://<storage_account_name>/<container_name>)
任务 2:配置 Azure CycleCloud Slurm 项目
接下来,你将配置一个示例 Azure CycleCloud Slurm 项目。 你将利用 Azure CycleCloud GitHub 存储库中的现有 Slurm 项目。 你将将其提取到 Azure Cloud Shell 中的主目录中,然后将其上传到 Azure CycleCloud 保险箱。
在计算机上,在 Azure Cloud Shell 窗格中的 Bash 会话中,运行以下命令以创建项目目录,并将 Slurm 项目从相应的 GitHub 存储库提取到其中。
mkdir ~/cyclecloud-slurm && cd ~/cyclecloud-slurm cyclecloud project fetch https://github.com/Azure/cyclecloud-slurm .
注释
请确保在第二个命令末尾添加尾随句点。
运行以下命令以指定默认保险箱并将项目上传到其中(将占位符
<locker_name>
替换为在上一任务中标识的保险箱的名称,例如cc-lab-subscription-storage
):cyclecloud project default_locker <locker_name> cyclecloud project upload
注释
或者,可以运行
cyclecloud project upload <locker_name>
,其中占位符<locker_name>
指定保险箱名称。注释
只要项目文件的各个副本成功,就请忽略与 azcopy 相关的错误消息,其内容为
Cannot perform sync due to error: sync must happen between source and destination of the same type, e.g., either file <-> file, or directory/container <-> directory/container
,后跟Upload failed!
。 若要确认这一点,请验证最终作业状态是否列为Completed
,并确保传输失败为零。
任务 3:实现自定义 Azure CycleCloud 模板
现在,你将下载并修改与提取的基于 GitHub 的项目兼容的 Azure CycleCloud 模板示例。 你将使用它来定义自定义的存储配置,其中包括附加到调度节点并通过网络文件系统(NFS)导出的额外磁盘。 经过此修改,你将将其导入 Azure CycleCloud 应用程序。
注释
可以通过导航到 Azure/cyclecloud-slurm 存储库,通过 Web 浏览器检查模板的内容。
在计算机上的 Web 浏览器窗口中,在 Azure Cloud Shell 窗格中显示 Bash 会话,运行以下命令,将工作目录更改为新提取的存储库:
cd ~/cyclecloud-slurm/templates
运行以下命令以创建原始群集模板的备份:
cp slurm.txt slurm.bak.txt
运行以下命令以在 nano 编辑器中打开下载的模板:
nano slurm.txt
注释
可以使用任何其他文本编辑器(包括 Azure Cloud Shell 内置编辑器),而不是 nano 编辑器。
在 nano 编辑器界面中,移动到
[[node scheduler]]
分区。 在该部分中,找到[[[volume shared]]]
子节,移动到行Persistent = ${NFSType == "Builtin"}
,并在其后面添加以下内容:# Add 2 premium disks in a RAID 0 configuration to the NFS export [[[volume nfs-1]]] Size = 128 StorageAccountType = Premium_LRS Mount = nfs Persistent = true [[[volume nfs-2]]] Size = 128 StorageAccountType = Premium_LRS Mount = nfs Persistent = true [[[configuration cyclecloud.mounts.nfs]]] mountpoint = /mnt/exports/lab fs_type = ext4 raid_level = 0
注释
如果使用 Windows 计算机,可以使用 Shift + Insert 组合键粘贴剪贴板的内容。
注释
所做的更改在基于条带的卷中定义了两个 128 GB 高级存储磁盘,这些磁盘将在其预配期间自动装载到头节点上。 卷将使用 /mnt/exports/ 装入点,并将自动格式化为 ext4 文件系统。 该
Persistent = true
设置指示在终止群集时磁盘将保留,但如果删除群集,磁盘将自动删除。注释
Azure CycleCloud 将卷实现为 Azure 托管磁盘。
在 Nano 编辑器界面中,选择 Ctrl + O 组合键,选择 Enter 键,然后选择 Ctrl + X 组合键以保存所做的更改并关闭文件。
注释
此时,可以通过 CLI 连接到 Azure CycleCloud 应用程序以导入模板。
运行以下命令,将上一任务中修改的模板导入 Azure CycleCloud 应用程序:
cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt
注释
该命令将显示导入的模板的名称、计划程序的状态
scheduler: Off -- --
和总节点数(Total nodes: 1
)。
任务 4:启动新群集并检查其存储配置
为了结束本练习,你将验证导入到 Azure CycleCloud 应用程序的模板是否新建群集并查看其头节点的存储配置以提供预期功能,从而确保它包含由两个永久性磁盘组成的卷。
在计算机上,打开另一个浏览器窗口并导航到 https://< IP_address> URL(将 <IP_address> 占位符替换为 Azure CycleCloud 应用程序服务器的公共 IP 地址)。 如果出现提示,请确认是否继续。
如果系统提示进行身份验证,请通过提供用于配置 Azure CycleCloud CLI 的同一 Azure CycleCloud 应用程序用户帐户的凭据登录。
在 Azure CycleCloud 图形界面中,导航到 “群集 ”页并选择 +。
在创建新群集页面上,选择标记为Slurm的图标,该图标为每个顶点带有小圆圈的等腰三角形。
在“新建 Slurm 群集”页的“关于”选项卡上,在“群集名称”文本框中输入 contoso-custom-slurm-lab-cluster。
在“新建 Slurm 群集”页的“必需设置”选项卡上,配置以下设置(保留其他设置的默认值),然后选择“下一步” :
设置 价值 区域 选择要在此练习中部署群集的 Azure 区域的名称。 计划程序 VM 类型 在“选择计算机类型”弹出窗口中选择“选择”。 在 SKU 搜索 文本框中,输入 D4s_v3。 在结果列表中,选中 D4s_v3 项旁边的复选框,然后选择“ 应用”。 注释
确保选择支持 Azure 存储高级层的 VM 大小,这是根据自定义配置预配头节点磁盘所必需的。
设置 价值 最大高性能计算核心数 输入 100。 最大 HTC 核心数 输入 100。 每个规模集的最大 VM 数 输入 40。 子网 ID 选择 cyclecloud-rg:cyclecloud-rg-vnet-contoso-slurm-lab-cluster-subnet。 在“新建 Slurm 群集”页的“网络连接存储”选项卡上,验证 NFS 类型是否设置为 Builtin,接受“大小”(GB)的默认值设置为 100,然后选择“下一步”。
在“新建 Slurm 群集”页的“高级设置”选项卡上,查看可用选项而不进行任何更改,然后选择“下一步”。
在“新建 Slurm 群集”页的 Cloud-init 选项卡上,查看可用选项而不进行任何更改,然后选择“保存”。
在 contoso-custom-slurm-lab-cluster 页上,选择 “开始” 链接。 出现确认提示时,请选择“确定”。
监视启动过程。
注释
此过程涉及预配 Azure VM,充当群集的主节点、安装和配置 Swarm 计划程序的角色,以及创建和装载磁盘卷。 这可能需要大约五分钟。
计划程序节点的状态更改为 “就绪”后,在 “节点 ”选项卡上选择其条目,然后选择“ 显示详细信息 ”以显示其详细视图。
在“在 contoso-custom-slurm-lab-cluster 群集中显示计划程序”弹出窗口中,切换到“节点”选项卡,滚动到“卷”部分,然后验证条目“nfs-1”和“nfs-2”是否显示在卷列表中。
祝贺! 你已成功完成本模块的第一个练习。 在本练习中,你基于自定义的 Azure CycleCloud 模板实现了群集。 你使用 Azure CycleCloud CLI 导入 Azure CycleCloud GitHub 存储库中托管的示例项目,包括其中一个模板的自定义副本。 接下来,使用 Azure CycleCloud 图形界面基于导入的模板创建了群集,启动了该群集,并验证自定义更改是否生效。
注释
如果打算在此模块中运行下一个练习,请不要删除在本练习中部署和配置的资源。 要完成下一个练习,需要这些资源。