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

CycleCloud GridEngine 群集

可以通过修改群集定义中的“run_list”,轻松地在 Azure CycleCloud 群集上启用开放网格计划程序(网格引擎)。 网格引擎群集由两个主要组件组成。 第一个是“主”节点,它提供运行网格引擎软件的共享文件系统。 第二个节点是“执行”节点集,这些节点是装载共享文件系统并运行提交的作业的主机。 例如,简单的网格引擎群集模板片段可能如下所示:

[cluster grid-engine]

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

    [[[configuration]]]
    run_list = role[sge_master_role]

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

    [[[configuration]]]
    run_list = role[sge_execute_role]

注释

由于遗留原因,角色名称包含“sge”:网格引擎是 Sun Microsystems 的产物。

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

cyclecloud add_node grid-engine -t execute -c 10

网格引擎自动缩放

Azure CycleCloud 支持网格引擎的自动缩放。 此行为意味着软件持续监视队列的状态,并根据需要自动打开或关闭节点,以有效完成工作负荷的时间和成本。 可以通过将 Autoscale = true 添加到群集定义来为网格引擎启用自动缩放:

[cluster grid-engine]
Autoscale = True

默认情况下,提交到网格引擎队列的所有作业在类型为“execute”的计算机上运行。 这些计算机由名为“execute”的节点数组定义。 你不受限于“execute”这个名称,也不受限于根据单一类型的计算机配置来运行作业和进行自动缩放。

例如,常见方案涉及具有两个不同的节点定义的群集。 其中一个专用于运行使用标准 CPU 的“正常”作业。 另一项适用于需要启用 GPU 的计算机的作业。 在这种情况下,你需要通过普通作业和 GPU 作业分别独立调整队列规模,以确保有适当数量的各类计算机来处理工作队列。 示例定义类似于:

