天天看點

keepalived+lvs實作lvs的高可用

keepalived+lvs實作lvs的高可用

keepalived的介紹:

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

keepalived+lvs實作lvs的高可用

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源:

實驗拓撲圖:

keepalived+lvs實作lvs的高可用

拓撲圖的規劃:

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規則

keepalived+lvs實作lvs的高可用

測試後端realserver是否可以通路:

apache1可以通路

keepalived+lvs實作lvs的高可用

apache2可以通路

keepalived+lvs實作lvs的高可用

而且是根據wrr算法,平均負載到realserver上

停掉Master的keepalived服務,vip和ipvs規則切換到Backup伺服器上

keepalived+lvs實作lvs的高可用

停掉apache1的服務,看ipvs的規則是否清除,顯示已經清楚規則

開啟apache1的服務,ipvs自動将其又添加上

此緻,keepalived實作lvs的高可用已經完成,可以自動的故障轉移,還可以根據後端realserver的狀态,自動的修改其規則