openmpi+NFS+NIS搭建分散式計算集群

来源:http://www.cnblogs.com/xiejq/archive/2016/06/16/5591629.html
-Advertisement-
Play Games

1. 配置防火牆 正確配置防火牆的過濾規則,否則會造成NFS文件系統的掛載失敗,NIS賬戶認證的失敗,mpirun遠程任務實例投放的失敗。一般情況下,計算集群是在內部區域網中使用,所以可以不用太顧及安全問題,直接關閉掉所有節點伺服器的防火牆即可。 相關命令如下: 2. 配置集群區域網ip與主機名的映 ...


 

1.        配置防火牆

正確配置防火牆的過濾規則,否則會造成NFS文件系統的掛載失敗,NIS賬戶認證的失敗,mpirun遠程任務實例投放的失敗。一般情況下,計算集群是在內部區域網中使用,所以可以不用太顧及安全問題,直接關閉掉所有節點伺服器的防火牆即可。

相關命令如下:

service iptables stop        #或者
/etc/init.d/iptables stop    #以上這兩種方法,即時生效但重啟後複原
                                    #或者
chkconfig iptables on        #重啟後永久生效

  

2.        配置集群區域網ip與主機名的映射

為了方便,可能需要將節點主機名改為node1、node2、node3……的統一形式,修改主機名的命令是:

hostname node1                     #將主機名修改成了node1,但機器重啟後會失效

永久修改的方法是修改/etc/sysconfig/network文件中的hostname一行:

HOSTNAME=node1

修改每個節點中的文件/etc/hosts,將集群中各個節點主機名與ip的對應關係寫進去。

    

3.        配置NFS共用文件系統

分散式並行計算一般要求各個節點伺服器的應用軟體環境和工作目錄環境要保持一致,如果在每個節點上都要配置一遍,會特別麻煩。所以採用NFS共用文件系統,將應用軟體和工作目錄都部署在公共目錄,就能能很好的解決這一困難。只需部署一次,所有的節點伺服器就都能訪問。

首先在所有的節點安裝nfs套件,採用命令:

yum install nfs

然後,選在一臺硬碟存儲較大的節點伺服器,例如node0,將其作為NFS server進行配置。具體做法是,先配置/etc/exports文件,在這個文件中寫入:

/tmp        node*(rw,no_root_squash)                  #將允許主機名為node*(*代表通配符)的伺服器以rw形式掛載tmp目錄。

然後在NFS server節點上執行如下命令:

exportfs  –ar    #每次修改/etc/exports文件後都要執行一下這個命令。
service nfs start   #啟動nfs服務

其它的節點伺服器,作為NFS client進行配置,需要執行如下命令:

service nfs start    #啟動nfs服務
mount –t nfs node0:/share  /share           #強nfs server(即node0)的/share目錄掛載到本地的/share目錄

通過修改/etc/fstab文件可以實現開機自動掛載,在此文件中填入一行:

192.168.44.130:/share   /share                  nfs     defaults        0 0

其它一下相關命令:

showmount -e 192.168.0.30         #在客戶端使用此命令檢查NFS SERVER上export出來的目錄
showmount –a                                   #一般在NFS SERVER上用,顯示已經mount上本機nfs目錄的client機器
chkconfig  --level 35 nfs on     #配置開機自動啟動nfs服務

  

4.        配置NIS服務

分散式並行計算要求各個節點伺服器上的賬戶信息環境要一直,如果在每台節點伺服器上都配置一遍用戶信息,工作量太大且重覆。這個問題可以通過配置一臺NIS伺服器來解決,所有主機都可以到NIS伺服器上查找用戶信息進行賬戶認證。NIS(Network information service)又叫YP(Yellow Pages,電話簿的意思)。

首先在所有的計算節點上安裝NIS相關套件,命令如下:

yum install yp*
yum install xinetd

在所有的節點上修改/etc/xinetd.d/time,使disable=no,然後執行如下命令:

service xinetd restart                     #啟動xinetd服務
nisdomainname cluster                  #設置NIS域的名字,在這設成了cluster

在所有的節點上修改/etc/sysconfig/network文件,加入一行:

NISDOMAIN=cluster

選擇一臺節點伺服器,例如node0,作為NIS server進行配置,配置/etc/ypserv.conf文件,添加三行:

127.0.0.0/255.255.255.0    : *       : *                : none
192.168.0.0/255.255.255.0  : *       : *                : none
*                          : *       : *                : deny

 其中192.168.0.0代表網段,要根據具體網路配置填寫。

 然後創建賬戶資料庫,執行命令:

/usr/lib64/yp/ypinit –m     #添加用戶時,只需要在NIS服務端增加,然後執行/usr/lib64/yp/ypinit –m更新一下資料庫即可

創建資料庫,之後要啟動服務ypserv和yppasswdd:

service ypserv start
service yppasswdd start
chkconfig  --level 35 ypserv on                    #開機啟動服務
chkconfig  --level 35 yppasswdd on              #開機啟動服務

