初始化Hybrid HPC

注意:此功能仅支持操作系统为RedHat 8.8的LiCO集群

  1. 安装Hybrid HPC--Azure. 请依据您部署LiCO集群的方式,选择下方的步骤:

    • 如果您将LiCO部署在本地集群中,请在管理节点执行如下命令:
    # 配置EPEL源
    dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    # 安装
    dnf install -y lico-core-cloudscheduling-azure
    • 如果您在docker容器中部署LiCO,请在管理节点执行如下命令:
    # 配置EPEL源
    dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    # 安装依赖包
    dnf install -y openvpn easy-rsa sshpass
  2. 修改配置文件/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"
  3. 管理节点共享/opt/lico/cloud

    echo "/opt/lico/cloud *(ro,sync,no_subtree_check,no_root_squash)" >> /etc/exports 
    exportfs -a
  4. 修改LiCO管理节点slurm配置文件/etc/slurm/slurm.conf, 在文件的最后添加如下内容:

    include /opt/lico/cloud/azure/slurm.conf
  5. 配置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/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/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/lico_power_save.log
      
    • 在auto_scaling.sh脚本中,填入api_key,login_ip 的内容 您可以登录LiCO页面,点击管理→API Key,获取相应的API Key的内容,login_ip即为LiCO的登录IP地址。

  6. 运行如下命令重启LiCO管理节点slurmctld服务:

    systemctl restart slurmctld
  7. 创建Azure身份认证程序:

    • 注册应用程序 **注意:**在注册应用程序前,请您先检查Azure AD权限和订阅权限。详情请查看:https://learn.microsoft.com/zh-cn/azure/active-directory/develop/howto-create-service-principal-portal

      • 通过Azure帐号登录到Azure门户,选择Microsoft Entra ID Portal

      • 选择应用注册,点击新注册 App1

      • 为应用程序命名,例如example-app。 选择支持的帐户类型,它决定了谁可以使用应用程序。设置这些值后,选择注册App2

      • 注册完成后,复制应用程序(客户端) ID目录(租户) ID并存储。 App3

    • 将角色分配给应用程序

      • 在 Azure 门户中,将应用程序在订阅范围内分配角色,请搜索并选择订阅,或在主页页上选择订阅Role1

      • 选择要将应用程序分配到的特定订阅 Role2

      • 选择访问控制, 选择添加->添加角色分配,打开添加角色分配页面 Role3

      • 角色选项卡中,选择特权管理员角色->所有者 Role4

      • 成员选项卡中,选择将访问权限分配到->用户、组或服务主体,然后选中选择成员。 默认情况下,选项中不显示 Azure AD 应用程序。 若要查找应用程序,请按名称(例如example-app)进行搜索,并从返回的列表中选择它。 单击选择按钮 Role5

      • 点击审阅和分配按钮

    • 创建应用程序密码

      • 选择Microsoft Entra ID

      • Azure AD中的应用注册,选择拥有的应用程序 Secret1

      • 选择证书和密码

      • 选择客户端密码->新建客户端密码

      • 添加密码的说明持续时间。 完成后,选择添加Secret2

      • 添加客户端密码后,将显示客户端密码的值。 复制此值,因为稍后将不能查看该值。将该值存储在与目录ID和应用程序ID相同的位置。 Secret3

  8. 执行如下命令将azure身份认证信息导入lico中:

    # 将6中获取的应用程序(客户端) ID,目录(租户) ID及客户端密码跟随提示依次进行导入
    lico azure_secret import
  9. 新建公共IP地址

    • 搜索并选择公共 IP 地址 > 点击创建 public_ip

    • 依据Azure的说明填写必要参数 注意:

      • 资源组的选项处,请您点击选择框下的新建按钮,创建一个新的资源组
      • LiCO 7.0.0 默认支持的Azure区域有:East US, West Europe, UAE North, West India, Korea Central。请您注意位置的选择。
    • 点击创建按钮