背景说明
THPC 集群中的节点在创建过程中,提供用户自定义集群初始化脚本能力,满足客户对于节点开始执行任务之前,预部署需求。包括存储的挂载、数据预处理、配置变更和软件部署等操作。
初始化脚本配置方式
设置集群初始化脚本有以下两种方式:
1. 创建集群时,通过 InitNodeScripts 参数进行设置。
2. 集群创建成功后,通过 修改节点初始化脚本 接口进行配置。
注意:
操作步骤
1. 创建 COS 存储桶,上传初始化脚本到 COS 存储,脚本必须以#!字符以及指向要读取脚本的解释器的路径(通常为 #!/bin/bash)开头。执行脚本支持以下环境变量,客户可以根据环境变量进行脚本执行的逻辑控制:
环境变量名 | 说明 | 参考值 |
THPC_NODE_ROLE | 节点的角色 | COMPUTE LOGIN MANAGER |
THPC_CLUSTER_ID | 集群ID信息 | hpc-8hje8h12 |
THPC_SCHEDULER_TYPE | 调度器类型 | SLURM |
THPC_ACCOUNT_TYPE | 域名字服务类型 | NIS |
注意:
初始化脚本需要提前上传到 cos 桶上进行存储。
由于初始化脚本在加入集群之前进行执行,需要客户评估脚本执行超时时间,否则有可能脚本执行异常,导致实例长时间无法加入集群被使用。
示例脚本如下:
#!/bin/bashecho ${THPC_NODE_ROLE} > /root/${THPC_NODE_ROLE}echo ${THPC_CLUSTER_ID} > /root/${THPC_CLUSTER_ID}echo ${THPC_SCHEDULER_TYPE} > /root/${THPC_SCHEDULER_TYPE}echo ${THPC_ACCOUNT_TYPE} > /root/${THPC_ACCOUNT_TYPE}
2. 在创建集群时配置 InitNodeScripts 参数或者集群创建成功后调用 修改节点初始化脚本 接口配置;
其中 ScriptPath 参数需要填写以 cos:// 的形式开头,将图中访问域名的 https:// 替换成 cos://,后续添加添加上存储桶访问路径即可。
![](https://qcloudimg.tencent-cloud.cn/image/document/e0ea915007f4a4a1f02b028a644db82f.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e0ea915007f4a4a1f02b028a644db82f.png)
例如
cos://test-appid.cos.ap-guangzhou.myqcloud.com/thpc_test/install.sh
其中 test-appid.cos.ap-guangzhou.myqcloud.com
为存储桶访问域名,/thpc_test/install.sh
为脚本访问路径。说明:
目前只支持拉取与集群相同账号的 COS 桶,跨账号的 COS 桶暂时不支持拉取。
3. 在创建集群或者节点创建时,集群中的节点会从 cos 地址中获取到脚本,并在
/tmp/hpc_script/
目录下进行执行。脚本执行结果判断:
(1)集群脚本在超时时间内,返回 exit_code 为0,则被视为执行成功。
(2)集群脚本执行超时,或者返回的 exit_code 不为0,则被视为执行失败,执行失败的节点会被自动退还并销毁。
说明:
为了保证用户的操作能够在节点加入集群之后可以正常运行任务,初始化脚本在节点加入集群之前进行执行。执行自定义脚本会增加节点扩容所需时间。