實現基於Keepalived主從高可用集羣網站架構

背景

上一期咱們實現了基於lvs負載均衡集羣的電商網站架構,隨着業務的發展,網站的訪問量愈來愈大,網站訪問量已經從原來的1000QPS,變爲3000QPS,目前業務已經經過集羣LVS架構可作到隨時拓展,後端節點已經經過集羣技術保障了可用性,但對於前端負載均衡器來講,是個比較大的安全隱患,由於當前端負載均衡器出現故障時,整個集羣就處於癱瘓狀態,所以,負載均衡器的可用性也顯得相當重要,那麼怎麼來解決負載均衡器的可用性問題呢?前端

技術說明

集羣(cluster)技術是一種較新的技術,經過集羣技術,能夠在付出較低成本的狀況下得到在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集羣系統中的核心技術。
集羣是一組相互獨立的、經過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集羣相互做用時,集羣像是一個獨立的服務器。
集羣組成後,能夠利用多個計算機和組合進行海量請求處理( 負載均衡),從而得到很高的處理效率,也能夠用多個計算機作備份高可用),使得任何一個機器壞了整個系統仍是能正常運行。集羣在目前互聯網公司是必備的技術,極大提升互聯網業務的可用性和可縮放性。
高可用(High Availability )高可用集羣,英文原文爲HighAvailability Cluster,簡稱HA Cluster,簡單的說,集羣(cluster)就是一組計算機,它們做爲一個總體向用戶提供一組網絡資源。這些單個的計算機系統 就是集羣的節點(node)。高可用性集羣(HA cluster)是指如單系統同樣地運行並支持(計算機)持續正常運行的一個主機羣。

高可用集羣技術

高可用(High Availability )高可用集羣,英文原文爲HighAvailability Cluster,簡稱HA Cluster,簡單的說,集羣(cluster)就是一組計算機,它們做爲一個總體向用戶提供一組網絡資源。這些單個的計算機系統 就是集羣的節點(node)。高可用性集羣(HA cluster)是指如單系統同樣地運行並支持(計算機)持續正常運行的一個主機羣。
高可用集羣的出現是爲了使集羣的總體服務儘量可用,從而減小由計算機硬件和軟件易錯性所帶來的損 失。若是某個節點失效,它的備援節點將在幾秒鐘的時間內接管它的職責。所以,對於用戶而言,集羣永遠不會停機。高可用集羣軟件的主要做用就是實現故障檢查和業務切換的自動化。
高可用(High Availability )
HA(High Available), 高可用性羣集是經過系統的可靠性(reliability)和可維護性(maintainability)來度量的。工程上,一般用平均無端障時間(MTTF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。因而可用性被定義爲:HA=MTTF/(MTTF+MTTR)*100%(平均無端障時間/總時間,總時間=平均無端障時間+平均維修時間)
具體HA(可用性)衡量標準:
99% 一年宕機時間不超過4天
99.9% 一年宕機時間不超過10小時
99.99% 一年宕機時間不超過1小時
99.999% 一年宕機時間不超過6分鐘

高可用集羣技術實現

高可用(High Availability )
高可用工做方式: 主從方式 (非對稱方式)、雙機雙工方式(互備互援)、集羣工做方式(多服務器互備方式)
高可用的資源分類: 網絡高可用、服務器高可用、存儲高可用、服務高可用等
開源高可用解決方案: keepalived:經過實現vrrp協議來實現地址漂移;heartbeat(開源社區項目),cman+rgmanager (RHCS:redhat cluster suite),corosync+pacemaker(大型解決方案,一個用於心跳檢測,一個用於資源轉移。兩個結合起來使用,能夠實現對高可用架構的自動管理。)
 咱們今天講的就是基於keepalived經過vrrp協議來實現地址漂移從而來實現高可用。

高可用技術演示圖(主從)

高可用技術演示圖(雙主)

Keepalived是什麼

Keepalived的做用是檢測服務器的狀態,若是有一臺web服務器宕機,或工做出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其餘服務器代替該服務器的工做,當服務器工做正常後Keepalived自動將服務器加入到服務器羣中,這些工做所有自動完成,不須要人工干涉,須要人工作的只是修復故障的服務器。

Keepalived的特性

配置文件簡單:配置文件比較簡單,可經過簡單配置實現高可用功能
穩定性強:keepalied是一個相似於layer3,4&7交換機機制的軟件,具有咱們平時說的第3層、第4層和第7層交換機的功能,經常使用於前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。
成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。
應用範圍廣:由於keepalived可應用在多個層面,因此它幾乎能夠對全部應用作高可用,包括LVS、數據庫、http服務、nginx負載均衡等等
支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。

Keepalived工做流程圖

Keepalived工做流程圖詳解
如上圖, keepalived主要是模塊是VRRP Stack和Cheackers,實現HA集羣中失敗切換(Failover)功能。Keepalived經過VRRP功能能再結合LVS負載均衡軟件便可部署一個高性能的負載均衡集羣系統。,Cheackers主要實現可實現對服務器運行狀態檢測和故障隔離。其中ipvs和realserver健康狀態檢查經過配置文件配置就能夠實現,而其餘服務高可用則須要經過本身編寫腳本,而後配置keepalived調用來實現。
Keepalived運行有3個守護進程。父進程主要負責讀取配置文件初始化、監控2個子進程等;而後兩個子進程,一個負責VRRP,另外一個負責Cheackers健康檢查。其中父進程監控模塊爲WacthDog,工做實現:每一個子進程打開一個接受unix域套接字,父進程鏈接到那些unix域套接字並向子進程發送週期性(5s)hello包。
上圖是Keepalived的功能體系結構,大體分兩層:用戶空間(user space)和內核空間(kernel space)。
內核空間:主要包括IPVS(IP虛擬服務器,用於實現網絡服務的負載均衡)和NETLINK(提供高級路由及其餘相關的網絡功能)兩個部份。

什麼是VRRP協議

VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)能夠認爲是實現路由器高可用的協議,簡單的說,當一個路由器故障時能夠由另外一個備份路由器繼續提供相同的服務。node

