练习 - 将磁盘添加到 HPC 群集的计划程序节点

已完成

Azure CycleCloud 依赖模板来定义群集配置。 其默认实现包括最常见计划程序的内置模板,但也可以在 Azure CycleCloud GitHub 存储库中找到若干其他模板。

回想一下,你想要使用自定义的 Azure CycleCloud 模板来测试实现群集的过程。 为此,你将利用托管 Microsoft 精选 Slurm 项目的 Azure CycleCloud GitHub 存储库。 你将通过更改计划程序节点的存储配置来修改此存储库中的现有群集模板,将新修改的模板导入 Azure CycleCloud 应用程序,使用该应用程序的图形界面创建群集,最后验证存储配置更改。

重要

若要完成本模块中的练习,必须满足以下先决条件:

  • 拥有在三组 VM 大小中具有可用 vCPU 核心的 Azure 订阅:
    • 至少 4 个 DSv3 系列的 vCPU 核心
    • 至少 100 个 FSv2 系列的 vCPU 核心
    • 至少 48 个 NC 系列的 vCPU 核心
  • 拥有在 Azure 订阅中具有所有者或参与者角色的 Microsoft 帐户或 Microsoft Entra 帐户。
  • 将 Azure CycleCloud 应用程序部署到 Azure VM,该 VM 可使用与其网络接口关联的公共 IP 地址进行访问。
  • 为 Azure CycleCloud 应用程序配置对 Azure 订阅的所有者或参与者角色级别访问权限。
  • 拥有具有管理员角色的 Azure CycleCloud 应用程序用户帐户。
  • 创建可在其中部署群集节点的 Azure 虚拟网络子网。
  • 拥有用于配置 Azure CycleCloud 应用程序的 SSH 密钥对的私钥。

注意

有关确定和增加 Azure 订阅中的 vCPU 配额的信息,请参阅以下文档:

注意

在本模块的最后一个练习中,需要使用私钥直接连接到群集节点。

