官术网_书友最值得收藏!

4.9 Nginx高可用

分布式環(huán)境中存在眾多不確定因素,而Nginx作為核心代理服務(wù)器用于網(wǎng)絡(luò)請求負載時,若出現(xiàn)宕機或無響應(yīng)的情況,網(wǎng)頁端請求會無法正常代理到后端應(yīng)用,這會導(dǎo)致業(yè)務(wù)無法正常運轉(zhuǎn),因此需避免單點風(fēng)險,實現(xiàn)高可用。

首先介紹Keepalived。Keepalived是用來做什么的?

Keepalived是一個高性能服務(wù)器的高可用或支持熱備的解決方案,其主要特點是可以預(yù)防服務(wù)器單點故障的發(fā)生。Keepalived專門用于監(jiān)控集群系統(tǒng)中各個服務(wù)節(jié)點的狀態(tài),它根據(jù)TCP/IP參考模型的第三、第四層、第五層交換機制檢測每個服務(wù)節(jié)點的狀態(tài),如果某個服務(wù)器節(jié)點出現(xiàn)異常,或者工作出現(xiàn)故障,Keepalived會及時發(fā)現(xiàn)并將出現(xiàn)故障的服務(wù)器節(jié)點從集群系統(tǒng)中剔除,這些工作全部是自動完成的,不需要人工干涉,需要人工完成的只是修復(fù)出現(xiàn)故障的服務(wù)節(jié)點。

后續(xù)Keepalived又加入了VRRP的功能(虛擬路由冗余協(xié)議),用于解決靜態(tài)路由的單點故障問題。通過VRRP可以實現(xiàn)網(wǎng)絡(luò)不間斷穩(wěn)定運行,因此Keepalived一方面具有服務(wù)器狀態(tài)檢測和故障隔離功能,另外一方面也有HAcluster功能。

Keepalived的兩大核心功能包括健康檢查和失敗切換。所謂健康檢查,就是采用TCP三次握手、icmp請求、HTTP請求等方式對負載均衡器后面的實際服務(wù)器(通常是承載真實業(yè)務(wù)的服務(wù)器)進行保活。失敗切換主要是指應(yīng)用于配置了主備模式的負載均衡器,利用VRRP維持主備負載均衡器的心跳,當(dāng)主負載均衡器出現(xiàn)問題時,由備負載均衡器承載對應(yīng)的業(yè)務(wù),從而在最大限度上減少流量損失,提高服務(wù)的穩(wěn)定性。

1. VRRP實現(xiàn)原理

VRRP可以保證當(dāng)主機的下一臺路由出現(xiàn)故障時,由另一臺路由器來代替出現(xiàn)故障的路由器進行工作。通過VRRP可以在網(wǎng)絡(luò)發(fā)生故障時透明地進行設(shè)備切換而不影響主機之間的數(shù)據(jù)通信。VRRP包括以下幾個部分:

1)虛擬路由器:虛擬路由器是VRRP備份組中所有路由器的集合,從備份組外面看備份組中的路由器,組中的所有路由器都一樣,可以理解為在一個組中,主路由器+所有備份路由器=虛擬路由器。虛擬路由器有一個虛擬的IP地址和MAC地址。主機將虛擬路由器當(dāng)作默認網(wǎng)關(guān)。虛擬MAC地址的格式為00-00-5E-00-01-{VRID}。通常情況下,虛擬路由器回應(yīng)ARP請求使用的是虛擬MAC地址,只有虛擬路由器做特殊配置的時候,才會回應(yīng)接口的真實MAC地址。

2)主路由器:虛擬路由器通過虛擬IP對外提供服務(wù),而在虛擬路由器內(nèi)部同一時間只有一臺物理路由器對外提供服務(wù),這臺提供服務(wù)的物理路由器被稱為主路由器。一般情況下,Master是由選舉算法產(chǎn)生的,它擁有對外服務(wù)的虛擬IP,提供各種網(wǎng)絡(luò)功能,如ARP請求、ICMP數(shù)據(jù)轉(zhuǎn)發(fā)等。

3)備份路由器:虛擬路由器中的其他物理路由器不擁有對外的虛擬IP,也不對外提供網(wǎng)絡(luò)功能,僅接受Master的VRRP狀態(tài)通告信息,這些路由器被稱為備份路由器。當(dāng)主路由器失敗時,處于Backup角色的備份路由器將重新進行選舉,產(chǎn)生一個新的主路由器進入Master角色,繼續(xù)提供對外服務(wù),整個切換對用戶來說是完全透明的。

VRRP路由器在運行過程中有以下狀態(tài):

  • Initialize狀態(tài)(系統(tǒng)啟動后進入Initialize,此狀態(tài)下路由器不對VRRP報文做任何處理);
  • Master狀態(tài);
  • Backup狀態(tài)。

注意

主路由器處于Master狀態(tài),備份路由器處于Backup狀態(tài)。

VRRP使用選舉機制來確定路由器的狀態(tài),具體優(yōu)先級選舉機制如下:

  • VRRP組中IP擁有者。如果虛擬IP地址與VRRP組中的某臺VRRP路由器IP地址相同,則此路由器為IP地址擁有者,這臺路由器將被定位為主路由器;
  • 比較優(yōu)先級。如果沒有IP地址擁有者,則比較路由器的優(yōu)先級,優(yōu)先級的范圍是0~255,優(yōu)先級大的作為主路由器;
  • 比較IP地址。在沒有IP地址擁有者和優(yōu)先級相同的情況下,IP地址大的作為主路由器。

2. VRRP工作過程

根據(jù)優(yōu)先級來確定主備角色,優(yōu)先級高的路由器成為Master路由器,優(yōu)先級低的成為Backup路由器。Master擁有對外服務(wù)的虛擬IP,提供各種網(wǎng)絡(luò)功能,并定期發(fā)送VRRP報文,通知備份組內(nèi)的其他設(shè)備自己工作正常。Backup路由器只接收Master發(fā)來的報文信息,用來監(jiān)控Master的運行狀態(tài)。當(dāng)Master失效時,Backup路由器進行選舉,優(yōu)先級高的Backup將成為新的Master。

搶占方式下,當(dāng)Backup路由器收到VRRP報文后,會將自己的優(yōu)先級與報文中的優(yōu)先級進行比較。如果Backup路由器的URRP報文大于通告報文中的優(yōu)先級,則該路由器成為Master路由器;否則將保持Backup狀態(tài)。

非搶占方式下,只要Master路由器沒有出現(xiàn)故障,備份組中的路由器就會始終保持Master或Backup狀態(tài)。Backup路由器即使隨后被配置了更高的優(yōu)先級也不會成為Master路由器。

如果Backup路由器的定時器超時后仍未收到Master路由器發(fā)送來的VRRP報文,則認為Master路由器已經(jīng)無法正常工作,此時Backup路由器會認為自己是Master路由器,并對外發(fā)送VRRP報文。備份組內(nèi)的路由器根據(jù)優(yōu)先級選舉出Master路由器,并承擔(dān)報文的轉(zhuǎn)發(fā)功能。

利用Keepalived的VRRP,可實現(xiàn)Nginx的高可用。Nginx高可用結(jié)構(gòu)如圖4-12所示。

095-1

圖4-12 Nginx高可用結(jié)構(gòu)圖

注意

使用Keepalived的VRRP來管理兩臺Nginx服務(wù)器,并虛擬出一個VIP(192.168.247.14),外界請求直接訪問虛擬IP而不是真正的Nginx的IP。虛擬IP綁定的是Master,Backup服務(wù)器會和Master保持通信,并監(jiān)聽Master服務(wù)器的健康狀態(tài)。當(dāng)Master宕機或發(fā)生異常時,Master無法和Backup通信,Backup健康監(jiān)聽機制會認為Master已經(jīng)宕機,從而將選舉升級為Master,并把VIP綁定到自身,提供Master相應(yīng)的功能。當(dāng)之前宕機的主服務(wù)器恢復(fù)后,原服務(wù)器依然充當(dāng)主服務(wù)器,而升級后的主服務(wù)器會降級到從服務(wù)器。

主站蜘蛛池模板: 儋州市| 柳州市| 台东县| 扶风县| 视频| 肥东县| 定结县| 保定市| 土默特右旗| 长泰县| 洪湖市| 博爱县| 冷水江市| 嘉峪关市| 泽普县| 岐山县| 雷州市| 梓潼县| 南溪县| 北海市| 商城县| 泗阳县| 福清市| 海安县| 彭州市| 泸溪县| 阿拉善右旗| 桓仁| 平凉市| 扎囊县| 乌兰察布市| 改则县| 凤冈县| 西平县| 高碑店市| 松滋市| 台北县| 湖北省| 南川市| 伊川县| 卓尼县|