本文介绍如何使用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用户信息。
确认已挂载共享存储。