注意:此功能仅支持操作系统为RedHat 9.4的LiCO集群
安装Hybrid HPC–Azure. 请依据您部署LiCO集群的方式,选择下方的步骤:
# 配置EPEL源
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# 安装
dnf install -y lico-core-cloudscheduling-azure
# 配置EPEL源
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# 安装依赖包
dnf install -y openvpn easy-rsa sshpass
修改配置文件/etc/lico/lico.ini.d/cloudscheduling.ini
将如下内容更改为LiCO管理节点的IP地址和子网掩码:
[CLOUDSCHEDULING]
# local head node ip address/netmask
# for example:
# inet 10.241.57.123/24 brd 10.241.57.255
# HEAD_NODE_ADDRESS = "127.0.0.1/24"
HEAD_NODE_ADDRESS = "10.241.57.123/24"
# head node name
# REMOTE_AGENT = "localhost"
REMOTE_AGENT = "head"
根据实际情况调整调整驱动等组件的下载地址,以确保能正确下载驱动等组件:
[CLOUDSCHEDULING.AZURE.GPU_DRIVER]
GPU_DRIVER_URL = "https://us.download.nvidia.com/XFree86/Linux-x86_64/550.90.07/NVIDIA-Linux-x86_64-550.90.07.run"
[CLOUDSCHEDULING.AZURE.MONITOR_COMPONENTS]
DCGM_URL = "https://developer.download.nvidia.cn/compute/cuda/repos/rhel9/x86_64/datacenter-gpu-manager-3.3.9-1-x86_64.rpm"
管理节点共享/opt/lico/cloud
:
echo "/opt/lico/cloud *(ro,sync,no_subtree_check,no_root_squash)" >> /etc/exports
exportfs -a
修改LiCO管理节点slurm配置文件/etc/slurm/slurm.conf
,
在文件的最后添加如下内容:
include /opt/lico/cloud/azure/slurm.conf
配置Hybrid HPC的自动调整功能
修改LiCO管理节点slurm配置文件 /etc/slurm/slurm.conf
,在文件中修改以下参数:
ResumeProgram=/opt/lico/pub/slurm/resume_script.sh
SuspendProgram=/opt/lico/pub/slurm/suspend_script.sh
在目录 /opt/lico/pub/slurm
下,创建脚本
resume_script.sh, suspend_script.sh ,auto_scaling.sh
# Create the directory if it is not existed
mkdir -p /opt/lico/pub/slurm
# resume_script.sh
#!/bin/bash
/opt/lico/pub/slurm/auto_scaling.sh $1 on
# suspend_script.sh
#!/bin/bash
/opt/lico/pub/slurm/auto_scaling.sh $1 off
# auto_scaling.sh
#!/bin/bash
power_type=$2
echo "`date` Power $power_type invoked $0 $1" >> /var/log/slurm/lico_power_save.log
hosts=`scontrol show hostnames $1`
for host in $hosts;do
list+=\"$host\",
done
list=${list%?}
echo "`date` start power $power_type: $hosts" >> /var/log/slurm/power_save.log
api_key="input your api key here"
login_ip="input your login ip here"
curl -X POST -H "Content-Type: application/json" -H "Authorization: token $api_key" -d '{"vms":['$list']}' -k https://$login_ip/api/cloudscheduling/vm/autoscaling/$power_type/
echo "`date` end power $power_type: $hosts" >> /var/log/slurm/lico_power_save.log
在auto_scaling.sh脚本中,填入api_key,login_ip 的内容 您可以登录LiCO页面,点击管理→API Key,获取相应的API Key的内容,login_ip即为LiCO的登录IP地址。
修改脚本和目录权限 ```shell chown -R slurm:slurm /opt/lico/pub/slurm/
chmod 755 /opt/lico/pub/slurm/*.sh ```
运行如下命令重启LiCO管理节点slurmctld服务:
systemctl restart slurmctld
创建Azure身份认证程序:
注册应用程序 注意:在注册应用程序前,请您先检查Azure AD权限和订阅权限。详情请查看:https://learn.microsoft.com/zh-cn/azure/active-directory/develop/howto-create-service-principal-portal
通过Azure帐号登录到Azure门户,选择Microsoft Entra
ID
选择应用注册,点击新注册
为应用程序命名,例如example-app。
选择支持的帐户类型,它决定了谁可以使用应用程序。设置这些值后,选择注册。
注册完成后,复制应用程序(客户端) ID
和目录(租户) ID并存储。
将角色分配给应用程序
在 Azure
门户中,将应用程序在订阅范围内分配角色,请搜索并选择订阅,或在主页页上选择订阅。
选择要将应用程序分配到的特定订阅
选择访问控制,
选择添加->添加角色分配,打开添加角色分配页面
在角色选项卡中,选择特权管理员角色->所有者
在成员选项卡中,选择将访问权限分配到->用户、组或服务主体,然后选中选择成员。
默认情况下,选项中不显示 Azure AD 应用程序。
若要查找应用程序,请按名称(例如example-app)进行搜索,并从返回的列表中选择它。
单击选择按钮
在条件选项卡中,选择允许用户分配所有角色或者允许用户分配除特权管理员角色所有者、UAA、RBAC
之外的所有角色。
点击审阅和分配按钮
创建应用程序密码
选择Microsoft Entra ID
从Azure
AD中的应用注册,选择拥有的应用程序
选择证书和密码
选择客户端密码->新建客户端密码
添加密码的说明和持续时间。
完成后,选择添加。
添加客户端密码后,将显示客户端密码的值。
复制此值,因为稍后将不能查看该值。将该值存储在与目录ID和应用程序ID相同的位置。
执行如下命令将azure身份认证信息导入lico中:
# 将6中获取的应用程序(客户端) ID,目录(租户) ID及客户端密码跟随提示依次进行导入
lico azure_secret import
新建公共IP地址
搜索并选择公共 IP 地址 >
点击创建
依据Azure的说明填写必要参数 注意:
点击创建按钮
在部署云节点完成后,如果页面出现异常问题,可以按照以下步骤进行排查和解决
在lico管理员页面,点击监控 -> 列表视图,查看云节点的监控信息是否正确
如果列表视图页面中,云节点的监控信息不正确,执行以下命令同步云节点信息
lico sync_node