本文介绍如何使用E-HPC插件部署混合云集群,该集群由本地调度器、本地域控和云上计算节点等组成。
背景信息
混合云集群是E-HPC提供的一套用于云上计算资源和本地服务之间互通的集群结构,通常由本地调度器、本地域控、云上计算节点、共享存储与互联互通网络组成。混合云集群具备以下优势:
-
统一调度 |
在不改变本地已有调度策略与域控的基础上,实现本地与云上资源统一调度。通过E-HPC混合云插件,可以实现云上资源弹性伸缩。
-
安全性
通过专线打通云上VPC与线下网络,可以保护本地数据安全与隐私。
-
高可用
云上资源通常具备较高可用性与性能,某些情况下,企业需要性能更好的云上资源与本地算力共同支撑关键业务应用。
-
低成本
动态弹性使用云上资源,与本地资源实现互补,使得企业具备优化成本的空间。
适用场景
本文适用于以下场景:
-
云上计算节点。
-
本地管控节点,包括本地调度器、域控与DNS。
-
集群节点的操作系统为CentOS或Redhat。
操作步骤
步骤一:确认本地集群信息
-
确认调度器可以正常调度作业。
本文方案适用于管控节点(含调度器)在本地,计算节点在云上的场景。您需要自行确认本地管控节点上部署的调度器可以正常调度作业。
E-HPC支持的调度器类型为PBS、Slurm、LSF和OpenLava。
说明如果您的本地集群使用其他类型的调度器,请联系阿里云技术支持确认是否支持。
-
确认域控服务部署正常。
您需要自行确认本地管控节点上部署的域控服务部署正常,以保证后续新增的用户可以正常登录本地节点。
说明关于如何搭建域控服务(以Windows AD为例),请参见使用Windows实例搭建AD域。
-
确认网络连通性。
由于云上节点需要连通本地调度器与域账户,因此需要确保云上环境和本地环境的网络连通性。
可以通过VPN网关或者物理专线等方式打通云上和本地网络。
-
VPN网关的相关配置请参见入门概述或SSL-VPN入门概述。
-
物理专线的相关配置请参见专线连接介绍。
-
步骤二:制作自定义镜像
-
登录ECS管理控制台。
-
创建一台ECS实例用于制作自定义镜像。具体操作,请参见自定义购买实例。
-
开放服务端口并测试。
您需要打开云上安全组和本地防火墙的相关端口。关于如何配置安全组规则,请参见添加安全组规则。
-
调度器
PBS
服务
端口
协议
备注
pbs_server
15001
TCP
PBS Server。
pbs_sched
15004
TCP
PBS Server调度。
pbs_comm
17001
TCP
PBS Server command服务。
postgres
15007
TCP
PBS Server数据库服务。
pbs_comm
-
15002
-
15003
TCP
PBS计算节点服务。
Slurm
服务
端口
协议
备注
slurmctld
6817
TCP
Slurm Server。
slurmdbd
6819
TCP
Slurm Server数据库服务。
slurmd
6818
TCP
Slurm数据库服务。
LSF
服务
端口
协议
备注
mbatchd
-
6891
-
50941
-
6881
-
37826
TCP
LSF Server。
pim
45423
TCP
lim
7869
TCP
sbatchd
-
6882
-
41192
TCP
res
-
6878
-
42467
-
58745
TCP
pim
40361
TCP
LSF计算节点服务。
lim
7869
TCP
sbatchd
6882
TCP
res
42151
TCP
-
-
域控(以Windows AD+Linux SSSD为例)
服务
端口
协议
备注
DNS
53
UDP和TCP
DNS域名解析。
LDAP
389
UDP和TCP
LDAP目录访问。
Samba
445
UDP和TCP
SMB服务通信。用于AD组策略对象(GPO)。
Kerberos
88
UDP和TCP
Kerberos认证。
Kerberos
464
UDP和TCP
Kerberos重新设置密码。
LDAP全局目录
3268
TCP
如果使用i
d_provider=ad选项。NTP
123
UDP
NTP服务。可选配置。
开放端口后,需测试端口。您可以登录云上节点,通过
telnet <ip> <port>命令测试调度器和域控服务的所有端口号。例如:telnet 10.0.XX.XX 88如果返回
Connected,则表示端口已经打开;如果返回Connected refused,则表示端口未打开。说明您也可以使用
wget命令等方法进行测试。 -
-
设置AD域控。
以下步骤以Linux SSSD加入Windows AD域控为例,演示如何在ECS实例中安装AD Client环境,测试加入本地域控。
-
连接ECS实例。
-
安装SSSD软件环境。
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python -
设置AD Server hostname解析。
执行
vi /etc/hosts命令编辑hosts文件,添加AD Server hostname解析。示例如下:-
10.0.XX.XX:本地AD域控服务器的IP地址,请确保可以访问该IP地址。
-
ted-test:本地AD域控服务器的hostname。
-
test.com:本地AD域控的域名后缀。
10.0.XX.XX ted-test.test.com ted-test说明示例中的ted-test.test.com会作为SSSD中AD Server的参数,需要解析其IP地址。
-
-
设置DNS解析。
执行
vi /etc/resolv.conf命令编辑DNS配置文件,添加的内容示例如下:# 补全test.com域名 search test.com # 10.0.XX.XX为本地DNS服务器的IP地址,如果不使用本地DNS服务,可以不设置nameserver nameserver 10.0.XX.XX -
加入域。
通过
realm join命令将ECS实例加入到域中。realm join -v --user=administrator ted-test.test.com命令说明如下:
-
--user:本地AD域控的管理员用户,如administrator,加域过程中需要输入该用户密码。
-
-v:显示加域过程信息。
-
ted-test.test.com:本地AD域控的域名,一般是
<hostname>.<domain>格式。 -
--computer-name:可选参数。如果没有指定该参数,加域时系统会自动通过hostname获取。
说明执行命令后,如果提示
Successfully enrolled machine则表示加域成功,系统会自动生成/etc/sssd/sssd.conf配置文件和/etc/krb5.keytab文件。 -
-
查询加域结果。
通过
realm list命令查询,如果返回信息中包含了本地AD域控的域名后缀(本文示例为test.com),则表示加域成功。 -
修改sssd.conf配置文件。
vi /etc/sssd/sssd.conf修改内容如下:
-
use_fully_qualified_names = False: -
fallback_homedir = /home/%u:设置用户目录和名称。
[sssd] domains = test.com config_file_version = 2 services = nss, pam debug_level = 6 [nss] debug_level = 6 [pam] debug_level = 6 [domain/test.com] ad_server = ted-test.test.com ad_domain = test.com krb5_realm = TEST.COM realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = False fallback_homedir = /home/%u access_provider = ad修改后需重启SSSD服务。
systemctl restart sssd -
-
测试用户账号同步情况。
-
同步用户目录
通过
su命令切换用户,查看用户目录是否与sssd.conf配置文件中fallback_homedir的设置一致。 -
新增用户并测试
在本地AD域控中创建一个新的用户,在线上测试是否可以切换。
-
-
退出域。
由于加域过程会生成与机器绑定的唯一krb5,如果使用已加域的ECS实例制作自定义镜像,后续使用该镜像创建新的ECS实例会出现加域状态不对的情况,因此需要退域后再制作自定义镜像。
realm leave test.com -
把加域操作写入服务器的启动脚本中(例如
/etc/rc.local)。echo "your passwd"|realm join -v --user=administrator TED-TEST.test.com
-
-
设置用户免密。
如果需要用户间免密,例如执行并行任务需求,可以通过以下方式设置:
-
设置互信。
-
选择互信的用户(以testuser为例),进入该用户目录。
su testuser -
生成密钥。
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q执行命令后,会在当前用户目录下生成
ssh/id_rsa.pub, id_rsa密钥文件。 -
设置互信。
cat .ssh/id_rsa.pub >> .ssh/authorized_keys -
设置免提示。
如果需要登录时免提示输入,可在
ssh/config文件中输入以下信息:Host * StrictHostKeyChecking no UserKnownHostsFile=/dev/null
-
-
测试互信。
使用互相的用户登录ECS实例,无需输入用户密码。
-
-
设置DNS。
云上节点需要支持hostname与IP,以及线下服务解析,以下使用阿里云云解析PrivateZone完成。
-
开通PrivateZone。具体操作,请参见开通PrivateZone。
重要关于PrivateZone的计费方式,请参见PrivateZone定价。
-
创建PrivateZone并添加云上节点的hostname和IP地址的解析记录。具体操作,请参见添加Zone及PrivateZone解析记录。
-
关联VPC。具体操作,请参见关联/解关联VPC。
选择混合云集群要使用的VPC进行关联,关联后VPC内所有节点均能使用DNS解析hostname和IP地址。
-
修改
/ect/resolv.conf,添加解析信息。search <PrivateZone名称> -
在本地DNS Server中,增加节点hostname与IP。
-
通过PrivateZone的Resolver解析线下DNS。具体操作,请参见解析器(Resolver)。
-
选择以下一种方式测试DNS设置。
-
执行
dig +search <节点hostname>命令,如果返回域名、节点IP等信息,则表示设置成功。 -
执行
nslookup <节点hostname>命令,如果返回Name和Address,则表示设置成功。
-
-
-
挂载存储。
-
挂载本地文件系统。请自行确认存储挂载点,将挂载命令写入自定义镜像的启动脚本中,例如
/etc/rc.local文件。 -
挂载阿里云NAS文件系统。具体操作,请参见挂载NFS协议文件系统。
-
-
安装调度器。
需要在云上节点上安装对应的调度器。
-
PBS:参见PBS Professional。
-
Slurm:参见Slurm。
-
LSF、OpenLava:制作镜像前无需安装,可在集群创建后通过共享存储安装。
-
-
测试并制作自定义镜像。
-
下载并运行测试脚本。
以beijing地域为例:
export REGION=beijing wget https://e-hpc-$REGION.oss-cn-$REGION-internal.aliyuncs.com/softwares/check-image-for-ehpc.sh sh check-image-for-ehpc.sh说明您也可以自行手动校验,确认调度器状态、域控服务、本地节点hostname等。
-
制作自定义镜像。具体操作,请参见使用实例创建自定义镜像。
-
步骤三:创建混合云集群
-
登录弹性高性能计算控制台。
-
在集群页面的右上角,单击创建混合云集群
-
在硬件配置页,完成节点、存储、网络等配置,然后单击下一步。
需要注意的参数如下:
配置
说明
示例值
可用区
选择集群所属可用区。
华东2 可用区L
使用代理模式
打开代理模式,表示该混合云集群由已有本地集群的管理节点代为管理。
打开
云上代理节点
代理节点可感知作业调度状态,用于弹性伸缩等场景。请根据自身业务负载情况选择合适的规格,建议选择2 vCPU,4 GiB内存及以上规格。
ecs.c7.large
VPC、交换机
选择集群所属的VPC和交换机。请请确保交换机下的IP地址空间足够(可用IP数大于集群节点的数量)。
-
vpc-uf62yvldgikwaf2******
-
vsw-uf60uwjzu2um4ip******
安全组
关闭新建安全组,选择步骤二中已配置好安全组规则的安全组。
sg-test
文件存储位置
选择集群节点要挂载的文件存储。由于步骤二已在自定义镜像中配置了存储挂载信息。此处选择不挂载文件存储。
不挂载文件存储
-
-
在软件配置页,完成镜像、调度节点、账号节点等配置,然后单击下一步。
需要注意的参数如下:
配置
说明
镜像类型
选择自定义镜像。
镜像
选择步骤二制作的自定义镜像。
调度器
选择其他,然后选择custom。
账号系统
选择custom。
是否使用插件
选择使用插件。
插件模式
选择镜像模式。
本地存放位置
填写插件所在路径,保持默认的
/opt/plugin。 -
在基础配置页,输入集群名称并配置登录密码。
重要此处的登录密码必须与已有本地集群的root密码保持一致。
-
在右侧确认配置信息,选中服务条款,然后单击确认。
-
调试插件。
-
连接集群。
-
拷贝插件。
确认
/opt目录下已正常挂载文件存储。然后拷贝插件。mkdir -p /opt/plugin cp -r /usr/local/ehpc/bin/ehs_util/scheduler/plugin/demo.cloud.example/* /opt/plugin/ -
创建管理用户。
等待集群状态正常后,创建一个lsfadmin用户。具体操作,请参见管理用户。
-
安装LSF调度器。
-
在manager节点上安装LSF调度器。
该步骤需要您自行准备LSF安装包并安装LSF调度器。
-
激活环境变量。
cp /opt/lsf/conf/profile.lsf /etc/profile.d/lsf.sh source /opt/lsf/conf/profile.lsf -
下线manager节点。
badmin hclose manager
-
-
拷贝LSF插件。
rm -rf /opt/plugin/* mkdir -p /opt/plugin/tmp cp -r /usr/local/ehpc/bin/ehs_util/scheduler/plugin/lsf.cloud.example/* /opt/plugin/ -
检查文件。
检查以下文件中指定的LSF安装路径是否为当前环境的LSF安装路径。
-
/opt/plugin/setup_scheduler.sh -
/opt/plugin/LSF/10.1.0/pluginschedulercheck.py -
/opt/plugin/LSF/10.1.0/node_del -
/opt/plugin/LSF/10.1.0/node_add -
/opt/plugin/LSF/10.1.0/lsfinit.sh
-
-
查看日志。
执行以下命令:
/usr/local/ehpc/bin/ehpcutil status ehs_node_status --cluster_version2查看
/usr/local/ehpc/log/ehpc-plugin.log日志文件。
-
-
确认已成功创建混合云集群。
-
确认集群状态正常。
-
确认已同步AD用户信息。
-
确认已挂载共享存储。
-
