共用方式為


CycleCloud GridEngine 叢集

CycleCloud GridEngine 叢集專案 README

透過修改叢集定義中的「run_list」,即可輕鬆地在 Azure CycleCloud 叢集上開啟方格排程器 (方格引擎)。 Grid Engine 叢集包含兩個主要元件。 第一個是 「主要」節點,它會提供網格線引擎軟體執行所在的共用文件系統。 第二個節點是一組「執行」節點,這些節點是裝載共用文件系統並執行已提交的作業的主機。 例如,簡單的方格引擎叢集範本程式碼片段可能如下所示:

[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 中匯入和啟動具有定義的叢集會導致單一 'master' 節點。 'execute' 節點可以透過命令 cyclecloud add_node 新增至叢集。 例如,若要新增 10 個「執行」節點:

cyclecloud add_node grid-engine -t execute -c 10

方格引擎自動調整

Azure CycleCloud 支援網格線引擎的自動調整。 此行為表示軟體會持續監視佇列的狀態,並視需要自動開啟或關閉節點,以在時間和成本方面有效率地完成工作負載。 您可以新增 Autoscale = true 至叢集定義,以啟用方格引擎的自動調整:

[cluster grid-engine]
Autoscale = True

根據預設,提交至 Grid Engine 佇列的所有作業都會在類型為 '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」,提供具有兩個 NVIDIA GPU 的 MachineType (在 Azure 中Standard_NV12)。 另請注意,除了 'csge:sgeexec' 配方之外,設定區段中現在有兩個新項目。 新增 gridengine.slot_type = gpu 會告訴方格引擎排程器,這些節點應該命名為 'gpu' 節點,因此應該僅執行 'gpu' 作業。 名稱 'gpu' 是任意名稱,但描述節點的名稱是最有用的。 設定 gridengine.slots = 2,這會告訴軟體確保此類型的節點一次只能執行兩個作業 (Standard_NV12 只有 2 個 GPU)。

根據預設,Grid Engine 會根據系統的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_types 會個別設定,而 'execute' 位置的插槽數目為 4,也就是電腦上的 CPU 數目。 'gpu' 位置類型的位置數量是 2,就是我們在叢集組態範本中所指定的數量。 第三台機器是不執行作業的主節點。

方格引擎進階使用方式

這些組態設定可讓您進一步自定義節點和節點陣列。 例如,如果工作需要特定數量的記憶體,例如每個工作 10 GB,您可以定義一個「執行」節點陣列,以啟動具有 60 GB 記憶體的機器,然後新增配置選項 gridengine.slots = 6 ,以確保只有 6 個工作可以在這種類型的節點上同時執行(確保每個工作至少有 10 GB 的記憶體可供使用)。

方格引擎中的群組節點

當平行作業提交至方格引擎時,CycleCloud 會使用預設自動調整行為,來將每個 MPI 工作視為群組節點要求。 群組節點緊密結合,非常適合 MPI 工作流程。

當一組群組節點加入 Grid Engine 叢集時,每個節點的群組標識碼會當做複雜值 的值 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 個 'execute' 作業。 由於 'gpu' 節點陣列定義為每個節點有 2 個位置,因此 CycleCloud 會啟動其中 3 個節點 (5/2=2.5 四捨五入至 3)。

有 5 個正常作業,因為 'execute' nodearray 的計算機類型各有 4 個 CPU,CycleCloud 會啟動其中 2 個節點來處理作業(5/4=1.25 四捨五入為 2)。 在短暫的啟動期間之後,新啟動的節點會開機並自行設定。 準備就緒之後,所有 10 個工作都會執行到完成。 5 個節點接著會在另一個計費週期從雲端提供者開始之前自動關閉。

作業假設持續時間為一小時。 如果已知作業運行時間,自動調整演算法可以受益於這項資訊。 藉由將預期的作業執行時間新增至作業內容,讓自動調整獲知該時間。 下列範例會將自動擴展的作業執行時間設定為 10 分鐘:

qsub -ac average_runtime=10 job_with_duration_of_10m.sh

方格引擎組態參考

以下是您可以切換自訂功能的方格引擎特定組態選項:

SGE 特定的組態選項 說明
gridengine.slots 要向方格引擎報告的指定節點位置數目。 位置數量是節點可執行的並行作業數量,此值預設為指定機器上的 CPU 數量。 如果您不是根據 CPU,而是基於記憶體、GPU 等來執行作業,您可以覆寫此值。
gridengine.slot_type 節點提供的 'slot' 類型名稱。 預設值為 'execute'。 當作業以硬式資源 『slot_type=』 標記時,該作業 只會 在相同位置類型的計算機上執行。 此標記可讓您為每個節點建立不同的軟體和硬體組態,並確保一律會在正確的節點類型上排程適當的作業。
gridengine.ignore_fqdn 預設值:true。 如果叢集中的所有節點不是單一 DNS 網域的一部分,則設定為 false。
gridengine.version 預設值:'2011.11'。 此組態選項會指定要安裝和執行的方格引擎版本。 目前,它是預設值和 唯一 可用的選項。 未來可能會支援其他版本的 Grid Engine 軟體。
gridengine.root 預設值:'/sched/sge/sge-2011.11' 此位置是網格引擎在系統中每個節點上安裝並掛載的位置。 最好維持此值不變。 不過,如果您修改,請務必在叢集中 的每個 節點上設定相同的值。

CycleCloud 支援跨排程器的標準自動停止屬性集:

屬性 說明
cyclecloud.cluster.autoscale.stop_enabled 啟用此節點上的自動停止。 是/否
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 建立的叢集部署,也可以安裝在現有叢集上的任何 GridEngine 系統管理主機上。

安裝或升級 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 並等候 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 的佇列。

最後,根據 CycleCloud 分配預測,透過 qsub -q short.q -pe mpi0* 12 my-script.sh 結果提交工作會將 VM 新增到 @mpihg01@mpihg02

平行環境會隱含地等於 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 平行環境呈現一對一對應。

指定工作的平行環境會限制工作透過智慧主機群組指派邏輯在放置群組中執行。 您可以透過 autoscale.json中的對應組態來停用此行為: "required_placement_groups" : false

自動調整設定

此外掛程式會自動調整網格,以滿足工作負載需求。 autoscale.json 組態檔會決定方格引擎自動調整程式的行為。

  • 設定 CycleCloud 連線詳細資料
  • 設定閒置節點的終止計時器
  • 支援多維度自動調整。 您可以配置要在工作封裝中使用的屬性,例如插槽或記憶體
  • 註冊要管理的佇列、平行環境和主機群組
設定 類型 說明
url 繩子 CC URL
使用者名稱/密碼 繩子 CC 連線詳細資料
叢集名稱 繩子 CC 叢集名稱
預設_資源 地圖 將節點資源連結至用於自動調整的方格引擎主機資源
idle_timeout 整數 終止閒置節點之前的等候時間
boot_timeout 整數 在長時間設定階段終止節點之前的等候時間
gridengine.relevant_complexes 清單 (字串) 會在自動調整中考慮的格線引擎複合體,例如位置、mem_free
gridengine.logging 檔案 記錄組態檔的位置
gridengine.pes 結構體 指定 PES 的行為,例如,requires_placement_group = false

自動調整程式只會考慮 相關的資源

另一個自動調整資源

根據預設,作業會要求許多位置,而叢集會根據這些要求進行調整。

假設我們想要依據 m_mem_free 的作業資源要求進行自動調整。

  1. m_mem_free 新增至 gridengine.relevant_resources 中的
  2. m_mem_free 連結至 autoscale.json 中的節點層級記憶體資源

這些屬性可以透過 _default/node.* 中的 作為 value 加以引用。

Node 類型 說明
節點陣列 繩子 cyclecloud nodearray 的名稱
placement_group 繩子 nodearray 內的 cyclecloud 放置群組名稱
vm_size 繩子 VM 產品名稱,例如“Standard_F2s_v2”
vcpu_count 整數 節點上可用的虛擬 CPU,如個別產品頁面上所示
pcpu_count 整數 節點上可用的實體 CPU
記憶體 繩子 VM 中可用的大約物理記憶體與單位指標,例如 “8.0g”

其他屬性位於 命名空間中 node.resources.* ,例如 『node.resources。

Node 類型 說明
ncpus 繩子 VM 中可用的 CPU 數量
pcpus 繩子 VM 中可用的實體 CPU 數量
ngpus 整數 VM 中可用的 GPU 數量
memb 繩子 VM 中具有單位指標的近似物理記憶體,例如 “8.0b”
memkb 繩子 VM 中具有單位指標的近似物理記憶體,例如 “8.0k”
memmb 繩子 VM 中大約的物理記憶體數量,帶有單位指標,例如 “8.0m”
memgb 繩子 VM 中可用的大約物理記憶體與單位指標,例如 “8.0g”
memtb 繩子 VM 中可用的大約物理記憶體與單位指標,例如 “8.0t”
slots 整數 與 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 自動調整程式嘗試滿足作業需求時,會將節點對應至適當的主機群組。 佇列、平行環境和複合體都會納入考量。 大部分的邏輯是將適當的 cyclecloud 貯體 (和節點數量) 與適當的 sge 主機群組相比對。

針對提交為下列項目的作業: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. 讓 CycleCloud 藉由在排程器設定中調整 weight_queue_host_sort < weight_queue_seqno ,以依名稱排序的方式選擇相符的主機群組。
  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 命令 說明
確認 檢查自動調整程式或 GridEngine 中的已知組態錯誤
jobs 顯示佇列中的所有作業
貯體 顯示自動調整可用的資源集區
nodes 顯示叢集主機和屬性
需求 比對作業需求與 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,即可放寬此假設。

對於簡單的情況,您應該提供「執行」節點可以掛載的檔案系統。 此檔案系統必須包含 ... 目錄,並在選擇性設定中設定掛接。 當釋放 sched 和共享目錄的依賴關係後,您可以將預設情況下屬於叢集一部份的排程節點關閉,並使用來自外部檔案系統的設定。

  1. 建立新的 gridengine 叢集。
  2. 停用傳回 Proxy。
  3. 以外部檔案系統取代 /sched/shared
  4. 儲存叢集。
  5. 移除使用者介面中作為動作的排程器節點。
  6. 啟動叢集,一開始不會啟動任何節點。
  7. 使用 autoscale.json 設定 cyclecloud-gridengine以使用新叢集

在 CycleCloud 中使用 Univa 方格引擎

GridEngine 的 CycleCloud 專案預設會使用 sge-2011.11。 根據 Altair 授權合約,您可以使用自己的 Altair GridEngine 安裝程式。 本節說明如何在 CycleCloud GridEngine 專案中使用 Altair GridEngine。

先決條件

此範例使用 8.6.1-demo 版本,但支援所有大於 8.4.0 的 GE 版本。

  1. 使用者必須提供 UGE 二進位檔
  • ge-8.6.x-bin-lx-amd64.tar.gz
  • ge-8.6.x-common.tar.gz
  1. 必須設定 CycleCloud CLI。 您可以在這裡取得文件

將二進位檔複製到雲端保險箱

CycleCloud 隨附一個 AGE 補充版本 (8.6.7-demo)。 若要使用另一個版本,請將二進位檔上傳至 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 設定會在叢集啟動時覆寫預設的 GridEngine 版本和安裝位置。 由於它是叢集中的共用 NFS 位置,因此無法放心地移出 /sched