混合云主控模式最佳实践

混合云主控模式集群的管理节点为云上新增集群的管理节点,计算节点由线下已有计算节点和云上新增计算节点组成。本文以E-HPC云上集群将线下已有计算节点纳入管理的场景为例,介绍混合云主控模式集群(SGE调度器)的部署方案。

重要

本文的部署方案仅支持使用SGE调度器,并且需要提交工单申请开通白名单才能使用。

背景信息

在HPC生命科学领域,大部分企业均已经部署了线下的IDC数据中心,但可能会存在基础设施陈旧、算力不足的问题。随着业务的快速增长,企业希望在云上搭建新的算力集群,但同时需要利用上原有IDC内的资源。为满足上述场景的需求,阿里云E-HPC提供了混合云的解决方案,可以统一、高效地管控云上和线下的计算资源,并支持灵活运用云上资源的弹性优势,实现自动伸缩。

混合云解决方案分为主控模式和代理模式。

  • 主控模式:管理节点属于云上新增集群。

  • 代理模式:管理节点属于原先已有集群。

    说明

    代理模式下,已有集群可以是线下集群,也可以是云上其他地域的集群。

场景说明

假设已有线下集群的计算节点的配置为:

  • 操作系统:CentOS 7.6

    重要

    对于线下计算节点,目前暂支持操作系统为CentOS 7系列的节点。

  • 规格:2 vCPU、4 GiB内存

操作流程

本实践包含以下操作:

操作

操作内容

步骤一:创建云上E-HPC集群

准备云上的E-HPC集群,并配置网络。

步骤二:获取云上集群配置信息

获取云上集群配置信息,用于线下计算节点配置使用。

步骤三:部署线下计算节点

在线下计算节点部署调度器客户端、用户管理客户端,并挂载云上存储。

步骤四:将线下计算节点加入到云上集群

在云上集群中创建用于管理线下计算节点的队列,并将线下计算节点加入到云上集群的队列中。

步骤五:配置自动伸缩

配置集群进行自动伸缩,自动增加或减少云上计算节点。

步骤六:提交作业进行测试

在云上集群中提交作业至队列,测试节点能否正常工作。

(可选)从云上集群中移除线下计算节点

对于不再需要使用的线下计算节点,可以从云上集群中移除,同时需要在节点中停止相关服务。

步骤一:创建云上E-HPC集群

  1. 创建一个E-HPC集群。

    具体操作,请参见使用向导创建集群。配置时,需要注意的参数如下:

    • 部署方式选择精简,默认包括1个管控节点和1个计算节点(可不选),其中管控节点的规格建议选择4 vCPU,8 GiB及以上。

    • 调度器使用SGE,即选择opengridscheduler

    • 域账号服务选择nis

  2. 打通云上集群和线下IDC的网络。

    支持通过VPN网关或者物理专线打通云上和线下网络。

  3. 配置安全组。

    由于线下计算节点需要加入到云上集群进行统一管理,因此需要为集群所属的安全组配置入方向规则,允许线下计算节点访问云上集群。

    您可以在E-HPC集群详情页单击安全组ID,快速跳转到集群所属的安全组页面,添加入方向访问规则,其中源IP为线下计算节点的IP地址网段。示例如下:

    混合云最佳实践6

本文采用的环境示例如下:

类型

说明

管控节点

1台ECS,规格为ecs.c7a.xlarge。

计算节点

1台ECS,规格为ecs.c7a.xlarge;2台本地服务器。操作系统为CentOS 7.6。

网络

使用SSL-VPN打通云上集群和线下IDC的网络。

步骤二:获取云上集群配置信息

创建E-HPC集群后,需获取集群管控信息,提供给线下计算节点配置使用。

  1. 登录E-HPC集群。具体操作,请参见登录集群

  2. 下载用于获取集群配置信息的脚本。

    wget https://public-ehpc-package.oss-cn-hangzhou.aliyuncs.com/scheduler/offpremise_config_fetch.sh
  3. 执行脚本获取配置信息。

    source offpremise_config_fetch.sh

    脚本输出的OFFPREMISE_PARAMS文件即为配置信息。执行cat命令获取配置信息。

    混合云最佳实践1

步骤三:部署线下计算节点

您需要在线下计算节点上部署调度器客户端、用户管理客户端,并挂载云上存储。

说明

操作前,请确保节点所在网络与云上集群网络互通。例如如果采用SSL-VPN,线下计算节点需要安装SSL客户端。

  • 单节点操作

    登录某一计算节点执行以下操作:

    1. 下载部署服务脚本。

      wget https://public-ehpc-package.oss-cn-hangzhou.aliyuncs.com/scheduler/deploy_nis_sge_client.sh 
    2. 执行脚本部署服务。

      sh deploy_nis_sge_client.sh <集群配置信息>

      请根据实际获取的集群配置信息替换<集群配置信息>,示例如下:

      sh deploy_nis_sge_client.sh ehpc-hz-e5WF****** manager 10.18.XX.XX 000a******-vm***.cn-hangzhou.nas.aliyuncs.com:/ehpc-hz-e5WF****** manager 10.18.XX.XX
  • 多节点操作

    登录本地的配置节点或者某一计算节点执行以下操作,需确保该节点与其他线下计算节点的网络连通。

    1. 下载部署服务脚本。

      wget https://public-ehpc-package.oss-cn-hangzhou.aliyuncs.com/scheduler/batch_install_clients.sh
    2. 创建hosts文件。

      hosts文件中每一行对应一台计算节点,格式为[host_name]  [host_ip],示例如下:

      混合云最佳实践2

    3. 执行脚本部署服务。

      sh batch_install_clients.sh <集群配置信息> ./hosts

      请根据实际获取的集群配置信息替换<集群配置信息>,示例如下:

      sh batch_install_clients.sh ehpc-hz-e5WF****** manager 10.18.XX.XX 000a******-vm***.cn-hangzhou.nas.aliyuncs.com:/ehpc-hz-e5WF****** manager 10.18.XX.XX ./hosts

