1.什麼是高可用叢集
高可用叢集是指以減少服務中斷時間為目的的伺服器叢集技術。它通過保護使用者的業務程式對外不間斷提供的服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度。高可用叢集的應用系統有多樣化發展趨勢,用途也越來越多樣化,同時帶來了配置及可操作性方面的複雜性,是以選擇好的高可用軟體至關重要。
2.RHCS套件
紅帽叢集套件(Red Hat Cluster Suite),一個提供高可用性、高可靠性、負載均衡、存儲共享經濟的叢集方案。其中這兩種産品(高可用性附加元件和負載均衡附加元件)都基于開源社群項目,紅帽叢集開發人員為社群提供上遊代碼。 計算叢集不是叢集套件的一部分,而是由Red Hat MRG提供。
RHCS是一個功能完備的叢集應用解決方案,它從應用的前端通路到後端的資料存儲都提供了一個行之有效的叢集架構實作,通過RHCS提供的這種解決方案,不但能保證前端應用持久、穩定的提供服務,同時也保證了後端資料存儲的安全。 [1] 常應用于web應用、資料庫應用等,提供安全可靠的運作環境。
3.基于RHCS套件實作高可用叢集實驗
1.本實驗需要用到redhat6系統,是以需要封裝企業6的虛拟機。
與企業7不同的是,企業6的啟動方式是 /etc/init.d/...
而且封裝虛拟機時要删掉 /etc/udev/rules/70-persistent-net.rules
另外,設定開機自啟或不自啟的方式是 chkconfig XXX on/off
配置好網絡,關閉防火牆,配置好yum源:
2.用封裝好的虛拟機作快照,用來完成本實驗:
完成之後,我現在一共有四台機器:
用戶端:(172.25.60.250)
服務端server1 :(172.25.60.1)
服務端server2 :(172.25.60.2)
記憶體:(172.25.60.3)
3.首先,在server1安裝 ricci 和 luci 軟體:
配置好yum源:
發送給server2,待會要用
安裝:
設定密碼,開機自啟:
4.在server2上安裝 ricci 設定密碼,開機自啟動。
5.在用戶端:浏覽器輸入https://172.25.60.1:8084
1.建立叢集
等一會
成功之後會重新啟動服務端
檢視:
6.現在第一步工作已經完成,但是有一個問題,就是叢集裡的兩台伺服器會搶着幹活,這是我們不願意看到的,我們的目的是為了在一台伺服器挂掉的時候能又另一台伺服器頂上。是以要讓我們預設的那台伺服器(server1)工作時備用伺服器 (server2) 休息,但是它會檢測我們的預設伺服器(server1)的工作狀态,一旦server1停止工作,server2開始工作。
這時候我們可以用一個軟體(fence)模仿現實中的開關,這個開關的作用就是當server1工作不正常時,讓server2先把server1斷電,然後server2才能接過server1的工作。
在另一台機器安裝 fence 軟體(這裡用172.25.60.250)
fence_virtd -c :
這裡的網卡一定要對:
生成key
分發key給兩台伺服器(server1 & server2)
7.在浏覽器luci管理界面:
添加fence
給兩台伺服器分别添加fence
這裡的domain填虛拟機的UUID
完成後,在172.25.60.250重新開機 fence
然後在server1上測試:
輸入: fence_node server2
檢視server2: 重新開機了說明成功。
8.failover <故障恢複>失效備援
系統備援能力的一種,當系統中其中一項裝置失效而無法運作時,另一項裝置即可自動接手原失效系統所執行的工作、
如圖:
Prioritized 權重,哪個做master,哪個做備用機,數字越小,優先級越高,1,2/10/3都行,數字無所謂
Restricted 伺服器上隻運作此服務
No Failback 不做切換(server1挂了,server4上,server1又好了,server1不搶master地位),這個主要是對性能差不多的伺服器來說可以不選,如果server1和server5性能一樣,那麼就無序切換,切換浪費資源
9.Resource
VIP ——>172.25.60.99/24
Scripts—–>nginx—->/etc/init.d/httpd
然後在兩台服務端安裝httpd,編輯不同的預設釋出頁面友善差別:
10.Service group
叢集中添加節點實作高可用;
添加資源:VIP實作httpd負載均衡,scripts添加httpd服務
1> 給叢集命名apache
2.添加前面的VIP和script到服務組(注意順序不能錯)
然後等待服務啟動。
這裡顯示apache狀态未知,我還不知道怎麼解決。。。
11.目前面的步驟都完成之後,可以給服務端連接配接存儲。
在存儲端(server3)上:
安裝軟體:scsi-*
添加硬碟
編輯 /etc/tgt/target.conf 檔案
在服務端上:iscsi-*
在服務端:
給磁盤分區:這個操作隻需要在一個服務端進行就好了。
格式化:
挂載:
此時,在server1上的 /mnt/ 裡寫入的檔案或資料就能在server2的 /mnt/ 下看到。
但是存在一個問題就是不能同時讀寫。解決的辦法就是将挂載這個行動像是前面的 httpd一樣 ,和VIP綁定,兩台服務端誰拿到令牌(也就是VIP),誰就挂載。
然後再在service group裡添加這個Filesystem就好了。
12.還有一個比較好用的辦法,就是采用GFS2。
GFS2 是一個基于 GFS的先進的叢集檔案系統,能夠同步每台主機的叢集檔案系統的metadata,
能夠進行檔案鎖的管理,并且必須要redhat cluster suite支援,GFS2可以grow,進行容量的調整;
在服務端:兩台服務端都要做
然後挂載到 /mnt/下,測試:
當一端删除時:
另一端:
那麼我們可以直接将他挂載到 httpd 的預設釋出頁面,與前面的實驗結合起來:
然後寫如開機自啟檔案,之後就不用再手動挂載:
最後,再luci管理中的service group中隻需要添加 ip 和 script 就好了。