在本练习中,你将执行以下任务:

  • 任务 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。

  1. 在计算机上启动任何与 Azure 门户兼容的 Web 浏览器,导航到 Azure 门户,并在出现提示时,使用 Microsoft 帐户或 Microsoft Entra 帐户进行身份验证,该帐户在本模块中使用的 Azure 订阅中具有参与者或所有者角色。

    注意

    Azure 门户支持最常见的新式 Web 浏览器,包括最新版 Microsoft Edge、Google Chrome、Mozilla Firefox 和 Apple Safari。

  2. 在 Azure 门户中,通过选择搜索文本框旁边工具栏中的 Cloud Shell 图标来打开 Cloud Shell。

  3. 如果系统提示选择“Bash”或“PowerShell”,请选择“Bash”。

    注意

    如果这是你第一次启动 Azure Cloud Shell,并且看到了“未装载任何存储”消息,请选择要在本练习中使用的订阅,然后选择“创建存储”。

  4. 在 Azure Cloud Shell 窗格的 Bash 会话中,运行以下命令,将变量的值设置为 Azure CycleCloud 应用程序服务器的公共 IP 地址(将 <public_ip_address> 占位符替换为实际公共 IP 地址):

    PIP=<public_ip_address>
    
  5. 运行以下命令,下载包含特定于 Azure CycleCloud 实例的 CLI 安装程序的 .zip 文件:

    curl -O --insecure https://$PIP/static/tools/cyclecloud-cli.zip
    
  6. 依次运行以下命令,提取并执行用于安装 Azure CycleCloud CLI 的脚本:

    unzip ./cyclecloud-cli.zip
    cd ./cyclecloud-cli-installer
    ./install.sh
    

    注意

    忽略有关路径环境变量的任何消息并继续执行下一步。

  7. 运行以下命令以与 Azure CycleCloud 实例建立连接,其中 <username><password> 占位符指定具有管理员角色的 Azure CycleCloud 应用程序用户帐户的凭据:

    cyclecloud initialize --batch --url=https://$PIP --username=<username> --password=<password> --verify-ssl=false
    

    注意

    设置为 false--verify-ssl 参数适用于使用自签名证书或不受信任的证书颁发机构颁发的证书配置 Azure CycleCloud 应用程序的情况。

  8. 运行以下命令,通过显示其保险箱配置来验证与 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 保险箱。

  1. 在计算机上,在Azure Cloud Shell窗格的 Bash 会话中运行以下命令,以创建项目目录并将 Slurm 项目从相应的 GitHub 存储库提取到其中。

    mkdir ~/cyclecloud-slurm && cd ~/cyclecloud-slurm
    cyclecloud project fetch https://github.com/Azure/cyclecloud-slurm . 
    

    注意

    请确保在第二个命令末尾添加尾随句点。

  2. 运行以下命令指定默认保险箱,并将项目上传到其中(将占位符 <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 浏览器检查模板的内容。

  1. 在计算机上,在 Azure Cloud Shell 窗格中显示 Bash 会话的 Web 浏览器窗口中,运行以下命令以将工作目录更改为新提取的存储库:

    cd ~/cyclecloud-slurm/templates
    
  2. 运行以下命令以创建原始群集模板的备份:

    cp slurm.txt slurm.bak.txt
    
  3. 运行以下命令以在 nano 编辑器中打开下载的模板:

    nano slurm.txt
    

    注意

    除了 nano 编辑器,还可以使用任何其他可用的文本编辑器,包括 Azure Cloud Shell 内置编辑器。

  4. 在 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 托管磁盘。

  5. 在 Nano 编辑器界面中,依次选择“Ctrl + O”组合键、“Enter”键和“Ctrl + X”组合键以保存所做的更改并关闭文件。

    注意

    此时,可以通过 CLI 使用与 Azure CycleCloud 应用程序的连接来导入模板。

  6. 运行以下命令,将上一任务中修改的模板导入 Azure CycleCloud 应用程序:

    cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt
    

    注意

    该命令将显示导入模板的名称、计划程序的状态 (scheduler: Off -- --) 和总节点数 (Total nodes: 1)。

任务 4:启动新群集并检查其存储配置

为了结束本练习,你将验证导入到 Azure CycleCloud 应用程序的模板是否新建群集并查看其头节点的存储配置以提供预期功能,从而确保它包含由两个永久性磁盘组成的卷。

  1. 在你的计算机上,打开另一个浏览器窗口,并导航到 URL https://<IP_address> (将 <IP_address> 占位符替换为 Azure CycleCloud 应用程序服务器的公共 IP 地址)。 如果系统提示,请确认要继续操作。

  2. 如果系统提示进行身份验证,请提供用于配置 Azure CycleCloud CLI 的同一 Azure CycleCloud 应用程序用户帐户的凭据进行登录。

  3. 在 Azure CycleCloud 图形界面中,导航到“群集”页面,并选择 +

  4. 在“创建新群集”页面上,选择标有“Slurm”的图标,该图标为等腰三角形,其每个顶点都有小圆圈。

    Screenshot of the Create a New Cluster page of the Azure CycleCloud web application.

  5. 在“新建 Slurm 群集”页面的“关于”选项卡上,在“群集名称”文本框中输入“contoso-custom-slurm-lab-cluster”。

    Screenshot of the About tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  6. 在“新建 Slurm 群集”页面的“必需设置”选项卡上,配置以下设置(将其他设置保留为默认值)并选择“下一步”:

    设置
    区域 在本练习中,选择要在其中部署群集的 Azure 区域的名称。
    计划程序 VM 类型 在“选择计算机类型”弹出窗口中选择“选择”。 在“SKU 搜索”文本框中输入“D4s_v3”。 在结果列表中,选中“D4s_v3”条目旁边的复选框,然后选择“应用”。

    注意

    请确保选择支持 Azure 存储高级层的 VM 大小,这是根据自定义配置预配头节点磁盘所必需的。

    设置
    最大 HPC 核心数 输入 100
    最大 HTC 核心数 输入 100
    每个规模集的最大 VM 数 输入“40”。
    子网 ID 选择“cyclecloud-rg: cyclecloud-rg-vnet-contoso-slurm-lab-cluster-subnet”。
  7. 在“新建 Slurm 群集”页面的“网络连接存储”选项卡上,验证“NFS 类型”是否设置为“内置”,接受“大小(GB)”默认值设置为“100”,然后选择“下一步”。

    Screenshot of the Network Attached Storage tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  8. 在“新建 Slurm 群集”页面的“高级设置”选项卡上,查看可用选项且无需做出任何更改,然后选择“下一步”。

    Screenshot of the Advanced Settings tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  9. 在“新建 Slurm 群集”页面的“Cloud-init”选项卡上,查看可用选项且无需做出任何更改,然后选择“保存”。

  10. 在“contoso-custom-slurm-lab-cluster”页面上,选择“启动”链接。 出现确认提示时,请选择“确定”。

    Screenshot of the Nodes tab page of contoso-slurm-lab-cluster in the off state in the Azure CycleCloud web application.

  11. 监视启动过程。

    注意

    此过程涉及预配 Azure VM 以充当群集主节点的角色、安装和配置 Swarm 计划程序,以及创建和装载磁盘卷。 这可能需要大约五分钟。

  12. 在计划程序节点的状态更改为“就绪”后,在“节点”选项卡上选择其条目,然后选择“显示详细信息”以显示其详细视图。

    Screenshot of the Nodes tab of the scheduler node of a contoso-custom-slurm-lab-cluster.

  13. 在“在 contoso-custom-slurm-lab-cluster 群集中显示计划程序”弹出窗口中,切换到“节点”选项卡,滚动到“卷”部分,然后验证条目“nfs-1”和“nfs-2”是否显示在卷列表中。

    Screenshot of the Node tab page of the detailed view of a cluster configured with two additional NFS volumes.

祝贺你! 你已成功完成本模块的第一个练习。 在本练习中,你基于自定义的 Azure CycleCloud 模板实现了群集。 你使用 Azure CycleCloud CLI 导入了托管在 Azure CycleCloud GitHub 存储库中的示例项目,包括其中一个模板的自定义副本。 接下来,你使用 Azure CycleCloud 图形界面基于导入的模板创建了一个群集,将其启动,并验证了自定义更改是否生效。

注意

如果打算在此模块中运行下一个练习,请不要删除在本练习中部署和配置的资源。 要完成下一个练习,需要这些资源。