VRRP根據優先級來肯定虛擬路由器中每臺路由器的角色(Master路由器或Backup路由器)。VRRP優先級的取值範圍爲0到255(數值越大代表優先級越高),可配置的範圍是1到254,優先級0爲系統保留給路由器放棄Master位置時候使用,255則是系統保留給IP地址擁有者使用。優先級越高,則越有可能成爲Master路由器。當兩臺優先級相同的路由器同時競爭Master時,比較接口IP地址大小。接口地址大者當選爲Master。linux

Keepalived的應用場景
網絡層、數據鏈路層,運行着4個重要的協議: 互聯網協議IP、互聯網控制報文協議ICMP、地址轉換協議ARP以及反向地址轉換協議RARP。Keepalived在網絡層採用的最多見的工做方式是經過ICMP協議向服務器集羣中的那個節點發送一個ICMP數據包(相似於ping實現的功能),若是某個節點沒有返回響應數據包,那麼認爲此節點發生了故障,Keepalived將報告次節點失效,並從服務器集羣中剔除故障節點。
傳輸層,提供了兩個主要的協議:傳輸控制協議TCP和用戶數據協議UDP。傳輸控制協議TCP能夠提供可靠的數據傳輸服務、Ip地址和端口表明TCP的一個鏈接端。要得到TCP服務,須要在發送機的一個端口上和接收機的一個端口上創建鏈接,而Keepalived在傳輸層就是利用TCP協議的端口鏈接和掃描技術來判斷集羣點是否正常的。好比,對於常見的WEB服務默認的80端口、SSH服務默認的22端口等,Keepalived一旦在傳輸層探測到這些端口沒有響應數據返回,就認爲這些端口發生異常,而後強制將此端口對應得節點從服務器集羣組中移除。
應用層,可運行FTP、TELNET、HTTP、DNS等各類不一樣類型的高層協議,Keepalived的運行方式也更加全面化和複雜化,用戶能夠經過自定義Keepalived的工做方式;例如:用戶能夠經過編寫程序來運行keepalived。而keepalived將根據用戶的設定檢測各類程序或服務是否運行正常,若是Keepalived的檢測結果與用戶設定不一致時,Keepalived將把對應的服務從服務器中移除。

