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 就好了。