[cluster grid-engine]
Autoscale = True

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A3  # 4 cores

    [[[configuration]]]
    run_list = role[sge_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4  # 8 cores

    [[[configuration]]]
    run_list = role[sge_execute_role]

[[nodearray gpu]]
    MachineType = Standard_NV12 # 2 GPUs
    ImageName = cycle.image.centos7

    # Set the number of cores to the number of GPUs for autoscaling purposes
    CoreCount = 2  

    [[[configuration]]]
    run_list = role[sge_execute_role]
    gridengine.slot_type = gpu
    gridengine.slots = 2

在所示的示例中,现在有两个节点数组:一个是“标准”执行节点数组,第二个数组名为“gpu”,提供一个 MachineType,其中包含两个 NVIDIA GPU(Azure 中的Standard_NV12)。 另请注意,除了“csge:sgeexec”配方外,配置部分中现在还有两个新项。 添加 gridengine.slot_type = gpu 告知网格引擎计划程序,这些节点应命名为“gpu”节点,因此只应运行“gpu”作业。 名称“gpu”是任意的,但描述节点的名称最有用。 设置 gridengine.slots = 2,它告知软件确保这种类型的节点一次只能运行两个作业(Standard_NV12 只有 2 个 GPU)。

默认情况下,网格引擎根据系统的 CPU 计数为每个节点分配槽数。 在这种情况下,该默认行为可能会导致单个节点上并发运行的作业过多。 在所示的示例中, CoreCount=2 在 nodearray 上设置,以匹配 MachineType 上可用的 GPU 数,从而允许 CycleCloud 在 GPU 与 CPU 计数上正确缩放该数组。

可通过运行以下命令来验证计算机的槽数和 slot_type:

    -bash-4.1# qstat -F slot_type
    queuename                      qtype resv/used/tot. load_avg arch          states
    ---------------------------------------------------------------------------------
    all.q@ip-0A000404              BIP   0/0/4          0.17     linux-x64
        hf:slot_type=execute
    ---------------------------------------------------------------------------------
    all.q@ip-0A000405              BIP   0/0/2          2.18     linux-x64
        hf:slot_type=gpu
    ---------------------------------------------------------------------------------
    all.q@ip-0A000406              BIP   0/0/4          0.25     linux-x64

请注意,指定的每个“slot_type”(execute 和 gpu)都有一个。 slot_type 单独配置,“execute”槽的数量为 4,与计算机上的 CPU 数量相同。 “gpu”槽类型的槽数为 2,这是我们在群集配置模板中指定的槽数。 第三台计算机是未运行作业的主节点。

网格引擎高级用法

这些配置设置支持对节点和节点数组进行高级自定义。 例如,如果作业需要特定数量的内存(例如每个内存为 10 GB),则可以定义一个执行节点数组,以启动内存为 60 GB 的计算机,然后添加配置选项 gridengine.slots = 6 ,以确保只有 6 个作业可以同时在此类节点上运行(确保每个作业至少有 10 GB 的内存可供使用)。

网格引擎中的分组节点

当将并行作业提交到指定的网格引擎时,CycleCloud 默认的自动缩放行为是将每个 MPI 作业视为一个分组节点请求。 分组节点紧密耦合,非常适合 MPI 工作流。

当一组分组节点加入网格引擎群集时,每个节点的组 ID 用作复杂值的值 affinity_group。 通过要求为作业指定 affinity_group,它允许网格引擎计划程序确保作业仅落在同一组中的计算机上。

CycleCloud 的自动化会自动请求分组节点,并在遇到并行作业时将它们分配给可用的地缘组。

将作业提交到网格引擎

将作业提交到网格引擎计划程序的最通用方法是命令:

qsub my_job.sh

此命令提交在类型为“execute”的节点上运行的作业,该节点是由 nodearray “execute”定义的节点。 若要使作业在不同类型的节点数组上运行,例如显示的“gpu”节点类型,我们修改提交:

qsub -l slot_type=gpu my_gpu_job.sh

此命令将确保仅当“slot_type”为“gpu”时,作业才在其上运行。

如果省略 slot_type,系统会自动将“execute”分配给作业。 用户可以修改自动将 slot_type 分配给作业的机制。 可以创建位于 /opt/cycle/jetpack/config/autoscale.py 的 python 脚本,该脚本应定义单个函数“sge_job_handler”。 此函数接收作业的字典表示形式(类似于 qstat -j JOB_ID 命令的输出),应返回需要为作业更新的硬资源的字典。

例如,如果作业名称包含字母“gpu”,则以下脚本会将作业分配给“gpu”slot_type。 允许用户在不更改作业参数的情况下自动提交作业,同时确保作业能够在正确的节点上运行并自动进行缩放。

#!/usr/env python
#
# File: /opt/cycle/jetpack/config/autoscale.py
#
def sge_job_handler(job):
  # The 'job' parameter is a dictionary containing the data present in a 'qstat -j JOB_ID':
    hard_resources = {'slot_type': 'execute', 'affinity_group' : 'default' }

  # Don't modify anything if the job already has a slot type
  # You could modify the slot type at runtime by not checking this
  if 'hard_resources' in job and 'slot_type' in job['hard_resources']:
      return hard_resources

  # If the job's script name contains the string 'gpu' then it's assumed to be a GPU job.
  # Return a dictionary containing the new job_slot requirement to be updated.
  # For example: 'big_data_gpu.sh' would be run on a 'gpu' node.
  if job['job_name'].find('gpu') != -1:
      hard_resources {'slot_type': 'gpu'}
  else:
      return hard_resources

传入的参数“job”是一个字典,其中包含 qstat -j JOB_ID 调用中的数据:

{
    "job_number": 5,
    "job_name": "test.sh",
    "script_file": "test.sh",
    "account": "sge",
    "owner": "cluster.user",
    "uid": 100,
    "group": "cluster.user",
    "gid": 200,
    "submission_time": "2013-10-09T09:09:09",
    "job_args": ['arg1', 'arg2', 'arg3'],
    "hard_resources": {
       'mem_free': '15G',
       'slot_type': 'execute'
    }
}

可以使用此脚本功能,根据定义的任何作业参数(例如参数、内存等资源需求、提交作业的用户等)自动分配 slot_type。

假设为每个“slot_type”提交 5 个作业:

qsub -t 1:5 gpu_job.sh
qsub -t 1:5 normal_job.sh

队列中现在将会有 10 个作业。 由于定义了脚本,名称中具有“gpu”的五个作业将自动配置为仅在“slot_type=gpu”的节点上运行。 CycleCloud 自动缩放机制将检测到有 5 个“gpu”作业和 5 个“执行”作业。 由于“gpu”节点数组定义为每个节点有 2 个槽,CycleCloud 将启动其中 3 个节点(5/2=2.5 向上舍入到 3 个)。

有 5 个普通作业,因为“执行”节点数组的计算机类型各有 4 个 CPU,CycleCloud 会启动其中 2 个节点来处理作业(5/4=1.25 舍入到 2)。 在短暂的启动期间后,新启动的节点将启动并自行配置。 准备就绪后,所有 10 个作业都会运行直至完成。 然后,5 个节点会在另一个计费周期从云提供商开始之前自动关闭。

假定作业持续时间为 1 小时。 如果作业运行时已知,自动缩放算法可以从此信息中受益。 通过将预期的作业运行时间添加到作业上下文中来将该时间告知自动缩放。 以下示例将自动缩放的作业运行时设置为 10 分钟:

qsub -ac average_runtime=10 job_with_duration_of_10m.sh

网格引擎配置参考

以下是可以切换以自定义功能的网格引擎特定配置选项:

SGE 特定的配置选项 DESCRIPTION
gridengine.slots 要向网格引擎报告的给定节点的槽数。 槽数是节点可以执行的并发作业数,此值默认为给定计算机上的 CPU 数。 如果不是基于 CPU 而是基于内存、GPU 等运行作业,则可以替代此值。
gridengine.slot_type 节点提供的“slot”类型的名称。 默认值为“execute”。 使用硬资源“slot_type=”标记作业时,该作业 仅在 同一插槽类型的计算机上运行。 通过此标记,可以为每个节点创建不同的软件和硬件配置,并确保始终按正确的节点类型计划适当的作业。
gridengine.ignore_fqdn 默认值:true。 如果群集中的所有节点不是单个 DNS 域的一部分,则设置为 false。
gridengine.version 默认值:“2011.11”。 此配置选项指定要安装和运行的网格引擎版本。 目前,它是默认选项和 唯一 可用的选项。 将来可能支持其他版本的网格引擎软件。
gridengine.root 默认值:“/sched/sge/sge-2011.11”此位置是网格引擎在系统中每个节点上安装和装载的位置。 最好保持此值不变。 但是,如果修改,请确保在群集 中的每个 节点上设置相同的值。

CycleCloud 支持在不同计划程序之间通用的标准自动停止属性集。

特征 DESCRIPTION
cyclecloud.cluster.autoscale.stop_enabled(停止自动扩展已启用) 是否在此节点上启用自动停止? [真/假]
自动缩放集群的作业后空闲时间 节点在完成作业之后进行纵向缩减之前处于空闲状态的时间(以秒为单位)。
自动扩展.集群.作业前的空闲时间 节点在缩减作业之前处于空闲状态的时间(以秒为单位)。

已知问题

  • qsh 交互式会话的命令不起作用。 使用 qrsh 作为替代方法。
  • 自动缩放不遵循 exclusive=1 复合体,这可能会导致启动的节点数少于预期。

注释

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

此页面涉及将 (Altair) GridEngine 与 CycleCloud 配合使用的功能和配置。

配置资源

cyclecloud-gridengine 应用程序将 sge 资源与 Azure 云资源匹配,以提供丰富的自动缩放和群集配置工具。 应用程序会自动为通过 CycleCloud UI 创建的群集部署,也可以将其安装在现有群集上的任何 gridengine 管理员主机上。

安装或升级 cyclecloud-gridengine

cyclecloud-gridengine 捆绑包以发布项目的形式在 github 中提供。 安装和升级遵循相同的过程。 应用程序需要具有 virtualenv 的 python3。

tar xzf cyclecloud-gridengine-pkg-*.tar.gz
cd cyclecloud-gridengine
./install.sh

重要文件

应用程序每次运行时都会分析 sge 配置 - 作业、队列、复杂项。 信息在命令的 stderr 和 stdout 中提供,并提供到日志文件中,两者都处于可配置级别。 所有带自变量的 gridengine 管理命令也记录到文件中。

DESCRIPTION 位置
自动缩放配置 /opt/cycle/gridengine/autoscale.json
自动缩放日志 /opt/cycle/jetpack/logs/autoscale.log
qconf 跟踪日志 /opt/cycle/jetpack/logs/qcmd.log

SGE 队列、主机组和并行环境

cyclecloud-gridengine 自动缩放实用工具 azge根据群集配置将主机添加到群集。 自动缩放操作执行以下操作。

  1. 读取作业资源请求并查找要启动的相应 VM
  2. 启动 VM 并等待 VM 准备就绪
  3. 从作业中读取队列和并行环境
  4. 根据队列/pe 将主机分配给适当的主机组
  5. 将主机添加到群集以及任何包含主机组的其他队列中。

考虑名为 short.q 的队列的以下队列定义

hostlist              @allhosts @mpihg01 @mpihg02 @lowprio 
...
seq_no                10000,[@lowprio=10],[@mpihg01=100],[@mpihg02=200]
pe_list               NONE,[@mpihg01=mpi01], \
                      [@mpihg02=mpi02]

通过 qsub -q short.q -pe mpi02 12 my-script.sh 提交作业时,至少会启动一个 VM。 添加群集时,它将加入 @mpihg02 主机组,因为该主机组既可用于队列,也可用于并行环境。 它还加入 @allhosts,这是一个特殊的主机组。

如果使用 qsub -q short.q my-script.sh 提交作业,并且未指定并行环境 pe,则生成的 VM 会加入 @allhosts 和 @lowpriority 这两个与未分配任何 pe 的队列相关联的主机组

最后,使用 qsub -q short.q -pe mpi0* 12 my-script.sh 提交的作业会导致 VM 添加到 @mpihg01 或 @mpihg02,具体取决于 CycleCloud 分配预测

并行环境隐式等同于 cyclecloud 放置组。 PE 中的 VM 限制为在同一网络中。 如果希望使用不保留放置组的 PE,请使用 autoscale.json 来选择退出。

在这里,我们选择退出 make pe 的放置组:

"gridengine": {
    "pes": {
      "make": {
        "requires_placement_groups": false
      }
    },

CycleCloud 放置组

CycleCloud 放置组通过 SinglePlacementGroup 一对一映射到 Azure VMSS - 放置组中的 VM 共享 Infiniband Fabric,但仅与放置组内的 VM 共享。 为了直观地保留这些孤岛,放置组也与 gridengine 并行环境 1:1 映射。

为作业指定并行环境时,会通过智能主机组分配逻辑限制作业在放置组中运行。 可以通过 autoscale.json中的相应配置禁用此行为: "required_placement_groups" : false

自动缩放配置

此插件会自动缩放网格以满足工作负荷的需求。 autoscale.json 配置文件确定网格引擎自动缩放程序的行为。

  • 设置 cyclecloud 连接详细信息
  • 为空闲节点设置终止计时器
  • 可以进行多维自动缩放,设置在作业打包中使用哪些属性,例如槽、内存
  • 注册要管理的队列、并行环境和主机组
配置 类型 DESCRIPTION
网址 字符串 抄送 URL
用户名/密码 字符串 CC 连接详细信息
集群名称 字符串 CC 群集名称
默认资源 地图 将节点资源链接到用于自动缩放的网格引擎主机资源
idle_timeout int (整数) 终止空闲节点前的等待时间(秒)
boot_timeout int (整数) 长配置阶段终止节点前的等待时间(秒)
gridengine.relevant_complexes 列表(字符串) 自动缩放时需要考虑的网格引擎复合体,例如 slots、mem_free
gridengine.logging 文件 日志记录配置文件的位置
gridengine.pes 结构 指定 PE 的行为,例如 requires_placement_group = false

自动缩放程序仅考虑 相关资源

另一个自动缩放资源

默认情况下,作业会请求多个槽,群集会根据这些请求进行缩放。

假设我们想要根据 m_mem_free 的作业资源请求进行自动缩放。

  1. m_mem_free 添加到 autoscale.json 中的 gridengine.relevant_resources
  2. m_mem_free 链接到 autoscale.json 中的节点级内存资源

这些属性可以通过将 node.* 作为 _default/resources 中的值来引用。

节点 类型 DESCRIPTION
nodearray 字符串 cyclecloud 节点数组的名称
placement_group 字符串 节点数组内的 cyclecloud 放置组的名称
vm_size 字符串 VM 产品名称,例如“Standard_F2s_v2”
vcpu_count int (整数) 节点上可用的虚拟 CPU,如各个产品页面所示
pcpu_count int (整数) 节点上可用的物理 CPU
内存 字符串 VM 中可用的大致物理内存及其单位指示,例如“8.0g”

其他属性位于命名空间中 node.resources.* ,例如“node.resources”。

节点 类型 DESCRIPTION
ncpus 字符串 VM 中可用的 CPU 数
pcpus 字符串 VM 中可用的物理 CPU 数
ngpus 整数 VM 中可用的 GPU 数
memb 字符串 虚拟机中可用的大约物理内存,带有单位指示器,例如“8.0b”
memkb 字符串 VM 中可用的大致物理内存,带有单位指示符,例如“8.0k”
memmb 字符串 虚拟机中可用的大约物理内存,带有单位指示器,例如“8.0m”
memgb 字符串 VM 中可用的大致物理内存及其单位指示,例如“8.0g”
memtb 字符串 在虚拟机中可用的大致物理内存量及其单位指示符,例如“8.0t”。
插槽 整数 与 ncpus 相同
slot_type 字符串 扩展的添加标签。 未使用。
m_mem_free 字符串 执行主机上的预期可用内存,例如“3.0g”
mfree 字符串 与 _m/_mem/free 相同

资源映射

还有可用于default_resources的数学运算 - 将特定节点数组上的槽数减少两个,并将 docker 资源添加到所有节点:

    "default_resources": [
    {
      "select": {"node.nodearray": "beegfs"},
      "name": "slots",
      "value": "node.vcpu_count",
      "subtract": 2
    },
    {
      "select": {},
      "name": "docker",
      "value": true
    },

将节点 vCPU 映射到 slots 复合体。memmbmem_free 是常用的默认值。 第一个关联是必需的。

    "default_resources": [
    {
      "select": {},
      "name": "slots",
      "value": "node.vcpu_count"
    },
    {
      "select": {},
      "name": "mem_free",
      "value": "node.resources.memmb"
    }
 ],

如果一个复体的快捷方式不等于其完整值,那么请在 default_resources 中定义两个值,其中 physical_cpu 为复体名称:

"default_resources": [
    {
      "select": {},
      "name": "physical_cpu",
      "value": "node.pcpu_count"
    },
    {
      "select": {},
      "name": "pcpu",
      "value": "node.resources.physical_cpu"
    }
]

需要特定属性的特定行为时,排序非常重要。 要为特定节点数组分配单个槽,同时保留所有其他节点数组的默认槽计数,请执行以下操作:

    "default_resources": [
    {
      "select": {"node.nodearray": "FPGA"},
      "name": "slots",
      "value": "1",
    },
    {
      "select": {},
      "name": "slots",
      "value": "node.vcpu_count"
    },
]

主机组

CycleCloud 自动缩放程序在尝试满足作业要求时,将节点映射到相应的主机组。 队列、并行环境和复杂体都在考虑之中。 大部分逻辑是将适当的 cyclecloud 桶(和节点数量)与适当的 sge 主机组进行匹配。

对于以以下形式提交的作业:qsub -q "cloud.q" -l "m_mem_free=4g" -pe "mpi*" 48 ./myjob.sh

CycleCloud 会查找/获取符合以下条件的主机组的交集:

  1. 包含在 cloud.q 的 pe_list 中,并与 pe 名称匹配,例如 pe_list [@allhosts=mpislots],[@hpc1=mpi]
  2. 有足够的资源和订阅配额来提供所有作业资源。
  3. 主机组约束配置不会筛选它们。

多个主机组可能满足这些要求。 发生这种情况时,系统必须决定使用哪一个。 可通过三种方法解决主机组成员身份冲突:

  1. 配置队列以避免歧义。
  2. 向 autoscale.json 添加约束。
  3. 通过调整 weight_queue_host_sort < weight_queue_seqno 计划程序配置,让 CycleCloud 以名称排序的方式选择匹配的主机组。
  4. 在队列配置中设置 seq_no 10000,[@hostgroup1=100],[@hostgroup2=200] 以指示主机组偏好。

主机组约束

当队列或 xproject 定义多个主机组时,这些组中的任何一个都可能会接收新主机。 若要控制哪些主机符合哪些队列的条件,可以根据节点属性应用主机组约束。

"gridengine": {
    "hostgroups": {
      "@mpi": {
        "constraints": {
          "node.vm_size": "Standard_H44rs"
        }
      },
      "@amd-mem": {
        "constraints" : { 
            "node.vm_size": "Standard_D2_v3",
            "node.nodearray": "hpc" 
            }
        },
    }
  }

提示:通过 azge buckets 检查所有可用的节点属性。

azge

此包附带命令行 azge。 此程序用于执行自动缩放,并将自动缩放下的所有子进程分解为单独的组件。 这些命令依赖于要设置的 gridengine 环境变量 - 必须能够从调用 qconf 的同一配置文件调用 qsubazge

azge 命令 DESCRIPTION
验证 检查自动缩放程序或网格引擎中的已知配置错误
工作 显示队列中的所有作业
存储桶 显示用于自动缩放的可用资源池
节点 显示群集主机和属性
需求 将作业要求与 CycleCloud Bucket 进行匹配并提供自动缩放结果
自动调整大小 执行完全自动缩放,根据配置启动和移除节点

修改计划程序配置(qconf)或自动缩放配置(autoscale.json),甚至首次设置时, azge 可用于检查自动缩放行为是否符合预期。 作为根,可以运行以下操作。 若要了解自动缩放的工作原理,请务必熟悉这些概念。

  1. 运行 azge validate 以验证配置是否存在已知问题。
  2. 运行 azge buckets 以检查 CycleCloud 群集提供的资源。
  3. 运行 azge jobs 以检查排队作业详细信息。
  4. 运行 azge demand 来执行作业以进行存储桶匹配。 然后检查哪些作业与哪些存储桶和主机组匹配。
  5. 运行 azge autoscale 以启动节点分配过程,或添加已准备好加入的节点。

命令按预期运行后,通过将 azge autoscale 命令添加到根 crontab 来启用持续的自动缩放。 确保提前加载 gridengine 环境变量。

* * * * * . $SGE_ROOT/common/settings.sh && /usr/local/bin/azge autoscale -c /opt/cycle/gridengine/autoscale.json

创建混合群集

CycleCloud 支持云突发方案。 基本配置假定 $SGE_ROOT 目录可用于云节点。 可以通过在本地设置gridengine.shared.spool = falsegridengine.shared.bin = false和安装 GridEngine 来放宽此假设。

对于简单情况,应提供执行节点可以装载的文件系统。 此文件系统必须包含 ... 目录,并在可选设置中配置装载。 释放 sched 和 shared 目录的依赖项时,可以默认关闭属于群集一部分的计划程序节点,并使用外部文件系统中的配置。

  1. 创建新的 gridengine 群集。
  2. 禁用返回代理。
  3. 将 /sched 和 /shared 替换为外部文件系统。
  4. 保存群集。
  5. 在 UI 中将计划程序节点作为一项操作移除。
  6. 启动群集,最初不会启动任何节点。
  7. 使用 autoscale.json 配置 cyclecloud-gridengine 以使用新群集

在 CycleCloud 中使用 Univa Grid Engine

GridEngine 的 CycleCloud 项目默认使用 sge-2011.11。 可以根据 Altair 许可协议使用自己的 Altair GridEngine 安装程序。 本部分介绍了如何将 Altair GridEngine 与 CycleCloud GridEngine 项目配合使用。

先决条件

此示例使用 8.6.1-demo 版本,但支持所有 ge 版本 > 8.4.0。

  1. 用户必须提供 UGE 二进制文件
  • ge-8.6.x-bin-lx-amd64.tar.gz
  • ge-8.6.x-common.tar.gz
  1. 必须配置 CycleCloud CLI。 文档可在此处获取

将二进制文件复制到云保险箱

AGE 的补充版本 (8.6.7-demo) 随 CycleCloud 一起分发。 若要使用其他版本,请将二进制文件上传到 CycleCloud 使用的存储帐户。


$ azcopy cp ge-8.6.12-bin-lx-amd64.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/
$ azcopy cp ge-8.6.12-common.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/

修改群集模板的配置

创建 gridengine 模板的本地副本,并将其修改为使用 UGE 安装程序而不是默认值。

wget https://raw.githubusercontent.com/Azure/cyclecloud-gridengine/master/templates/gridengine.txt

gridengine.txt 文件中,找到第一个匹配项 [[[configuration]]] 并插入文本以匹配以下代码片段。 此文件不区分缩进。

注释

配置的详细信息(尤其是版本)应与安装程序文件名匹配。

[[[configuration gridengine]]]
    make = ge
    version = 8.6.12-demo
    root = /sched/ge/ge-8.6.12-demo
    cell = "default"
    sge_qmaster_port = "537"
    sge_execd_port = "538"
    sge_cluster_name = "grid1"
    gid_range = "20000-20100"
    qmaster_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool/qmaster" 
    execd_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool"
    spooling_method = "berkeleydb"
    shadow_host = ""
    admin_mail = ""
    idle_timeout = 300

    managed_fs = true
    shared.bin = true

    ignore_fqdn = true
    group.name = "sgeadmin"
    group.gid = 536
    user.name = "sgeadmin"
    user.uid = 536
    user.gid = 536
    user.description = "SGE admin user"
    user.home = "/shared/home/sgeadmin"
    user.shell = "/bin/bash"

这些 gridengine 配置会在群集启动时替代默认网格工程版本和安装位置。 从 /sched 中移出并不安全,因为它是群集中共享的 nfs 位置。