Keepalived + LVS 實現lvs的高可用:
現在的社會中,人們對於網絡體驗的要求越來越高,企業將多個服務器集中在一起,使用集羣DR模型共同提供web頁面服務,使得我們的網頁瀏覽速度大大提高,服務器的負載大大減小;但是DR模型中和客戶端相連的,向外提供服務的director很容易成爲真個網絡中的單點故障,我們要儘量避免這樣的問題,所以對director做高可用,當後端的RS1或者RS2出現故障時前端的director能夠檢測到,並將其從realserver列表中移除,將所有客戶端的請求全部發送到正常工作的realserver上,如果兩個realserver全部宕機,則前端的director能夠向用戶提供一個提示頁面,使得用戶不會因爲不能正常訪問頁面而流失;而且當director出現故障時,在director上的VIP能夠自動漂移到另外一臺director上,並且在這臺director上使用VIP,啓動與HA1相同的LVS規則,啓動WEB服務,繼續提供sorry頁面,實現了director的高可用
這裏我們藉助keepalived實現這個功能,keepalived最初設計目的是爲ipvs提供高可用功能,藉助於VRRP協議,實現IP地址的漂移;轉移開啓LVS服務,完成health check健康狀況監測
VRRP:Virtual Router Redundancy Protocol虛擬路由冗餘協議,是一種容錯協議。該協議通過把幾臺路由設備聯合組成一臺虛擬的路由設備,使用一定的機制保證當主機的下一跳交換機出現故障時,及時將業務切換到其它交換機,從而保持通訊的連續性和可靠性;這裏對VRRP協議不做過多介紹,有興趣的朋友可以去查看VRRP官方幫助文檔
搭建環境:RHEL5.8 32bit,apache2.2,lvs,keepalived-1.2
搭建步驟:
一、實現director和各個realserver的互信通信、時間同步、互相解析
二、在realserver上安裝web服務,搭建LVS的DR環境
三、對director做HA高可用,解決director單點故障問題
搭建LVS環境:互信通信,時間同步,互相解析
安裝lvs並對director--HA 1進行配置:
1. 安裝ipvsadm命令行工具包:
2. 使用腳本快速對director網卡和ipvs進行配置:
對兩個realserver分別進行安裝配置:
首先安裝httpd服務所需的RPM包
使用腳本快速配置realserver的內核和網絡參數:
執行腳本進行編輯配置,發現此時已經配置有VIP和路由:
另外一臺realserver配置相同;此時我們到director上運行lvs規則腳本,並查看後端realserver是否已成功鏈接
此時到客戶機上進行lvs的測試:
此時一個簡單的web集羣已經搭建成功,但是這個模型容易出現director單點故障,所以我們使用keepalived對這個lvs做高可用:
在director上安裝keepalived,並對keepalived做簡單配置:
如果要是用TCP_CHECK檢測各realserver的健康狀態,那麼,上面關於realserver部分的定義也可以替換爲如下內容:
編輯notify腳本:
啓動keepalived服務,並對realserver進行查看:
我們模擬其中一個realserver宕掉,並再次查看lvs,發現只有一個realserver:
因爲我們提供的有sorry server,所以我們要在director上安裝httpd服務:
此時如果我們將兩個realserver的httpd服務全部關閉,再到director上查看,發現已經啓動127.0.0.1:
此時我們再到客戶端進行測試,發現頁面已經轉換爲sorry:
此時我們將RS2上的httpd服務打開,發現director立即能夠發現,客戶端的頁面可正常訪問:
下面我們進行故障測試,來驗證lvs的HA功能:
查看主lvs節點和備用lvs’節點的網卡配置情況,發現此時的VIP在節點一上:
我們模擬故障,在節點一的/etc/keepalived目錄下創建一個down文件,並在此查看:
發現此時的VIP已經漂移到節點二上:
我們客戶端的訪問並沒有收到影響,實現了web集羣的高可用:
此時Keepalived + LVS的集羣高可用已經搭建完成