基于DRBL和CentOS6.3搭建無盤超算集群 (Diskless Cluster) - manuscript
文章地址:http://my.oschina.net/emptytimespace/blog/105468
建議閱讀官方安裝文檔:http://drbl.nchc.org.tw/one4all/desktop/#client_filesystem
實驗室現(xiàn)有硬件計算服務(wù)器四個節(jié)點,配置為:每節(jié)點16CPU;一臺內(nèi)存16G,其余三臺內(nèi)存24G;主節(jié)點2T*2的磁盤陣列,其余每節(jié)點一個20G硬盤,另有兩個512G硬盤,其中一個舊的做系統(tǒng)盤,另一個新的準備作為備份;節(jié)點間使用普通的100M網(wǎng)絡(luò)交換機互聯(lián)。
以下是我們嘗試配置集群(Cluster)的過程,目前運行良好,并使用Apache + Ganglia提供監(jiān)控并以網(wǎng)頁形式實時顯示。(本文檔待持續(xù)維護中)
一、首先安裝centos6.3系統(tǒng):
1, 光盤或網(wǎng)絡(luò)PXE重新安裝系統(tǒng)
可將磁盤陣列(這里是/dev/md126)的part5中的home目錄(可能是原來的home目錄)掛載到新系統(tǒng)/home目錄:
09 | UUID=ea636e37-69c9-4603-9250-76193bca28c7 / ext4 defaults 1 1 |
10 | tmpfs /dev/shm tmpfs defaults 0 0 |
11 | devpts /dev/pts devpts gid=5,mode=620 0 0 |
12 | sysfs /sys sysfs defaults 0 0 |
13 | proc /proc proc defaults 0 0 |
16 | /dev/md126p5 /media/raid2tp5 ext4 defaults 0 0 |
17 | /dev/md126p1 /media/raid2tp1 ext4 defaults 0 0 |
18 | /media/raid2tp5/home /home none defaults,bind 0 0 |
2, 注意DRBL安裝說明中提到,建議禁用Network Manage 的圖形界面配置軟件
在我們的環(huán)境下的操作中確實需要禁用,否則出現(xiàn)兼容問題。
另外,請設(shè)定好所有網(wǎng)路卡的IP位址,我們後面用的是eth0對外,其餘的eth1以後的對內(nèi)部使用(請務(wù)必將這些內(nèi)部使用的網(wǎng)路卡IP都設(shè)成192.168.x.x, 172.16-31.x.x或是10.x.x.x等的private IP,例如eth1:192.168.101.254, eth2:192.168.102.254, eth3:192.168.103.254...);請注意一個原則,private IP (192.168.x.x)將會被拿來做DRBL環(huán)境的連結(jié)用。安裝時也建議關(guān)閉防火牆,等DRBL安裝完之後再來設(shè)定防火牆。另外,如果你的GNU/Linux安裝的時候自動幫你裝了NetworkManager,且被自動啟動的話,建議關(guān)閉或者移除,因為當(dāng)作伺服器的機器並不適合使用NetworkManager。舉例而言,F(xiàn)edora的話,可以這樣處理: sudo chkconfig --del NetworkManager; sudo chkconfig --del NetworkManagerDispatcher,然後啟動chkconfig network on。Ubuntu或者Debian之類的套件,先手動安裝圖形的網(wǎng)路設(shè)定程式: "sudo apt-get install gnome-network-admin",然後直接移除network manager: "sudo apt-get --purge remove network-manager",重新開機後,執(zhí)行"network-admin"(或者在Gnome桌面選擇"系統(tǒng)"-> "管理" -> "網(wǎng)路")就可以設(shè)定固接網(wǎng)路。
3, 設(shè)置好內(nèi)網(wǎng)和外網(wǎng)的網(wǎng)卡
1) 內(nèi)網(wǎng)設(shè)置
編輯/etc/sysconfig/network-scripts/ifcfg-eth1為:
13 | LAST_CONNECT=1359289802 |
2) 外網(wǎng)設(shè)置
編輯/etc/sysconfig/network-scripts/ifcfg-eth0為:
15 | LAST_CONNECT=1359289802 |
3) 重啟網(wǎng)絡(luò)鏈接
4) 檢查網(wǎng)路
3 | Destination Gateway Genmask Flags Metric Ref Use Iface |
4 | 210.45.*.* * 255.255.255.0 U 0 0 0 eth1 |
5 | 10.1.1.0 * 255.255.255.0 U 0 0 0 eth0 |
6 | link- local * 255.255.0.0 U 1002 0 0 eth0 |
7 | link- local * 255.255.0.0 U 1003 0 0 eth1 |
8 | default 210.45.72.254 0.0.0.0 UG 0 0 0 eth1 |
不是到這里link-local怎么出現(xiàn)的。
二、DRBL安裝、配置和使用:
1, 安裝drbl
如果您不是系統(tǒng)管理者(root),執(zhí)行指令"su root" (然後輸入root的密碼),如果你的套件沒有設(shè)定root密碼,可以用"sudo su " (然後該使用者的密碼)以便切換成root
請先安裝DRBL的金鑰(ID: 1024D/D7E8DF3A, Key fingerprint = F532 A131 65AF 2168 1634 DB1B 4000 9511 D7E8 DF3A),這樣可以進一步確認您安裝的程式是本計畫所發(fā)行的程式。有兩個方式可以來安裝。 方法1: "rm -f GPG-KEY-DRBL; wget http://drbl.nchc.org.tw/GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL" 。 方法2: 由key server下載,KeyID是D7E8DF3A,可以這樣執(zhí)行"gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A",然後再執(zhí)行"gpg -a --export D7E8DF3A > GPG-KEY-DRBL; rpm --import GPG-KEY-DRBL". 如果你要查詢系統(tǒng)是否已經(jīng)有匯入數(shù)位簽章的話,可以這樣查詢: rpm -qa gpg-pubkey*。
下載DRBL的RPM檔(檔名如drbl-1.9.6-35.i386.rpm):穩(wěn)定版,測試中的版本,或是不穩(wěn)定的版本。 執(zhí)行"rpm -Uvh drbl-XXX.i386.rpm"或者"yum install drbl-XXX.i386.rpm" (如果你的套件有yum的話)來安裝drbl程式,drbl-XXX.i386.rpm就是您剛剛下載的檔案,如果您是下載穩(wěn)定版的話,就執(zhí)行"rpm -Uvh drbl-current.i386.rpm"或者"yum install drbl-current.i386.rpm"。
2,配置drbl
1) 可以查看修改/opt/drbl/conf下面的文件:client-ip-hostname.example
寫一個自己希望的分配給客戶端的IP和hostname映射關(guān)系,如:
2) 也可以修改自定義目錄/opt/drbl/conf中的其他example文件.
3) 運行配置命令
特別注意1: 在運行中會提示可以one by one啟動客戶端(如果要自動探測客戶端網(wǎng)卡MAC,需要每個客戶端都設(shè)置成PXE啟動,且為第一順序),收集其MAC地址。作為替代方法,也可以手動新建一個文本文件,一般在/etc/drbl/macadr-eth0.txt,在其中按行添加每個內(nèi)網(wǎng)客戶端網(wǎng)卡的MAC地址,之后配置會要求輸入文件的位置,這樣不再需要 start the PXE clients one by one 了。
特別注意2: 最好設(shè)置成每個MAC分配固定靜態(tài)的IP,參考:新增clinet 電腦,我有指定MAC address,該如何操作比較正確 ?。
特別注意3:最重要的要查看目錄/tftpboot/nodes下是否有對應(yīng)每個客戶端IP的目錄文件,如有,客戶端一般就可以啟動起來到了,前面在兩種Full模式下適用,在SSI mode下不一定適用。注意,客戶端需要使用PXE啟動,請對應(yīng)設(shè)置BIOS,且最好BIOS設(shè)置成可以通過PCI-LAN設(shè)備喚醒啟動。
3, 啟動或重啟drbl
# drbl-all-service start
或者
# drbl-all-service restart
可能會出現(xiàn)“Failed to start service ypbind”的錯誤,可以如此正確重啟:
# service ypserv restart
4, 重啟服務(wù)器和節(jié)點
一般先使計算節(jié)點關(guān)機,再關(guān)機主節(jié)點。開機時,首先主節(jié)點開機,主節(jié)點開機進入登陸界面后,最好再等1分鐘(自我感覺),并且保證drbl的PXE服務(wù)啟動了,如果不確定可以進入主節(jié)點使用drbl-all-service來重新開啟。然后再啟動計算節(jié)點,不需考慮順序。這里開關(guān)機就是簡單在各系統(tǒng)執(zhí)行 shutdown 或 halt 命令或是直接按電源或reset鍵(不能軟件開關(guān)機時)。各節(jié)點正常并drbl-doit命令可用時(可以無密碼ssh連接各個節(jié)點),可以使用drbl-doit shutdown 或 halt 來統(tǒng)一關(guān)機。
5, DRBL使用和管理
1)增加新的節(jié)點機器
方法1: 可以重新配置安裝子節(jié)點
最后會提示是否保留原有的設(shè)置,可以選擇不保留,于是每個節(jié)點重新生成配置文檔。 方法2: 如果前面安裝的節(jié)點使用SSI mode,那么不需重新drbl push
用戶端電腦數(shù)目有所增加,只要改/etc/dhcp/dhcpd.conf之後,執(zhí)行 "/opt/drbl/sbin/dcs -> others -> gen_3N_conf"或是"/opt/drbl/sbin/drbl-3n-conf generate"即可以馬上增加節(jié)點的數(shù)目
詳細參考:網(wǎng)頁:DRBL SSI mode的使用與修改 的最后幾行說明。
如何知道新節(jié)點是否可以成功PXE啟動了?可以查看/tftpboot/nodes目錄是否有所希望添加的機器對應(yīng)的IP地址所命名的目錄,如果存在節(jié)點就應(yīng)該可以啟動起來。
2)增加新用戶或配置新節(jié)點的用戶和密碼
新添加的節(jié)點可以啟動后不一定具有主節(jié)點的所有用戶信息。解決辦法預(yù)想是,可以把主節(jié)點下的/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow拷貝到新客戶端的相應(yīng)目錄(即從/etc拷貝到/tftpboot/nodes/新節(jié)點IP),批量拷貝可使用drbl-cp-host,更多賬號管理的介紹可見鳥哥的網(wǎng)頁:http://linux.vbird.org/linux_basic/0410accountmanager/0410accountmanager-fc4.php
【注】這種方法有些生硬,擔(dān)心有后遺癥,因為時間有限,暫還沒考慮好別的辦法。
增加新節(jié)點時已有的用戶會自動同步到新節(jié)點,或者手動執(zhí)行“make -C /var/yp”來更新“YP/NIS”。
對于服務(wù)器和客戶端增加新用戶
方法一
增加使用drbl自帶的drbl-useradd和drbl-userdel命令,此方法無法人為指定用戶的id號碼。
方法二
使用傳統(tǒng)方法adduser, deluser來首先在服務(wù)器中增加用戶后通過執(zhí)行“make -C /var/yp”來更新“YP/NIS”。還是建議使用方法一
3) DRBL進階管理
drbl-doit "echo 'source /opt/intel/mkl/bin/mklvars.sh intel64' >>/etc/bashrc":對所有客戶端機器操作:
更過管理使用方法可點此處查看
【其他參考】
鳥哥的drbl記錄 DRBL操作指南
三、Cluster系統(tǒng)管理和使用
1、系統(tǒng)管理之消息通知
1)用戶登錄通知
修改文件/etc/motd,加入你希望用戶登錄后看到的內(nèi)容。
2)推送給用戶消息
使用以上命令可以給當(dāng)前系統(tǒng)的用戶發(fā)送即時消息,消息不會打斷用戶的工作,會顯示在用戶的當(dāng)前標準輸出。還可以使用write all 給所有用戶發(fā)送消息。
2、系統(tǒng)管理之SSH
1) SSH 之 X11 Forwarding
修改服務(wù)器文件/etc/ssh/sshd_config,令 AllowTcpForwarding yes, AllowAgentForwarding yes和X11Forwarding yes
然后修改自己機器(如果是linux)的/etc/ssh/ssh_config,令ForwardAgent yes, ForwardX11 yes。
考錄到也需要從服務(wù)器登錄到其他節(jié)點,所以也需要將服務(wù)器中的ssh_config文件如上修改。前者(Tcp)或許不需要。
2) SSH 之 節(jié)點間無密碼互訪。
對root用戶:
之后需要使用命令“drbl-cp-host ~/.ssh/* /root/.ssh/”將認證文件拷貝到子節(jié)點。
對其他普通用戶,因為home目錄共享,只需要做第一步即可。
如果互訪仍有問題,可以參考后面一節(jié):“SSH 之 HostKyeChecking”
3) SSH 之 HostKyeChecking
對于一些奇怪的問題,比如從主節(jié)點無密碼登錄到子節(jié)點可行,但是反過來不行,或是總需要回答yes。一些奇怪問題可能與節(jié)點共享一個系統(tǒng)和用戶目錄有關(guān),也可能與DRBL相關(guān)。在嘗試禁用檢查之后,各節(jié)點的互訪沒有障礙了。方法:添加如下到ssh_config
# UserKnownHostsFile=/dev/null
StrictHostKeyChecking no
如果不想保存~/.ssh/known_hosts,可以啟用上面第一行,如此每登錄都要生成known_hosts,只不過都保存到 /dev/null 這個文件黑洞中去了。
【注意】DRBL重裝子節(jié)點后,原known_hosts就無效了,保留原文件可能造成無法從主節(jié)點訪問字節(jié)點。
Test:$$(E=mc^2)$$: