keepalived+lvs實作lvs的高可用
keepalived的介紹:
keepalived是借用VRRP協定來實作高可用性的,VRRP協定是解決單點故障,使路由器和層三交換機實作備援功能。

keepalived啟動後會有三個程序
父程序:記憶體管理,子程序管理等等
子程序:VRRP子程序
子程序:healthchecker子程序
從圖上可以看出,兩個子程序都被系統WatchDog看管,兩個子程序各自操作自己的事,healthchecker子程序負責檢查各自伺服器的健康程度,例如HTTP,LVS等等,如果healthchecker子程序檢查到MASTER上服務不可用了,就會通知本機上的VRRP子程序,讓他删除通告,并且去掉虛拟IP,轉換為BACKUP狀态
為什麼要用keepalived+lvs?
lvs是一個在四層上實作後端realserver的負載均衡的叢集,lvs遺留下兩個問題,一個是lvs的單點故障;第二個是lvs不能檢測後端realserver的健康狀态檢查。
解決lvs的單點故障就用到了高可用叢集:
①、可以是heartbeat+ldirectord這種重量級的;
②、可以是keepalived+lvs這種輕量級的解決方案。(本部落客要寫keepalived+lvs輕量級的解決方案),
解決lvs不能檢測後端realserver的健康狀态也後很多種方法:
①、可以在lvs上寫腳本ping後端realserver的ip位址,ping幾次發現ip位址ping不通則在ipvs規則裡面删除,當後端伺服器可以ping了,則把後端realserver添加到ipvs規則裡面。
②、可以在lvs上寫腳本請求後端realserver的測試幾次網頁檔案,檢視狀态碼是否為200,不是則在ipvs規則裡面清楚,當測試網頁傳回的狀态嗎是200之後,則把後端realserver添加到ipvs規則裡面
③、以上兩種方法都是依賴于腳本,keepalived的出現解決了不依賴于腳本,也可以對後端realserver的健康狀态檢查,keepalived的配置檔案裡面可以自行生成ipvs的規則,并且自行檢測後端realserver的狀态,當後端realserver不能提供服務了,keepalived會自行将其在ipvs規則裡面删除,當後端realserver可以提供服務了,又自行的在ipvs規則裡面添加。
實驗環境:
OS:Centos 6.4(redhat 6.4)
yum源:
實驗拓撲圖:
拓撲圖的規劃:
IP位址
軟體
Master
172.16.22.1(VIP:172.16.22.100)
keepalived+ipvsadm
Backup
172.16.22.2(VIP:172.16.22.100)
apache1
172.16.22.3(VIP:172.16.22.100)
httpd
apache2
172.16.22.4(VIP:172.16.22.100)
注:Master和Backup上面安裝ipvsadm主要是為了檢視ipvs的規則
一、安裝配置操作
Master:
1、安裝(部落客這裡用rpm包安裝,各位朋友可以用源碼編譯安裝keepalived)
2、修改配置檔案
3、開啟服務
Backup:
1、安裝
apache1:
1、安裝(部落客這裡用rpm包安裝,各位朋友可以用源碼編譯安裝)
2、建立測試網頁檔案
4、修改核心參數和配置vip
apache2:
此緻所有安裝已經完成。
二、相關的測試:
檢視相關的vip和ipvs規則
測試後端realserver是否可以通路:
apache1可以通路
apache2可以通路
而且是根據wrr算法,平均負載到realserver上
停掉Master的keepalived服務,vip和ipvs規則切換到Backup伺服器上
停掉apache1的服務,看ipvs的規則是否清除,顯示已經清楚規則
開啟apache1的服務,ipvs自動将其又添加上
此緻,keepalived實作lvs的高可用已經完成,可以自動的故障轉移,還可以根據後端realserver的狀态,自動的修改其規則