HPC群集系统中计算资源的管理是重要的一块,若是可以实现计算做业能够在异构操做系统上面协同运做,无疑将是一大亮点,微软HPC pack自2012 upate3开始,支持本地linux做为计算节点,微软官网写到如何添加linux计算节点进入HPC群集的方法,但仅是Ubuntu版本的操做,并且有些关键步骤并无写出,致使若是不是很懂linux的微软系统管理员作起来会遇到各类问题,所以老王经过本文将实际环境中安装涉及到的步骤所有呈现,并讨论linux计算节点为微软HPC群集带来的可能性。html
本文以hpc pack 2016 update1为例node
支持的linux版本:SUSE Linux Enterprise Server 12,Red Hat Enterprise Linux 7.1,CentOS 6.7,Ubuntu Server 14.04 LTS和16.04 LTSpython
环境介绍linux
08dcweb
10.0.0.2 255.0.0.0docker
hpc01-head.oa.comshell
windows server 2016数据中心版json
Enterprise 10.0.0.8 255.0.0.0 dns 10.0.0.2windows
HPC 18.0.0.1 255.0.0.0centos
linuxnode1
Centos6.7
Enterprise 10.0.0.51 255.0.0.0 dns 10.0.0.2
HPC 18.0.0.3 255.0.0.0
老王总结的配置步骤以下
为linux主机修改主机名
在windows dns服务器上添加linux主机DNS记录,确保安装过程当中head主机能够找到linux计算节点
为linux主机导入windows环境根证书,头节点证书公钥,确保证书能够验证,linux主机能够正确打开https://头节点fqdn(此步骤需重启生效)
在linux主机上面添加头节点主机名和FQDN名称进入/etc/resolv.conf,最好使用永久生效方式,确保互相正常解析
经过FileZilla或其它工具,将hpc pack linux aget tar gz,setup.py,头节点带私钥证书拷贝进入linux目录
在linux主机安装hpc pack agent代理须要联网经过yum install下载依赖组件,所以须要让安装过程linux主机能够临时联网下载组件
经过python命令开始安装setup.py,正常状况下centos或redhat安装完成后都有这个命令,若是在终端输入python无效,需自行下载安装
严格按照setup.py脚本指示安装代理
检查安装过程日志,以及nodemanager.json,若是出现主机名,需修改成FQDN,由于主机名称没法经过SSL验证
一切顺利,安装成功后,通过一杯茶的时间,能够在头节点看到被添加进来的linux计算节点,联机便可
1.为linux主机修改主机名,最好安装时指定,不然可使用hostname linuxnode01修改
2.在windows dns服务器上添加linux主机DNS记录
3.导出windows CA根证书与头节点安装证书,不带私钥版本,导出格式选择Base 64编码
导出完成后获得两个文件,一个是头节点安装证书不带私钥的cer,一个是企业根信任证书的cer,若是是自签名证书仅导出安装证书不带私钥的cer便可
直接将文件后缀重命名为pem,便于咱们在linux上面导入证书
经过filezilla工具,拷贝这两张证书,放置到centos或redhat的/etc/pki/ca-trust/source/anchors路径下
在centos或redhat上面进入bin目录下,输入update-ca-trust,更新证书列表,会将咱们放进anchors的证书导入
导入以后重启操做系统,在浏览器栏输入https://hpc01-head.oa.com ,出现如下结果,即表明配置成功
若是出现证书不受信任的提示,则必定要从新配置,检查证书位置,以及是否导入,务必确保地址能够正确打开,由于linux里面对于证书要求很是严格,若是SSL证书不信任,是不容许直接打开SSL网站的
可是咱们在linux上面安装hpc pack代理,最后一步,要经过json里面NamingServceUri写出的 https://hpc01-head.oa.com:443/HpcNaming/api/fabric/resolve/singleton/
路径,去联系头节点注册计算节点,若是这一步信任不作,那么最后一步这个地址是没办法打开的,这样即使linux端安装代理成功了,可是linux计算节点也不会显示在windows 头节点中
4.在linux主机上面添加头节点主机名和FQDN名称进入/etc/resolv.conf,这一步是为了让linux主机可以正常解析头节点主机,其实咱们在linux上面设置了dns后,理论上来讲应该就已经能够解析了,ping头节点主机名和FQDN均可以ping通,可是以前曾经有外国朋友提到过这是一个bug,告知咱们仍需添加/etc/resolv.conf,做为双保险咱们最好仍是加上
添加方法使用linux vi编辑器
终端中输入vi /etc/resolv.conf打开编辑器 ,输入完成后键入ESC,而后键入:w保存文档
此为临时性修改方法,一旦重启后即失效,虽能够确保代理安装过程无误,但若是有了解linux的朋友仍是建议使用永久修改方法
添加完成后尝试在头节点ping linux节点主机名,主机名加域名,在linux节点ping头节点主机名,FQDN名,都能ping通即配置成功
5.经过FileZilla或其它工具,将hpcnodeagent.tar.gz,setup.py,头节点安装时带私钥证书拷贝进入一个linux目录
hpcnodeagent.tar.gz,setup.py能够在hpc pack 头节点安装包解压目录中找到
HPCcom.pfx是咱们安装hpc pack 头节点时申请的证书,导出那张证书,带私钥一块儿导出
6.在linux主机安装hpc pack agent代理须要联网经过yum install下载依赖组件,所以须要让安装过程linux主机能够临时联网下载组件
hpc pack liunx agent安装的时候须要联机下载一些必备组件,实验中老王临时把HPC网络接入了vmwareNAT网络,实际企业环境建议临时让其中一个网络联网,或临时新加入一个网卡
若是安装linux hpc pack代理时不能联网,则会出现如下错误
7.经过python命令开始安装setup.py,正常状况下centos或redhat安装完成后都有这个命令,若是在终端输入python无效,需自行下载安装
进入setup.py所在目录运行python命令
python setup.py -install -connectionstring:'hpc01-head'-certfile:'/opt/HPCcom.pfx' -certpassword:'123.com' -managehosts
若是怕麻烦能够直接输入python setup.py,会弹出setup.py帮助内容,直接能够复制粘贴,再修改成咱们的内容
严格按照setup.py说明安装代理,一个参数和大小写都不能错,最好是直接复制示例内容而后修改
在安装步骤进行到大约这里时
打开/opt/hpcnodemanager/nodemanager.json,检视NamingServceUri一栏,若是是hpc01-head这样的主机名,请必定把它改为hpc01-head.oa.com
由于咱们在windows端绑定的证书名称是fqdn名称,所以咱们导入到linux的证书,也只会匹配fqdn名称,若是这里以主机名访问,则会由于名称与证书不匹配而没法直接打开网页,致使没办法向头节点注册
安装成功后,通过一杯茶的时间,能够在头节点看到被添加进来的linux计算节点
安装过程日志排错
Linux Node
/opt/hpcnodemanager/logs/nodemanager.txt,hpclinuxagent.log
/opt/hpcnodemanager/nodemanager.json
头节点
安装目录 Microsoft HPC Pack 2016 \ Data \ LogFiles \ Scheduler \ HpcScheduler*.bin
使用hpctrace将bin文件转换txt查看
联机linux计算节点,如今linux计算节点已经成功加入到微软HPC群集中,能够正常承载头节点派发给它的做业任务
支持直接在群集管理器对linux节点执行命令
支持使用clusrun提交做业直接在linux计算节点执行
支持经过群集管理器汇总显示linux计算节点数据
支持经过客户端程序,portal,提交参数扫描做业至linux节点
Linux计算节点不支持的场景
linux计算节点仅支持单头节点的部署,若是采用群集头节点,则没法使用linux计算节点
要在Linux节点上运行MPI应用程序,您必须在节点上安装本身的MPI。包含在HPC Pack中的Microsoft MPI(MS-MPI)仅在Windows节点上运行。调度程序必须在Linux节点之间创建互信,HPC Pack 2016 Update 1会自动为用户生成密钥对。
不支持GPU和SOA工做负载 - 目前HPC Pack不支持在Linux节点上调度GPU或运行SOA工做负载
除上述场景外,其它体验均与windows计算节点一致
OK,干货讲完,下面随便聊聊
有些不太了解微软最近几年变化的朋友可能会诧异,怎么可能你微软的群集还能容许linux节点加入呢,事实上微软最近几年正在逐步走向开放的道路上,老王将微软的开放分为两部分,一部分是支持异构化资源,支持和异构资源协同工做,另一部分则是全面拥抱公有云,后面咱们先不表,单说支持异构资源,老王认为这一点算是个明智之举,一个企业不可能只有windows或只有linux,若是能有一套工具集中管理windows、linux这固然是企业最但愿的,而微软不少产品正在作到这一点,System Center,powershell,docker,还有咱们这个系列的hpc pack,老王认为将来在中国,群集管理平台,云管理平台,IT管理平台,都将呈现两个趋势,一个是异构化,经过一个管理工具能够管理多家厂商节点 ;一个是自主化,愈来愈多国产厂商将涌现,国产厂商能够从外国厂商中优秀的功能借鉴。
对于高性能计算群集来讲,总的来讲这种群集相对于高可用群集来讲较为松散,高可用群集对于每一个群集的配置有严格的配置要求,最好要作到的彻底一致,高性能群集则没必要,由于它所须要的是每一个节点可以提供计算能力,各个节点能够协同并行工做,至于你节点是什么System,高性能群集理想状况下是不须要关注的。
微软的高性能群集支持Linux计算节点后带来的场景思考
1.企业管理员不熟悉linux,只熟悉windows,想搭建一套HPC群集,微软自家下降学习成本
2.企业已有linux,可是配置linux hpc群集过于复杂,管理员能够挑选微软hpc pack做为HPC头节点,计算节点所有采用linux节点
3.能够经过在头节点配置存储复制或S2D,对象存储等技术,将一些微软上面特有的技术,带给linux计算节点
4.企业有linux,也有windows,但愿同时利用,能够搭建一套微软高性能群集,同时添加linux计算节点,windows计算节点
5.微软hpc pack目前看来不单独收费,只要有正规的windows license或azure订阅便可安装使用
6.能够创建windows节点做业模板,linux节点做业模板,若是咱们没法作到并行程序跨平台,就可让用户写的程序windows的就只能提交到windows节点,linux的就只提交到linux计算节点
7.利用Docker,HPC Pack如今已与Docker集成。用户做业能够提交请求Docker镜像的做业,而且HPC Job Scheduler将在Docker中启动该任务。NVIDIA Docker GPU做业和跨Docker MPI做业均受支持
HPC群集能够支持Linux计算节点以后,下一步主要须要思考的就是如何能让做业跨windows节点和linux节点执行,选用什么样的并行接口程序来实现跨平台的并行,在异构系统都具有HPC环境的状况下,如何可以实现一个做业同时提交给windows和linux节点,都能输出理想的结果
微软高性能群集,Linux,与Azure
老王认为使用公有云无非是须要考虑两个平衡,第一个平衡是我有多大程度上能够信赖公有云,第二个平衡是个人数据有多大程度上不能够公开给公有云,结合这两个平衡考虑,选择出一个能够接受的负载,放到公有云运行,下面是老王整理的一些HPC群集和Azure融合的场景,感兴趣的朋友能够结合自身的环境去思考选用
本地没有服务器环境,在Azure市场申请搭建HPC群集,用于完成计算
构建混合HPC环境,本地搭建HPC头节点,计算节点,Azure也搭建计算节点,当本地计算环境达到阀值,启动Azure计算节点辅助完成计算
本地没有Windows受权,直接申请Azure虚拟机,自带系统受权和HPC受权
Azure上面添加linux计算机节点有脚本帮助咱们自动完成
须要完成重大运算,本地资源不足,临时开启Azure虚拟机,运算完成删除关闭虚拟机
相信一些朋友看事后会对微软hpc pack产生兴趣,这里老王给出一个个人学习路线建议
了解什么是高性能群集
了解什么是高性能群集做业管理,做业调度,资源管理
这两点能够在百度文库,国内博客上面得到
3.查看微软官网,了解微软hpc pack概念,架构,对于做业调度,资源管理等概念如何实现
4.了解HPC pack 做业申请过程 ,资源如何管理
5.了解并行计算,并行计算方式,并行计算程序,这些如何在微软HPC群集上面工做
6.实战添加windows计算节点,添加linux计算节点,配置门户
7.实战裸金属部署windows节点
8.实战提交做业,观察HPC做业调度过程
9.熟悉HPC pack群集管理器,资源管理功能,报表功能
10.了解hpc pack在azure上面场景,参考https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/ruby-rails-web-app
HPC pack支持整合科学计算环境:NAMD,OpenFOAM,STAR-CCM+环境,InterMPI,Matlab
Matlab整合介绍
https://ww2.mathworks.cn/help/mdce/configure-parallel-computing-products-for-hpc-server.html
NAMD,OpenFOAM,STAR-CCM+环境,InterMPI整合介绍
https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/hpcpack-cluster-starccm