實戰架構圖

實現基於keepalived的高可用服務,在兩臺主機上分別實現主從,主主模型,經過keepalived實現IP地址高可用和LVS的主從高可用架構。

實戰演練

實現基於keepalived主從模型高可用集羣:

1、環境準備:
centos系統主從兩臺、yum源、防火牆關閉、各節點時鐘服務同步、各節點之間能夠經過主機名互相通訊
2、安裝步驟:
一、iptables -F && setenforing 清空防火牆策略,關閉selinux
二、兩臺服務器都使用yum方式安裝keepalived服務
3、修改配置文件:
1.修改/etc/keepalived/keepalived.conf配置文件內容
二、對glob段進行定義,添加管理員郵箱等
三、對vrrp_instance 進行配置,配置一主一從,定義一個基於虛擬IP的實例
4、檢驗高可用的效果
一、配置完成後,觀察兩側IP的是狀況,看是否虛擬IP在主上配置成功
二、檢查主從服務日誌,服務是否運行正常,監測機制是否有效
三、停掉主服務上的keepalived服務,看虛擬IP是否正常轉移到從節點上
四、觀察日誌,瞭解整個切換過程,以後啓動主節點服務,看虛擬IP可否被主服務再接管

實現keepalived企業級高可用基於LVS-DR模式的應用實戰:

1、環境準備:兩臺centos系統作DR、一主一從,兩臺後端服務器實現過基於LNMP的電子商務網站
2、安裝步驟:
一、兩臺服務器都使用yum方式安裝keepalived服務
二、iptables -F && setenforing 清空防火牆策略,關閉selinux
3、配置基於DR模式的LVS負載均衡集羣:
vim /etc/keepalived/keepalived.conf
1.對glob段進行定義,添加管理員郵箱
二、修改keepalived主(lvs-server-master)配置文件實現virtual_instance
三、修改keepalived主(lvs-server-master)配置文件實現virtual_server
四、修改keepalived從(lvs-server-master)配置文件實現real_server
 
五、修改keepalived主(lvs-server-backu)配置文件實現virtual_instance
六、修改keepalived從(lvs-server-backup)配置文件實現virtual_server
七、修改keepalived從(lvs-server-backup)配置文件實現real_server

 

四.在兩臺主從負載均衡器上開啓路由轉發
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
五,在後端服務器的迴環網卡上配置vip,並將網關指向vip
ifconfig lo:0 172.17.253.100 broadcast 172.17.253.100 netmask 255.255.255.255 up
route add -host 172.17.253.100 dev lo:0
六,在後端服務器關閉arp
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
#1 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
#2 對查詢目標使用最適當的本地地址.在此模式下將忽略這個IP數據包的源地址並嘗試選擇與能與該地址通訊的本地地址.
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
#關閉arp應答
(1): 僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時,纔給予響應
(2):必須避免將接口信息向非本網絡進行通告
七,檢驗高可用的效果
兩臺負載均衡器都開啓keepalived服務,我中止了負載均衡器主服務器的keepalived服務(模擬負載均衡器主服務器宕機),馬上負載均衡器從服務器會將主服務器上的vip拿過來(地址漂移),接替負載均衡器主服務器的工做,一旦負載均衡器主服務器被修好了,重新開啓keepalived服務,因爲默認爲搶佔模式,主服務器再將從服務器的vip給拿回來,繼續工做,不會影響客戶端訪問。
好了,今天的內容就到這裏,咱們下期再見。
相關文章
相關標籤/搜索