全部產品
Search
文件中心

Elastic High Performance Computing:製作加速鏡像

更新時間:Jun 04, 2025

本文介紹開啟自動調整的叢集,通過製作加速鏡像的方式,縮短從作業提交到作業啟動並執行時間耗時較久的問題。

背景介紹

針對自動調整叢集中作業從提交到運行耗時較長的問題,分析發現主要原因為伸縮決策和伸縮動作耗時較長。

為最佳化這一問題,提出通過製作加速鏡像的方式,將Python環境和其他依賴包的下載安裝過程提前在鏡像中完成,從而縮短節點啟動和作業已耗用時間。

前提條件

  • 目前僅支援杭州地區。

  • 叢集狀態處於運行中

  • 升級叢集用戶端(ehpcutil)版本為2.0.47及以上版本。

    說明

    單擊目的地組群進入叢集配置詳情頁,可查看並執行升級操作以更新至最新版本;若無升級選項,則目前的版本已是最新版本。

操作步驟

步驟一:建立執行個體

  1. 前往執行個體購買頁,選擇自訂購買頁簽,需滿足如下要求。更多內容,請參見自訂購買執行個體

    • 付費模式選擇隨用隨付

    • 執行個體選擇X86_64架構。

    • 鏡像選擇CentOS 7 系列鏡像。

    • 公網 IP勾選分配公網 IPv4 地址

    • 安全性群組選擇叢集所使用的安全性群組。

  2. 單擊確認下單,完成執行個體建立。

步驟二:安裝環境

  1. 執行個體狀態顯示運行中後,遠端連線已建立的ECS計算節點執行個體。具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)

  2. 下載安裝python環境,包括python2 env、python3.9、python3.9 env。

    1. 在root目錄下,建立install_python.sh的安裝指令碼。

      #!/bin/bash
      
      PYTHON_INSTALL_ROOT=/usr/local/py3.9env
      SERVICE_INSTALL_ROOT=/usr/local/ehpc_service
      
      mkdir $PYTHON_INSTALL_ROOT
      
      set -e
      
      arch=`arch`
      srcEnvPath=$1  # Pass this as an argument when calling the script
      #py3=$2  # Pass this as an argument (0 or 1) to decide which Python version to install
      
      pythonenv="python3.9env"
      echo "Downloading and extracting Python 3.9.10 for ${arch}..."
      wget -c -nv ${srcEnvPath}/python3.9.10.$arch.tgz -O - | tar -xz -C /usr/local/py3.9env/
      echo "Downloading and extracting ${pythonenv} for ${arch}..."
      curl -s -O ${srcEnvPath}/${pythonenv}.$arch.tgz
      if [ -d /usr/local/py3.9env/${pythonenv} ]; then
        rm -rf /usr/local/py3.9env/${pythonenv}
      fi
      tar -xzf ${pythonenv}.$arch.tgz -C /usr/local/py3.9env/
      
      echo "Downloading and extracting Python 2.7 environment..."
      curl -s -O ${srcEnvPath}/centos/7.2/python2.7env.tgz
      if [ -d /usr/local/python2.7env ]; then
        rm -rf /usr/local/python2.7env
      fi
      tar -xzf python2.7env.tgz -C /usr/local/
    2. 給指令碼添加運行許可權。

      chmod +x install_python.sh
    3. 執行該指令碼,進行下載安裝。

      bash /root/install_python.sh http://public-ehs.vpc100-oss-cn-hangzhou.aliyuncs.com/packages/env
    4. 檢查在/usr/local/目錄下存在 py3.9env 和 python2.7env 目錄,則安裝成功。

  3. 下載安裝node.js以及其他依賴包。

    1. 在root目錄下,建立下載安裝指令碼install_lib.sh

      #!/bin/bash
      
      set -e
      arch=`arch`  # Pass this as an argument when calling the script
      srcEnvPath=$1  # Pass this as an argument when calling the script
      
      # echo "Installing Node.js for aarch64..."
      # curl -s -O $srcEnvPath/node-v16.17.1-linux-arm64.tar.xz
      # tar -xf node-v16.17.1-linux-arm64.tar.xz
      # mv node-v16.17.1-linux-arm64 /usr/local/node-v16.17.1-linux-arm64
      # ln -sfT /usr/local/node-v16.17.1-linux-arm64/bin/node /usr/local/bin/node
      # ln -sfT /usr/local/node-v16.17.1-linux-arm64/bin/npm /usr/local/bin/npm
      
      echo "Installing Node.js for x86_64..."
      curl -s -O $srcEnvPath/node-v6.11.1-linux-x64.tar.gz
      tar -xzf node-v6.11.1-linux-x64.tar.gz
      mv node-v6.11.1-linux-x64 /usr/local/node-v6.11.1
      ln -sfT /usr/local/node-v6.11.1/bin/node /usr/local/bin/node
      ln -sfT /usr/local/node-v6.11.1/bin/npm /usr/local/bin/npm
      
      echo "Installing additional libraries..."
      yum clean all && yum makecache
      yum install -y perf postgresql-contrib hwloc-devel jsoncpp-devel libcurl-devel nfs-utils cifs-utils environment-modules unzip jq
      
      echo "Appending module path..."
      echo -e "\nexport MODULEPATH=/opt/ehpcmodulefiles" >> /etc/bashrc
      
      kernel_version="$(uname -r)"
      kernel_devel_pkg="kernel-devel-${kernel_version}"
      base_os="7"
      kernel_devel_remote_repo="http://mirrors.cloud.aliyuncs.com/opsx/ecs/linux/rpm/driver/${base_os}/x86_64"
      
      rpm -q "${kernel_devel_pkg}" || yum install -y "${kernel_devel_pkg}"
      
      
      echo "Installing xdragon-health-protector..."
      xdragon_pkg="xdragon-health-protector-vm-1.0.x86_64.rpm"
      curl -s -O $srcEnvPath/${xdragon_pkg}
      yum install -y ${xdragon_pkg}
      systemctl enable xdragon-health-protector
      systemctl restart xdragon-health-protector
      systemctl status xdragon-health-protector
    2. 給指令碼添加運行許可權。

      chmod +x install_lib.sh
    3. 運行安裝指令碼。執行以下命令,顯示狀態為running則安裝成功。

      bash /root/install_libs.sh http://public-ehs.vpc100-oss-cn-hangzhou.aliyuncs.com/packages/env 

      image

步驟三:製作鏡像

  1. 訪問ECS控制台-執行個體,進入執行個體詳情頁面。

  2. 單擊建立自訂鏡像,完成製作加速鏡像。

    image

步驟四:配置叢集自動調整

  1. 登入彈性高效能運算控制台。單擊目標叢集名稱,進入叢集詳情頁面。

  2. 在左側導覽列,選擇節點與隊列 > 隊列,單擊目標隊列操作列下的編輯

  3. 編輯隊列頁面,完成執行個體規格組的參數配置。更多內容,請參見自動調整節點

    1. 單擊添加執行個體規格,選擇節點的規格。

    2. 單擊自訂鏡像,選擇製作的加速鏡像。

      image

    3. 單擊確認

  4. 單擊儲存,完成配置叢集自動調整。