步骤四:将线下计算节点加入到云上集群

线下计算节点暂不支持移动队列,您需要先创建用于管理线下计算节点的队列,然后再扩容集群,将线下计算节点加入到集群的指定队列。

  1. 创建队列。具体操作,请参见管理队列

  2. 将线下计算节点加入到集群中。

    1. 在弹性高性能计算控制台的集群页面,找到目标集群,单击右上角的扩容

    2. 在弹出面板选择线下节点页签。

    3. 选择新创建的队列,根据需要逐个录入或者批量导入线下计算节点信息,单击确定

      混合云最佳实践3

      要录入的节点信息如下:

      • 主机名:与实际节点主机名保持一致。

      • 节点IP:与实际节点IP保持一致。

      • CPU:通过lscpu命令查看的节点CPU数。

      • 内存:节点总内存大小。

      重要

      请确保填写的主机名和节点IP与实际节点一致,否则无法加入集群。

      对于基于SSL-VPN连接的节点,节点IP地址需使用VPN虚拟网卡tun0的IP地址,您可以通过ifconfig命令查看。

  3. 节点与队列页面,找到目标集群,筛选节点类型和队列,查看线下计算节点。

    刷新页面更新节点状态,等待1~2分钟,当线下计算节点的状态为运行中时,表示添加成功。

步骤五:配置自动伸缩

E-HPC集群支持配置自动伸缩策略,实现根据实时负载自动增加或减少云上的计算节点。具体操作,请参见配置自动伸缩策略

混合云最佳实践4

说明

线下计算节点及所属队列不支持自动伸缩。

步骤六:提交作业进行测试

  1. 提交作业至云上计算节点所在队列进行测试。

    qsub sample1.sh

    测试脚本sample1.sh的内容示例如下,请根据实际替换队列(-q)和路径(-o-e)。

    #!/bin/bash
    
    #$ -cwd
    #$ -l vf=1G
    #$ -q workq
    #$ -N sge-demo1
    #$ -o /home/test/
    #$ -e /home/test/
    
    echo "demo start, sleep 10s and ping localhost"
    sleep 10
    ping -c 10 localhost
    echo "demo complete"
  2. 提交作业至线下计算节点所在队列进行测试。

    qsub sample2.sh

    测试脚本sample2.sh的内容示例如下,请根据实际替换队列(-q)和路径(-o-e)。

    #!/bin/bash
    
    #$ -cwd
    #$ -l vf=1G
    #$ -q local
    #$ -N sge-demo2
    #$ -o /home/test/
    #$ -e /home/test/
    
    echo "demo start, sleep 10s and ping localhost"
    sleep 10
    ping -c 10 localhost
    echo "demo complete"

(可选)从云上集群中移除线下计算节点

  1. 从集群中移除线下计算节点。

    具体操作,请参见删除节点

  2. 在线下计算节点中停止相关服务。

    • 单节点操作

      登录某一计算节点执行以下操作:

      1. 下载停止服务脚本。

        wget https://public-ehpc-package.oss-cn-hangzhou.aliyuncs.com/scheduler/nis_sge_client_stop.sh 
      2. 执行脚本停止服务。

        sh nis_sge_client_stop.sh <集群配置信息>

        请根据实际获取的集群配置信息替换<集群配置信息>,示例如下:

        sh nis_sge_client_stop.sh ehpc-hz-e5WF****** manager 10.18.XX.XX 000a******-vm***.cn-hangzhou.nas.aliyuncs.com:/ehpc-hz-e5WF****** manager 10.18.XX.XX
    • 多节点操作

      登录本地的配置节点或者某一计算节点执行以下操作,需确保该节点与其他线下计算节点的网络连通。

      1. 下载停止服务脚本。

        wget https://public-ehpc-package.oss-cn-hangzhou.aliyuncs.com/scheduler/batch_stop_clients.sh
      2. 创建host文件。

        hosts文件中每一行对应一台计算节点,格式为[host_name]  [host_ip],示例如下:

        混合云最佳实践2

      3. 执行脚本停止服务。

        sh batch_stop_clients.sh <集群配置信息> ./hosts

        请根据实际获取的集群配置信息替换<集群配置信息>,示例如下:

        sh batch_stop_clients.sh  ehpc-hz-e5WF****** manager 10.18.XXX.XX 000a******-vm***.cn-hangzhou.nas.aliyuncs.com:/ehpc-hz-e5WF****** manager 10.18.XX.XX ./hosts