微軟HPC群集添加Linux計算節點
本文以hpc pack 2016 update1為例
支持的linux本如下SUSE Linux Enterprise Server 12,Red Hat Enterprise Linux 7.1,CentOS 6.7,Ubuntu Server 14.04 LTS和16.04 LTS
環境介紹
08dc
10.0.0.2 255.0.0.0
hpc01-head.oa.com
windows server 2016數據中心版
Enterprise 10.0.0.8 255.0.0.0 dns 10.0.0.2
HPC 18.0.0.1 255.0.0.0
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 作業申請過程 ,資源如何管理
這部分內容可以參考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/hpc-server-2012-R2-and-2012/jj899615(v%3dws.11)
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
https://blogs.technet.microsoft.com/hpc_and_azure_observations_and_hints/2011/12/12/running-matlab-in-parallel-on-a-windows-cluster-using-compiled-matlab-code-and-the-matlab-compiler-runtime-mcr/
NAMD,OpenFOAM,STAR-CCM+環境,InterMPI整合介紹
https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/hpcpack-cluster-starccm
微軟HPC群集添加Linux計算節點