本文介紹開啟自動調整的叢集,通過製作加速鏡像的方式,縮短從作業提交到作業啟動並執行時間耗時較久的問題。
背景介紹
針對自動調整叢集中作業從提交到運行耗時較長的問題,分析發現主要原因為伸縮決策和伸縮動作耗時較長。
為最佳化這一問題,提出通過製作加速鏡像的方式,將Python環境和其他依賴包的下載安裝過程提前在鏡像中完成,從而縮短節點啟動和作業已耗用時間。
前提條件
目前僅支援杭州地區。
叢集狀態處於運行中。
升級叢集用戶端(ehpcutil)版本為
2.0.47及以上版本。說明單擊目的地組群進入叢集配置詳情頁,可查看並執行升級操作以更新至最新版本;若無升級選項,則目前的版本已是最新版本。
操作步驟
步驟一:建立執行個體
步驟二:安裝環境
執行個體狀態顯示運行中後,遠端連線已建立的ECS計算節點執行個體。具體操作,請參見使用Workbench終端串連登入Linux執行個體(SSH)。
下載安裝python環境,包括python2 env、python3.9、python3.9 env。
在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/給指令碼添加運行許可權。
chmod +x install_python.sh執行該指令碼,進行下載安裝。
bash /root/install_python.sh http://public-ehs.vpc100-oss-cn-hangzhou.aliyuncs.com/packages/env檢查在
/usr/local/目錄下存在 py3.9env 和 python2.7env 目錄,則安裝成功。
下載安裝node.js以及其他依賴包。
在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給指令碼添加運行許可權。
chmod +x install_lib.sh運行安裝指令碼。執行以下命令,顯示狀態為
running則安裝成功。bash /root/install_libs.sh http://public-ehs.vpc100-oss-cn-hangzhou.aliyuncs.com/packages/env
步驟三:製作鏡像
訪問ECS控制台-執行個體,進入執行個體詳情頁面。
單擊建立自訂鏡像,完成製作加速鏡像。

步驟四:配置叢集自動調整
登入彈性高效能運算控制台。單擊目標叢集名稱,進入叢集詳情頁面。
在左側導覽列,選擇,單擊目標隊列操作列下的編輯。
在編輯隊列頁面,完成執行個體規格組的參數配置。更多內容,請參見自動調整節點。
單擊添加執行個體規格,選擇節點的規格。
單擊自訂鏡像,選擇製作的加速鏡像。

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