一 建立SSH連接(無密碼登陸)
1 SSH連接的簡單介紹
SSH 為 Secure Shell 的縮寫,中文翻譯為安全外殼協議,建立在應用層,是一種遠程連接安全協議。傳統的telnet,pop,ftp都能夠實現類似的功能,但是安全性上來說不足,因為他們都是明文傳輸,而SSH是密文傳輸,能夠有效防止DNS欺騙,網絡信息的攔截等等。
2 為什么要建立SSH連接
因為我建立集群的目的就是為了高性能的計算,這里我用了MPI,采用的是計算機之間的相互通信,所以必然涉及到計算機的訪問登陸問題,所以我們建立集群計算機之間的SSH連接讓他們能夠無密碼登陸,保證通信的快速性。
3具體的建立SSH連接步驟(都在虛擬機中操作)
1配置網卡
在ubuntu上可以通過圖形界面進行設置,也可以通過指令來修改,大致模式如下:
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
sudo /etc/init.d/networking restart//重啟服務
就是簡單的修改配置文件來修改參數,最后一定要重啟網絡服務。按照此方式多配置幾台虛擬機,然后測試通信。你可以通過自動獲取的方式獲取物理機在虛擬區域的IP,然后用作其他虛擬機的默認網關。接下來就是修改主機名
sudo vi /etc/hostname //修改本機的主機名
sudo vi /etc/hosts //地址解析,其實就是集群中所有主機的主機名與IP地址的對應
例如 node0 192.168.1.100
node1 192.168.1.101
host中的內容模式(主機名:端口 IP)SSH的默認端口是22
2創建互信的SSH連接
1)安裝SSH,指令如下
sudo apt-get install ssh
2)首先理解下SSH的無密碼連接機制,其實就是利用公鑰和密鑰來實現互相的無密碼訪問,所以接下來就是對公鑰密鑰的配置。
第一步 ssh-keygen -t rsa -P ' '//首先生成公鑰和密鑰對,這里的' '表示密碼為空,這樣就在你的個人用戶目錄下生成了.SSH文件夾,里面有id_rsa和id_rsa.pub,分別是公鑰和密鑰。
第二步 接下來就是關鍵的一步,就是公鑰的傳送。公鑰需要給另一個能讓你訪問的機器下,因為公鑰能夠識別用戶是誰。復制方法采用的是scp復制,這是一種遠程復制方法需要密碼的輔助。
scp .ssh/id_rsa.pub 目標主機名:/home/chenlb/id_rsa.pub解釋下為什么是機器名,因為你在hosts文件中已經定義了目標主機名與ip的對應關系,所以可以運用主機名,這是遠程傳輸,自然開始需要密碼。
第三步 目標主機把從本機復制的id_rsa.pub(公鑰)添加到.ssh/authorzied_keys文件里(所有的目標機器都必須裝SSH協議),指令如下所示:cat id_rsa.pub >> .ssh/authorized_keys(這是目標機上的)。然后需要設置authorized_keys的權限,因為這個驗證文件也需要給訪問的機器權限才能完成之后的驗證:chmod 600 .ssh/authorized_keys。
這樣就完成對目標主機的無密碼訪問,但是互相訪問就需要在調換一下位置再設置一下,步驟重復。
再次我說下對稱加密解密的使用原理以及機制(RSA),我們就簡單的用A主機和B主機來描述。A主機將公鑰給了B主機,這就意味着A主機用自己的密鑰訪問B主機時,B主機可以用A主機的公鑰來解密,從而知道是A訪問自己,所以允許A訪問。
二 創建NFS(網絡文件系統)
由於mpi需要在每個機器中都安裝,如果每個機器都裝一次那樣就太麻煩了,所以我們創建一個共享的網絡文件系統,這樣就可以修改一次全局修改,非常方便的使用。
1 安裝NFS sudo apt-get install nfs-kernel-server nfs-common
2 在用戶主目錄下創建共享文件夾 mkdir sharedarea
3 修改sharedarea的所屬權限,剛開始屬於root,所以需要改為用戶的
sudo chown 用戶名:用戶名 / home/用戶名/sharedarea
4 設置下能訪問的網段,即編輯/etc/exports文件。
sudo vi /etc/exports
添加/home/abc/cluster *(rw,sync,no_root_squash)
5 重啟服務
sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
6 其他機器掛載
首先其他機器得先安裝NFS,和第一步一樣,然后創建相同的文件夾,掛載命令如下:sudo mount -t nfs 第一個的主機名:/home/用戶名/sharedarea sharedarea
切記,如果系統重啟后則需要重新掛載否則產生變化就無法同步了,切記切記
三 安裝MPI
1 首先來一個 sudo apt-get install mpich,不管啥都有了。然后去http://www.mpich.org/download下載一個穩定的linux版本的mpich,解壓到共享文件夾。(tar xfz mpich-3.2.tar.gz 生成mpich-3.2文件夾)
2 由於默認安裝在/usr/local/bin,所以需要改變一下安裝目錄
1)./configure --prefix=/home/love/cluster/mpich3.1 --disable-f77 --disable-fc
2)make
3)make install
3修改環境變量
這里肯定修改的是用戶的環境變量
sudo vi .bashrc
•在.bashrc
文件的末尾添加:
PATH=/home/用戶名/sharedarea/mpich3.2/bin:$PATH
export PATH
然后source .bashrc 重新刷新環境變量
這樣MPI就在集群上完美安裝。
四 編譯運行
到了最后一步了,其實也是檢驗你是否成功的一步了,這里我們用到兩個命令,mpicc和mpiexec,其實很簡單
mpicc -g xx.c -o xx
mpiexec -np x(這是線程數) -f y(這是和hosts類似的文件,里面放着集群的文件名,注意所有的文件地址) ./目標文件名
接下來就大功告成了,享受一下集群的樂趣吧!