集羣套件的作用
-
集羣中luci的作用:
luci是用來配置和管理集羣,監聽在8084上
-
集羣中ricci的作用:
ricci是安裝在每個後端的每個節點上的,luci管理集羣上的各個節點就是通過和節點上的ricci進行通信,ricci監聽在11111上 -
集羣中fence的作用:
當意外原因導致主機異常或者宕機時,備機會首先調用FENCE設備,然後通過FENCE設備將異常主機重啓或者從網絡隔離,當FENCE操作成功執行後,返回信息給備機,備機在接到FENCE成功的信息後,開始接管主機的服務和資源。這樣通過FENCE設備,將異常節點佔據的資源進行了釋放,保證了資源和服務始終運行在一個節點上。並且有效的阻止了“腦裂"的發生。
實驗環境:
rhel6.5 selinux and iptables disabled
主機環境:
主機名 | IP | 服務 |
---|---|---|
hetoto1 | 172.25.12.1 | ricci,luci,httpd |
hetoto2 | 172.25.12.2 | ricci,httpd |
foundation12 | 172.25.12.250 | fence |
搭建RHCS環境
一、 配置主機和hetoto1,hetoto2的環境環境
1.首先在hetoto1和hetoto2搭建高級的yum源
vim /etc/yum.repo//rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.79.250/rhel6.5
enabled=1
gpgcheck=0
[HighAvailability] ##高可用安裝包
name=HighAvailability
baseurl=http://172.25.12.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=0
[LoadBalancer] ##負載均衡安裝包
name=LoadBalancer
baseurl=http://172.25.12.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
[ResilientStorage] ##彈性存儲安裝包
name=ResilientStorage
baseurl=http://172.25.12.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=0
[ScalableFileSystem] ##文件系統類安裝包
name=ScalableFileSystem
baseurl=http://172.25.12.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=0
查看yum源是否正常,添加的安裝包是否添加進去
[root@hetoto1 ~]# yum clean all ##清除yum緩存
[root@hetoto1 ~]# yum repolist ##看添加的包是否被檢測到
配置hetoto2同上
2.添加解析(物理機,hetoto1和hetoto2上都要做)
[root@foundation12 images]# vim /etc/hosts
[root@foundation12 images]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.250 content.example.com foundation0.ilt.example.com
172.25.12.1 hetoto1
172.25.12.2 hetoto2
172.25.12.3 hetoto3
172.25.12.4 hetoto4
172.25.12.5 hetoto5
172.25.12.6 hetoto6
hetoto1和hetoto2同上配置
3.在hetoto1安裝rhcs的圖形網頁管理工具
-
ricci(圖形裏的集羣管理)
-
luci(圖形界面)
-
修改ricci用戶密碼
-
開啓ricci和luci
-
並設置開機自啓
[root@hetoto1 ~]# yum install ricci luci -y
[root@hetoto1 ~]# yum install httpd -y
[root@hetoto1 ~]# passwd ricci
開啓ricci和luci
[root@hetoto1 ~]# /etc/init.d/ricci start
[root@hetoto1 ~]# /etc/init.d/luci start
設置開機自啓
[root@hetoto1 ~]# chkconfig ricci on
[root@hetoto1 ~]# chkconfig luci on
[root@hetoto1 ~]# chkconfig httpd on
4.在hetoto2上安裝ricci,其餘同hetoto1上設置
[root@hetoto2 ~]# yum install ricci -y
[root@hetoto2 ~]# passwd ricci
[root@hetoto2 ~]# /etc/init.d/ricci start
[root@hetoto2 ~]# chkconfig ricci on
[root@hetoto2 ~]# chkconfig httpd on
二、創建集羣
(1)在瀏覽器中輸入https://172.25.12.1:8084/
- 因爲是https訪問,所以需要添加信任網絡,點擊Advanced …
(2)登陸帳號和密碼是hetoto1中的系統用戶和密碼,普通用戶需要經過超級用戶的審覈才能登陸,所以一般選擇超級用戶登陸
(3)點擊集羣管理(Manager Clusters),然後點擊create出現以下頁面,創建一個集羣westos_ha
- 然後點擊(CreateCluster),進入等待頁面,此時hetoto1和hetoto2會重啓,然後在重新連接hetoto1和hetoto2
注:如果沒有設定luci和ricci開機自啓動,則需要在等待過程中重啓虛擬機之後,再次開起服務,才能完成hetoto1和hetoto2集羣節點的添加。
節點添加成功如下圖
(4)hetoto1和hetoto2上集羣信息的查看
chkconfig --list ##查看開機會自啓動的服務
cat /etc/cluster/cluster.conf ##發現該文件之中已有hetoto1和hetoto2的集羣
clustat ##也會看見集羣
三、配置fence
FENCE的原理:
- 當意外原因導致主機異常或者宕機時,備機會首先調用FENCE設備,然後通過FENCE設備將異常主機重啓或者從網絡隔離,當FENCE操作成功執行後,返回信息給備機,備機在接到FENCE成功的信息後,開始接管主機的服務和資源。這樣通過FENCE設備,將異常節點佔據的資源進行了釋放,保證了資源和服務始終運行在一個節點上。
配置過程:
1.在主機上安裝fence
2.生成fence的加密文件
- 因爲本身配置的文件中沒有fence的加密文件,所以要自己生成加密文件,然後再配置fence的配置文件
[root@foundation12 ~]# mkdir /etc/cluster
[root@foundation12 ~]# cd /etc/cluster/
[root@foundation12 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
[root@foundation12 cluster]# ls
3.編輯fence的配置文件
[root@foundation12 ~]# fence_virtd -c
除了修改此處,其餘回車即可
4.將修改好的密鑰文件發送給節點hetoto1和hetoto2,保證hetoto1和hetoto2利用的是同一個密鑰
[root@foundation12 cluster]# scp fence_xvm.key [email protected]:/etc/cluster/ ##發送給hetoto1
[root@foundation12 cluster]# scp fence_xvm.key [email protected]:/etc/cluster/ ##發送給hetoto2
- 查看hetoto1是否收到密鑰
5.打開fence服務
[root@foundation12 cluster]# systemctl start fence_virtd.service
[root@foundation12 cluster]# systemctl status fence_virtd.service
[root@foundation12 cluster]# netstat -autnlp | grep 1229
添加fence設備
1.點擊Fence Devices,再點擊Add
- 選擇多播模式的fence
2.綁定節點(兩個節點都要進行以下操作)
(1)hetoto1
UUID可以在虛擬機的管理截面看到
(2)hetoto2同理
3.兩個節點都綁定後配置文件內容應該如下:
4.fence設備的測試
-
在hetoto1上通過fence幹掉節點hetoto2,使hetoto2斷電重啓則爲成功
[root@hetoto1 cluster]# fence_node hetoto2
fence hetoto2 success
-
能ssh連接hetoto2,說明hetoto2已經重啓成功
四、高可用服務配置(httpd爲例)
1.添加故障轉移域
- 將hetoto1和hetoto2添加在域中,即hetoto1或hetoto2出現故障時,切換到正常的那一個上,集羣打開後,服務落在優先級高的節點上。(數字越小優先級越高)
2.添加服務中所要用到的資源(以httpd高可用爲例)
- 添加IP Address(集羣對外VIP) ,點擊Submit提交
5 : 切換主機之間的時間
- 再點擊Resources,點擊Add,選擇模式Script,添加啓動httpd服務的腳本
3.向集羣中添加上一步添加的資源(IP Address 和script)
- 第一步是創建一個資源組(服務中要用到資源的集合)apache
- 接着將資源添加進去
在hetoto1 和hetoto2上安裝httpd服務,並編寫默認測試頁面內容
[root@hetoto1 ~]# yum install httpd -y
[root@hetoto1 ~]# cd /var/www/html
[root@hetoto1 html]# vim index.html
[root@hetoto1 html]# cat index.html
hetoto1
[root@hetoto1 html]# /etc/init.d/httpd start
hetoto2上配置同理
[root@hetoto2 ~]# yum install httpd -y
[root@hetoto2 ~]# cd /var/www/html
[root@hetoto2 html]# vim index.html
[root@hetoto2 html]# cat index.html
hetoto2
[root@hetoto2 html]# /etc/init.d/httpd start
- 刷新頁面,顯示httpd服務運行在hetoto2上(優先級高)
並且在hetoto2上可以看到添加上的VIP
4.測試
(1)在物理機訪問兩臺節點,正常
出現下圖這樣的報錯先看看hetoto1和hetoto2上的httpd服務是否打開?沒打開則打開
(2)在物理機訪問VIP——>hetoto2
(3)測試高可用
- 在hetoto2中,輸入echo c> /proc/sysrq-trigger ,手動宕掉服務器
-
再次訪問VIP,會發現訪問切換到hetoto1上,等hetoto2重啓成功之後,則又會切換到hetoto2
注意:
一般在企業中,需要勾選 No Failback (故障不回切) 、即當hetoto2掛掉後,服務自動轉到hetoto1上,並且VIP也會自動飄過來,即使hetoto2重啓成功了,服務也不會再轉回去 -
當關掉hetoto2上的httpd,服務會自動轉移到hetoto1上