nginx可以集群嗎

nginx可以集群嗎

nginx可以集群嗎?

nginx實(shí)現(xiàn)集群高可用

? ?大家知道NGINX作為反向代理服務(wù)器可以實(shí)現(xiàn)負(fù)載均衡,同時(shí)也可以作為靜態(tài)文件服務(wù)器,它的特點(diǎn)就是并發(fā)支持大,單機(jī)可同時(shí)支持3萬并發(fā),現(xiàn)在很多網(wǎng)站都把NGINX作為網(wǎng)關(guān)入口來統(tǒng)一調(diào)度分配后端資源。但是如果NGINX宕機(jī)了,就會(huì)導(dǎo)致整個(gè)后臺(tái)服務(wù)無法使用;或者當(dāng)并發(fā)量真的非常大時(shí),達(dá)到十萬級(jí)別時(shí),一臺(tái)NGINX還是有極限的,所以這個(gè)時(shí)候就需要針對(duì)NGINX進(jìn)行主從備份保證服務(wù)高可用、集群來分擔(dān)并發(fā)壓力。目前,NGINX在這兩塊主要有以下幾種解決方案,我分別給大家介紹以下:

? NGINX主從備份

? NGINX實(shí)現(xiàn)主從備份目前主流方案是Keepalived+Nginx實(shí)現(xiàn)雙機(jī)熱備。

Keepalived介紹:

Keepalived是一個(gè)基于VRRP協(xié)議來實(shí)現(xiàn)的服務(wù)高可用方案,可以利用其來避免IP單點(diǎn)故障,類似的工具還有heartbeat、corosync、pacemaker。但是它一般不會(huì)單獨(dú)出現(xiàn),而是與其它負(fù)載均衡技術(shù)(如lvs、haproxy、nginx)一起工作來達(dá)到集群的高可用。

VRRP協(xié)議:

VRRP全稱 Virtual Router Redundancy Protocol,即 虛擬路由冗余協(xié)議。可以認(rèn)為它是實(shí)現(xiàn)路由器高可用的容錯(cuò)協(xié)議,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組(Router Group),這個(gè)組里面有一個(gè)master和多個(gè)backup,但在外界看來就像一臺(tái)一樣,構(gòu)成虛擬路由器,擁有一個(gè)虛擬IP(vip,也就是路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由),占有這個(gè)IP的master實(shí)際負(fù)責(zé)ARP相應(yīng)和轉(zhuǎn)發(fā)IP數(shù)據(jù)包,組中的其它路由器作為備份的角色處于待命狀態(tài)。master會(huì)發(fā)組播消息,當(dāng)backup在超時(shí)時(shí)間內(nèi)收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來選舉一個(gè)backup當(dāng)master,保證路由器的高可用。

在VRRP協(xié)議實(shí)現(xiàn)里,虛擬路由器使用 00-00-5E-00-01-XX 作為虛擬MAC地址,XX就是唯一的 VRID (Virtual Router IDentifier),這個(gè)地址同一時(shí)間只有一個(gè)物理路由器占用。在虛擬路由器里面的物理路由器組里面通過多播IP地址 224.0.0.18 來定時(shí)發(fā)送通告消息。每個(gè)Router都有一個(gè) 1-255 之間的優(yōu)先級(jí)別,級(jí)別最高的(highest priority)將成為主控(master)路由器。通過降低master的優(yōu)先權(quán)可以讓處于backup狀態(tài)的路由器搶占(pro-empt)主路由器的狀態(tài),兩個(gè)backup優(yōu)先級(jí)相同的IP地址較大者為master,接管虛擬IP。

具體實(shí)現(xiàn)原理:

1)Master沒掛,則Master占有vip且nginx運(yùn)行在Master上

2)Master掛了,則backup搶占vip且在backup上運(yùn)行nginx服務(wù)

3)如果master服務(wù)器上的nginx服務(wù)掛了,則vip資源轉(zhuǎn)移到backup服務(wù)器上

4)檢測(cè)后端服務(wù)器的健康狀態(tài)

Master和Backup兩邊都開啟nginx服務(wù),無論Master還是Backup,當(dāng)其中的一個(gè)keepalived服務(wù)停止后,vip都會(huì)漂移到keepalived服務(wù)還在的節(jié)點(diǎn)上

?nginx可以集群嗎

?NGINX和keepalived安裝配置

?它倆的安裝配置比較多,還有編寫腳本實(shí)現(xiàn)互相監(jiān)控、報(bào)警等,所以咱們專門放一課來講,這一課主要講解決方案和原理。

NGINX分布式集群

? 如果有多臺(tái)NGINX想實(shí)現(xiàn)負(fù)載均衡的話,

1、每臺(tái)nginx都有公網(wǎng)地址,在域名處設(shè)置同個(gè)域名多個(gè)指向,最簡單實(shí)現(xiàn)輪洵。但故障切負(fù)會(huì)慢一點(diǎn)。

2、一臺(tái)公網(wǎng)nginx通過upstream功能,輪洵、ip、url多方式分發(fā)到內(nèi)網(wǎng)多臺(tái)nginx。但公網(wǎng)的nginx如果down機(jī)的話,內(nèi)網(wǎng)全段。

3、一對(duì)公網(wǎng)nginx加三個(gè)公網(wǎng)ip,通過keepalive實(shí)現(xiàn)高可用,再upstream到內(nèi)網(wǎng)(就是我們剛剛上一節(jié)講的主從備份)。

一般來說,上面1、2、3種方法基本可以解決,建議用2或3;

如果并發(fā)量真的巨大的話,一般就要借助硬件F5等設(shè)備做負(fù)載均衡,跟DNS、CDN等服務(wù)商合作做域名解析轉(zhuǎn)發(fā)、緩存配置,這也是目前大多數(shù)大廠的架構(gòu)配置。

更多Nginx相關(guān)技術(shù)文章,請(qǐng)?jiān)L問Nginx使用教程欄目進(jìn)行學(xué)習(xí)!

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊9 分享