之前講了Nginx 如何實現負載均衡以及如何實現動靜分離,實現系統的分布式部署,提高系統的并發性能。但是,有個問題:如果Nginx 系統掛了,整個系統就都不可用了。Nginx 處于整個系統非常重要的位置,Nginx的高可用影響到整個系統的穩定性。如果nginx服務器宕機,后端web服務將無法提供服務,影響嚴重。所以如何保證Nginx 的穩定和高可用非常重要,接下來就來介紹Nginx + keepalived 實現系統負載均衡高可用的方案。
一、什么是負載均衡高可用
Nginx作為負載均衡器,所有請求必須經過Nginx 服務器,可見Nginx處于非常重點的位置,如果Nginx服務器宕機后端web服務將無法提供服務,影響嚴重。
為了避免因為負載均衡服務器的宕機從而影響整個系統的問題,需要建立一個備份機。主服務器和備份服務器上都運行監控程序,通過傳送心跳信息來監控對方的運行狀況。當備份服務器在一定的時間內沒有收到主服務器的心跳信息時,它就自動接管主服務器的服務IP,繼續提供負載均衡服務;當備份服務器又從主服務器收到心跳信息時,它就釋放服務IP地址,這樣的主服務器就開始再次提供負載均衡服務。
二、Nginx高可用方案
目前,比較流行的實現Nginx高可用方案就是:keepalived+nginx實現主備方案。
1、什么是keepalived
keepalived是集群管理中保證集群高可用的一個服務軟件,用來防止單點故障。
Keepalived的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,并將有故障的web服務器從系統中剔除,當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器。
2、keepalived工作原理
keepalived是以VRRP協議為實現基礎的,VRRP全稱 Virtual Router Redundancy Protocol,即虛擬路由冗余協議。
虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊,分別是core、check和VRRP。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模塊是來實現VRRP協議的。
3、keepalived+nginx實現主備過程
keepalived + nginx 實現主備的過程,如下圖所示:
從上圖可以看到,主Nginx健康時,系統所有的請求通過主Nginx 轉發到Tomcat服務器集群。當主Nginx 宕機后,會立馬切換到備Nginx ,由備Nginx 提供轉發服務。這樣就保證系統的正常運行。
三、環境準備
1、兩天Nginx服務器和兩臺web服務器
兩臺nginx,一主一備:192.168.101.3和192.168.101.4
兩臺tomcat服務器:192.168.101.5、192.168.101.6
2、安裝keepalived
分別在主備nginx上安裝keepalived,這里就講解keepalived的安裝了。
3、配置虛擬IP(vip:192.168.101.100)
四、配置Nginx高可用
1、配置主nginx
修改主nginx下/etc/keepalived/keepalived.conf文件,配置主Nginx。
2、配置備nginx
修改備nginx下/etc/keepalived/keepalived.conf文件,配置備Nginx
配置備nginx時需要注意:需要修改state為BACKUP , priority比MASTER低,virtual_router_id和master的值
3、測試
1、主備nginx都啟動keepalived及nginx。
service keepalived start./nginx
2、啟動之后,主Nginx正常工作,分別查看主nginx和 備nginx的eth0設置,vip(192.168.101.100)綁定在主nginx的eth0上。
打開瀏覽器,訪問http://192.168.101.100,可以訪問,主Nginx 服務器正常,系統可用。
3、將主nginx的keepalived停止或將主nginx關機(相當于模擬宕機),再次查看主nginx和 備nginx的eth0設置,vip(192.168.101.100)已經漂移到備nginx 上。
再次訪問http://192.168.101.100,發現系統依然可以訪問,說明主Nginx 宕機之后,自動切換到備用Nginx。
最后
以上,keepalived+nginx 系統高可用的解決方案介紹完了,看上去復雜,其實配置還是比較簡單的。
編輯:hfy
-
服務器
+關注
關注
13文章
9686瀏覽量
87280 -
路由器
+關注
關注
22文章
3811瀏覽量
115984 -
nginx
+關注
關注
0文章
163瀏覽量
12491 -
負載均衡器
+關注
關注
0文章
19瀏覽量
2656
發布評論請先 登錄
Nginx高可用方案
Keepalived工作原理簡介
微服務架構組件分析,看這篇就夠了

Nginx 如何實現高性能低消耗

評論