你当前正在访问 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”,提供在 Azure) 中具有两个 Nvidia GPU (Standard_NV12的 MachineType。 另请注意,配置部分中除了“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

请注意, (execute 和 gpu) 指定了每个“slot_type”,“执行”槽的槽数为 4,即计算机上的 CPU 数。 “gpu”槽类型的槽数是 2,我们在群集配置模板中指定的。 第三台计算机是不运行作业的主节点。

网格引擎高级用法

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

网格引擎中的分组节点

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

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

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

将作业提交到网格引擎

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

qsub my_job.sh

此命令将提交一个作业,该作业将在类型为“execute”的节点上运行,该节点是由 nodearray“execute”定义的节点。 若要使作业在不同类型的 nodearray 上运行(例如上面的“gpu”节点类型),请修改提交:

qsub -l slot_type=gpu my_gpu_job.sh

此命令将确保作业仅在“gpu”的“slot_type”上运行。

如果省略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 个节点将自动关闭,然后云提供商再次向你计费。

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

qsub -ac average_runtime=10 job_with_duration_of_10m.sh

网格引擎配置参考

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

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

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

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

已知问题

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

注意

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

本页介绍将 (Altair) GridEngine 与 CycleCloud 配合使用的功能和配置。

配置资源

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

安装或升级 cyclecloud-gridengine

cyclecloud-gridengine 捆绑包在 github 中作为发布项目提供。 安装和升级过程相同。 应用程序需要 python3 和 virtualenv。

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

重要文件

每次调用 sge 配置时,应用程序都会分析它 - 作业、队列、复杂项。 信息在命令的 stderr 和 stdout 中以及日志文件中提供,这两种信息都是在可配置的级别提供的。 所有带参数的 gridengine 管理命令也会记录到 文件中。

描述 位置
自动缩放配置 /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 并等待它准备就绪
  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,这是一个特殊的主机组。

如果不指定 pe, qsub -q short.q my-script.sh 生成的 VM 将添加到 @allhosts@lowpriority 这些是队列中未分配 pes 的主机组。

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

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

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

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

CycleCloud 放置组

CycleCloud 放置组使用 SinglePlacementGroup 将一对一映射到 Azure VMSS - 放置组中的 VM 共享 Infiniband Fabric,仅与放置组中的 VM 共享。 为了直观地保留这些接收器,放置组还使用网格引擎并行环境映射 1:1。

为作业指定并行环境将限制作业通过智能主机组分配逻辑在放置组中运行。 可以使用 autoscale.json 中的上述配置选择退出此行为: "required_placement_groups" : false

自动缩放配置

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

  • 设置 cyclecloud 连接详细信息
  • 设置空闲节点的终止计时器
  • 可以进行多维自动缩放,设置在作业打包中使用的属性,例如槽、内存
  • 注册要管理的队列、并行环境和主机组
配置 类型 描述
url 字符串 抄送 URL
username/password 字符串 CC 连接详细信息
cluster_name 字符串 CC 群集名称
default_resources 映射 将节点资源链接到网格引擎主机资源进行自动缩放
idle_timeout int 在终止空闲节点之前等待时间 ()
boot_timeout int 在长时间配置阶段终止节点之前等待时间 ()
gridengine.relevant_complexes 列出 (字符串) 在自动缩放(例如槽、mem_free)中要考虑的网格引擎复杂体
gridengine.logging 文件 日志记录配置文件的位置
gridengine.pes 结构 指定 PE 的行为,例如 ,requires_placement_group = false

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

其他自动缩放资源

默认情况下,根据作业请求的槽数缩放群集。 我们可以向自动缩放添加另一个维度。

假设我们希望按 的 m_mem_free作业资源请求自动缩放。

  1. 将 添加到 m_mem_freegridengine.relevant_resourcesautoscale.json 中的
  2. 链接到 m_mem_freeautoscale.json 中的节点级内存资源

这些属性可以是引用,作为 node.* _default/resources 中的

节点 类型 描述
nodearray 字符串 cyclecloud nodearray 的名称
placement_group 字符串 nodearray 中 cyclecloud 放置组的名称
vm_size 字符串 VM 产品名称,例如“Standard_F2s_v2”
vcpu_count int 节点上可用的虚拟 CPU,如单个产品页上所示
pcpu_count int 节点上可用的物理 CPU
内存 字符串 具有单元指示器的 VM 中可用的大致物理内存,例如“8.0g”

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

节点 类型 描述
ncpus 字符串 VM 中可用的 CPU 数
pcpus 字符串 VM 中可用的物理 CPU 数
ngpus Integer VM 中可用的 GPU 数
memb 字符串 具有单元指示器的 VM 中可用的近似物理内存,例如“8.0b”
memkb 字符串 具有单元指示器的 VM 中可用的大致物理内存,例如“8.0k”
memmb 字符串 具有单元指示器的 VM 中可用的大致物理内存,例如“8.0m”
memgb 字符串 具有单元指示器的 VM 中可用的大致物理内存,例如“8.0g”
memtb 字符串 具有单元指示器的 VM 中可用的大致物理内存,例如“8.0t”
slots Integer 与 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 映射到槽复杂和 memmb 映射到 mem_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 自动缩放程序在尝试满足作业要求时,会将节点映射到相应的主机组。 考虑队列、并行环境和综合体。 大部分逻辑与相应的 sge 主机组匹配相应的 cyclecloud 存储桶 (和节点数量) 。

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

CycleCloud 将找到主机组的交集,这些主机组:

  1. 包含在 cloud.qpe_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 环境变量 - 必须能够从调用 的azge同一配置文件调用 qconfqsub

azge commands 描述
validate 检查自动缩放程序或网格工程中的已知配置错误
jobs 显示队列中的所有作业
存储桶 显示用于自动缩放的可用资源池
nodes 显示群集主机和属性
demand 将作业要求与 cyclecloud 存储桶匹配,并提供自动缩放结果
自动缩放 完全自动缩放,根据配置启动和删除节点

当修改计划程序配置 (qconf) 或自动缩放配置 (autoscale.json) ,甚至首次设置时, azge 可用于检查自动缩放行为是否与预期匹配。 作为 root,可以运行以下命令。 建议熟悉这些内容,以了解自动缩放行为。

  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 来放宽此假设。 对于简单情况,应提供可由包含目录的执行节点装载的 $SGE_ROOT 文件系统,并在可选设置中配置该装载。 释放 sched 目录和共享目录的依赖项后,可以默认关闭群集中的计划程序节点,并使用外部文件系统中的配置。

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

在 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 位置。