你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

OpenPBS

可以通过修改群集定义的配置部分中的“run_list”,在 CycleCloud 群集上轻松启用 OpenPBS。 PBS Professional 群集的两个基本组件是“主”节点,它提供 PBS Professional 软件在其中运行的共享文件系统,以及作为装载共享文件系统并执行提交的作业的主机的“执行”节点。 例如,简单的群集模板代码片段可能如下所示:

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

在 CycleCloud 中使用定义导入和启动群集将生成单个“主”节点。 可以通过命令将执行节点添加到群集 cyclecloud add_node 。 例如,若要添加 10 个执行节点,

cyclecloud add_node my-pbspro -t execute -c 10

基于 PBS 资源的自动缩放

Cyclecloud 维护两个资源来扩展动态预配功能。 这些资源是 nodearraymachinetype

如果提交作业并指定 nodearray 资源 qsub -l nodearray=highmem -- /bin/hostname ,则 CycleCloud 会将节点添加到名为“highmem”的 nodearray。 如果没有此类节点数组,作业将保持空闲状态。

同样,如果指定了作业提交的计算机类型资源,例如 qsub -l machinetype:Standard_L32s_v2 my-job.sh,CycleCloud 会在“execute” (默认) nodearray 中自动缩放“Standard_L32s_v2”。 如果该计算机类型在“execute”节点数组中不可用,则作业将保持空闲状态。

这些资源可以组合使用:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

仅当“Standard_HB60rs”计算机指定为“hpc”节点数组时,才会自动缩放。

添加分配给 nodearrays 的其他队列

在具有多个节点数组的群集上,通常创建单独的队列以自动将作业路由到适当的 VM 类型。 在此示例中,我们假定群集模板中定义了以下“gpu”nodearray:

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

导入群集模板并启动群集后,可以在服务器节点上运行以下命令以创建“gpu”队列:

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

注意

上述队列定义会将队列中的所有 VM 打包成单个 VM 规模集以支持 MPI 作业。 若要为串行作业定义队列并允许多个 VM 规模集,请同时为这两者resources_default设置default_chunkungrouped = true。 如果希望计划程序将作业打包到 VM 上,而不是轮循机制分配作业,还可以设置 resources_default.place = pack 。 有关 PBS 作业打包的详细信息,请参阅 官方 PBS 专业 OSS 文档

PBS 专业配置参考

以下是可以切换为自定义功能的 PBS Professional 特定配置选项:

PBS Pro 选项 说明
pbspro.slots 要向 PBS Pro 报告的给定节点的槽数。 槽数是节点可以执行的并发作业数,此值默认为给定计算机上的 CPU 数。 如果不基于 CPU 但基于内存、GPU 等运行作业,则可以重写此值。
pbspro.slot_type 节点提供的“slot”类型的名称。 默认值为“execute”。 当作业使用硬资源 slot_type=<type>标记时,该作业 将仅在 同一槽类型的计算机上运行。 这样,就可以为每个节点创建不同的软件和硬件配置,并确保始终按正确的节点类型计划适当的作业。
pbspro.version 默认值:“18.1.3-0”。 这是要安装和运行的 PBS Professional 版本。 这是当前默认选项, 也是唯一 选项。 将来可能支持 PBS Professional 软件的其他版本。

使用 CycleCloud 连接 PBS

CycleCloud 通过名为 azpbs 的可安装代理管理 OpenPBS 群集。 此代理连接到 CycleCloud 以读取群集和 VM 配置,还与 OpenPBS 集成,以有效处理作业和主机信息。 文件中的所有azpbs配置通常/opt/cycle/pbspro/autoscale.jsonautoscale.json位于文件中。

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

重要文件

每次 azpbs 调用 PBS 配置时,代理都会分析 PBS 配置 - 作业、队列、资源。 该命令的 stderr 和 stdout 以及日志文件中提供了信息,这两种信息都位于可配置级别。 (具有参数的所有 PBS 管理命令 qcmd 也记录到文件中) 。

所有这些文件都可以在安装代理的 /opt/cycle/pbspro/ 目录中找到。

文件 位置 描述
自动缩放配置 autoscale.json 自动缩放、资源映射、CycleCloud 访问信息的配置
自动缩放日志 autoscale.log 代理主线程日志记录,包括 CycleCloud 主机管理
需求日志 demand.log 资源匹配的详细日志
qcmd 跟踪日志 qcmd.log 记录代理 qcmd 调用
日志记录配置 logging.conf 日志记录掩码和文件位置的配置

定义 OpenPBS 资源

此项目允许通过 cyclecloud-pbspro (azpbs) 项目将 OpenPBS 资源与 Azure VM 资源关联。 此资源关系在 . 中 autoscale.json定义。

使用我们随附的群集模板定义的默认资源为

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

命名 mem 的 OpenPBS 资源等同于名为 node.memory节点属性,该属性是任何虚拟机的总内存。 此配置允许 azpbs 处理资源请求,例如 -l mem=4gb ,通过将作业资源要求的值与节点资源进行比较。

请注意,磁盘当前已硬编码为 size::20g。 下面是处理 VM 大小特定磁盘大小的示例

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

自动缩放和缩放集

CycleCloud 在 OpenPBS 群集中以不同的方式处理跨作业和串行作业。 跨作业将降落在属于同一放置组的节点上。 放置组具有特定的平台含义 (SinglePlacementGroup=true) VirtualMachineScaleSet,CC 将为每个跨跨节点集托管命名放置组。 使用此放置组名称的 PBS 资源 group_id

队列 hpc 追加与使用本机队列默认值等效 -l place=scatter:group=group_id 的队列。

安装 CycleCloud OpenPBS 代理 azpbs

OpenPBS CycleCloud 群集将管理服务器节点上代理的安装和配置。 准备包括设置 PBS 资源、队列和挂钩。 还可以在 CycleCloud 外部完成脚本安装。

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

CycleCloud 支持跨计划程序的标准自动停止属性集:

属性 描述
cyclecloud.cluster.autoscale.stop_enabled 是否在此节点上启用自动停止? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs 节点在完成作业后,在缩减作业之前, (以秒为单位的时间量) 。
cyclecloud.cluster.autoscale.idle_time_before_jobs 节点在缩减作业之前,) 节点处于空闲状态的时间 (以秒为单位。

注意

CycleCloud 不支持使用 Open PBS 的突发配置。

注意

尽管 Windows 是正式支持的开放 PBS 平台,但 CycleCloud 目前不支持在 Windows 上运行 Open PBS。