控制台上创建集群,在“软件配置”页,点开“高级配置”项,在底部“安装后脚本”输入框中,填入需要在集群安装后执行的自定义脚本下载地址(支持http/https协议下载,推荐存放脚本到oss公开可读bucket),以及执行参数。
支持包含bash、python等可以在 Linux Shell 环境中运行的脚本类型,脚本第一行务必加上注解指明运行时调用的命令,例如 bash 脚本第一行为 “#!/bin/bash”。
云市场镜像附带的初始化脚本,由镜像提供商注册到E-HPC后台,普通用户无需填写。
如果使用附带初始化脚本的云市场镜像创建E-HPC集群,用户同时指定了自定义的安装后脚本,则执行顺序是,先执行云市场镜像附带的初始化脚本,再执行用户自定义的安装后脚本。
集群所有节点启动并安装好必要的软件后,将下载安装后脚本,在集群所有节点上执行一次。此时集群的调度器、域账号等服务都已就绪,登录节点可以连接。
自定义安装后脚本默认将在集群的所有节点上执行,用户通常需要根据节点的角色(是否调度器节点、计算节点或者登录节点),来决定具体执行的操作,执行脚本过程中可能需要集群的某些元数据。这些信息作为环境变量,可在脚本的运行时获取。
可用环境变量如下(所有变量类型为字符串):
变量名 | 取值 | 说明 |
---|---|---|
ClusterId | 集群ID | |
HOSTNAME | 主机名 | |
AccountType | NIS / LDAP | 域账号类型 |
SchedulerType | PBS / SLURM / GRIDENGINE | 调度器类型 |
Role | AccountManager / AccountManagerBackup / ResourceManager / ResourceManagerBackup / ComputeNode / LoginNode | Role为单一角色名称或者多个角色名称以逗号分隔组成字符串。即单个节点可能同时具有多种角色。 |
ResourceManagerIp | 主调度器私网IP | |
ResourceManagerHost | 主调度器主机名 | |
AccountManagerIp | 主域服务器私网IP | |
AccountManagerHost | 主域服务器主机名 | |
ResourceManagerBackupIp | 备用调度器私网IP(开启HA) | |
ResourceManagerBackupHost | 备用调度器主机名(开启HA) | |
AccountManagerBackupIp | 备用域服务器私网IP(开启HA) | |
AccountManagerBackupHost | 备用域服务器主机名(开启HA) | |
isLoginNode | true / false | 是否登录节点 |
isAccountManager | true / false | 是否主域服务器 |
isResourceManager | true / false | 是否主调度器 |
isAccountManagerBackup | true / false | 是否备用域服务器 |
isResourceManagerBackup | true / false | 是否备用调度器 |
isComputeNode | true / false | 是否计算节点 |
示例下载地址:http://public-ehs.oss-cn-hangzhou.aliyuncs.com/scripts/postscript_example.sh
#!/bin/bash
echo "call $0 with param: $@" | tee /root/command.log
## show all availble environment variables
printenv | tee /root/env.log
## Cluster meta data
echo "ClusterId: ${ClusterId}" | tee /root/cluster.log
echo "AccountType: ${AccountType}, SchedulerType: ${SchedulerType}" | tee -a /root/cluster.log
## Role of current machine
echo "${Role}" | tee /root/role.log
if [ "${isLoginNode}" == "true" ]; then
## Do your work on login node
echo "This is login node" | tee -a /root/role.log
exit $?
fi
if [ "${isAccountManager}" == "true" ]; then
## Do your work on NIS/LDAP master
echo "This is account manager" | tee -a /root/role.log
exit $?
fi
if [ "${isResourceManager}" == "true" ]; then
## Do your work on Slurm/PBS master
echo "This is scheduler" | tee -a /root/role.log
exit $?
fi
if [ "${isComputeNode}" == "true" ]; then
## Do your work with on compute node
echo "This is compute node" | tee -a /root/role.log
exit $?
fi
现在提到买云服务器,很多用户的第一选择就是阿里云服务器,的确,在云服务器市...
本文转载自公众号读芯术(ID:AI_Discovery)。 对于数据科学家来讲,能否理解数据...
前言 本篇是SLS新版告警系列宣传与培训的第一篇 后续我们会推出20 系列直播与实...
这132个特效,是我历时10个多月在油管一个一个跟着敲出来的,为了加强记忆,每个...
公司简介 广州市藏星网络科技有限公司的主要产品是移动互联网应用“上学帮”,产...
使用我们的新电子书中的分步说明,以有趣的方式了解 Python。 Python 是目前最流...
新型肺炎疫情牵动着全国人民的心。截至 2020 年 1 月 27 日 11 时 54 分,全国新...
问题描述 网站的访问与云服务器的网络配置、端口通信、防火墙配置、安全组配置等...
CKA 考试详解 kubectl config use-context k8s # 使用kubeconfig中的一个环境项...
怎么租服务器 ? 租用服务器 需要考虑的因素包括哪些? 1. 客户在选择服务器时,...