其他計算節點伺服器作為NIS client進行配置,首先配置/etc/yp.conf 添加兩行:

nisdomain cluster  #設置NIS域的名字,在這設成了cluster
ypserver node0     #設置NIS server的主機名,在這設成了node0

配置/etc/passwd 添加1行:

+::::::                 #註意冒號的數量

配置/etc/nsswitch.conf,添加如下4行:

passwd:     files nis nisplus 
shadow:     files nis nisplus 
group:      files nis nisplus 
hosts:      files nis dns

最後執行命令:

service ypbind restart          #啟動服務
chkconfig  --level 35 ypbind on  #開機自動啟動ypbind的方法

  

5.        配置ssh無密碼登陸

在家目錄沒有配置在共用文件系統中的情況下,若要主機B無密碼登陸主機A,則要配置主機A,在主機A用戶家目錄中建立.ssh目錄,cd進去之後上執行如下:

ssh-keygen -t rsa                                        #然後一直回車鍵,按照預設將生成的密鑰保存在.ssh/id_rsa文件中。
cp id_rsa.pub authorized_keys            #這步完成後,正常情況下就可以無密碼登錄本機了。
scp authorized_keys test@B:/homename/.ssh  #把剛剛產生的authorized_keys文件拷一份到主機B上.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 authorized_keys   進入主機B的.ssh目錄,改變authorized_keys文件的許可許可權

 按照以上步驟,只能讓B無密碼訪問A, 所以為了讓集群內每個節點都能相互無密碼訪問,就需要把沒兩台節點配對相互按照上面步驟配置,工作量特別大。

 如果家目錄配置在了共用文件系統中,則要簡單的多,執行執行以下命令,即可讓集群內每個節點都能相互無密碼訪問

ssh-keygen -t rsa                                       
cp id_rsa.pub authorized_keys           
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

另外在/etc/ssh/ssh_config文件中添加StrictHostKeyChecking no,這樣在第一次ssh登陸時,系統不會再提示是否將主機加入到known hosts中。

 

6.        安裝並配置openmpi

安裝openmpi的一版配置如下,如果使用intel的編譯器,需要先安裝intel編譯器,然後執行命令:

./configure CC=icc CXX=icc FC=ifort  --prefix=/opt/openmpi/ --enable-static --enable-mpi-cxx   ps:一定要新建一個目錄作為安裝目錄

 如果使用系統自帶預設編譯器,則執行如下命令:

./configure --prefix=/opt/openmpi/ --enable-static --enable-mpi-cxx   ps:一定要新建一個目錄作為安裝目錄

最後編譯openmpi,命令如下:

make all install

   

7.        安裝配置負載均衡系統(可選)

如果想增加作業調度功能,則還需要安裝lsf等軟體,這些軟體的配置較為負載,而且一般小型集群沒有必要使用,所以這裡不再贅述。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文由作者林宸詳解互聯網思維,林宸是美國密歇根州立大學商學院助理教授,Emory大學市場營銷系博士,中歐國際工商學院訪問教授。本文有刪節,原文參見《哈佛商業評論》2014年9月《“互聯網思維”落地6方略》。 互聯網演變經歷了三個過程,即從Web1.0的門戶,到Web 2.0的搜索,再到今天Web3. ...
  • 一、環境準備 主機IP 主機名 操作系統版本 PXC 192.168.244.146 node1 CentOS7.1 Percona-XtraDB-Cluster-56-5.6.30 192.168.244.147 node2 CentOS7.1 Percona-XtraDB-Cluster-56- ...
  • 主鍵、超鍵、候選鍵、外鍵定義;三種約束;ER圖舉例;資料庫相關鏈接 ...
  • ...
  • 簡介 在上篇文章中我們談到了查詢優化器和執行計劃緩存的關係,以及其二者之間的衝突。本篇文章中,我們會主要闡述執行計劃緩存常見的問題以及一些解決辦法。 將執行緩存考慮在內時的流程 上篇文章中提到了查詢優化器解析語句的過程,當將計劃緩存考慮在內時,首先需要查看計劃緩存中是否已經有語句的緩存,如果沒有,才 ...
  • 第13章 可擴展性設計之 MySQL Replication 前言: MySQL Replication 是 MySQL 非常有特色的一個功能,他能夠將一個 MySQL Server 的 Instance 中的數據完整的複製到另外一個 MySQL Server 的 Instance 中。雖然複製過程 ...
  • 安裝SQL Server2016正式版 今天終於有時間安裝SQL Server2016正式版,下載那個安裝包都用了一個星期 安裝包可以從這裡下載: http://www.itellyou.cn/ https://msdn.microsoft.com/zh-cn/subscriptions/downl ...
  • 環境:SQL Server2012 SP3 企業版,開發伺服器,並沒有什麼負載,全庫索引統一Rebuild過 經反覆執行驗證過, 不算太複雜的SQL(存儲過程中代入參數摳出來的SQL代碼) 預設情況下,執行完成需要3秒鐘 非要用紅色圈中子查詢中的表(是一個相關子查詢)去驅動其他表, 添加OPTION ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...