為什么做網(wǎng)站越早越好軍事新聞最新消息今天
一、Nginx的高可用
? ?線上如果采用單個(gè)節(jié)點(diǎn)的方式部署Nginx
,難免會(huì)出現(xiàn)天災(zāi)人禍,比如系統(tǒng)異常、程序宕機(jī)、服務(wù)器斷電、機(jī)房爆炸、地球毀滅....哈哈哈,夸張了。但實(shí)際生產(chǎn)環(huán)境中確實(shí)存在隱患問題,由于Nginx
作為整個(gè)系統(tǒng)的網(wǎng)關(guān)層接入外部流量,所以一旦Nginx
宕機(jī),最終就會(huì)導(dǎo)致整個(gè)系統(tǒng)不可用,這無疑對(duì)于用戶的體驗(yàn)感是極差的,因此也得保障Nginx
高可用的特性。
接下來則會(huì)通過
keepalived
的VIP
機(jī)制,實(shí)現(xiàn)Nginx
的高可用。VIP
并不是只會(huì)員的意思,而是指Virtual IP
,即虛擬IP
。
keepalived
在之前單體架構(gòu)開發(fā)時(shí),是一個(gè)用的較為頻繁的高可用技術(shù),比如MySQL、Redis、MQ、Proxy、Tomcat
等各處都會(huì)通過keepalived
提供的VIP
機(jī)制,實(shí)現(xiàn)單節(jié)點(diǎn)應(yīng)用的高可用。
Keepalived+重啟腳本+雙機(jī)熱備搭建
具體青請(qǐng)參考,在上篇《深入淺出 -- 系統(tǒng)架構(gòu)之Keepalived搭建雙機(jī)熱備》中通過keepalived如何
搭建了主從雙機(jī)熱備。
Nginx高可用性測(cè)試
? ?經(jīng)過上述步驟后,keepalived
的VIP
機(jī)制已經(jīng)搭建成功,在上個(gè)階段中主要做了幾件事:
- 一、為部署
Nginx
的機(jī)器掛載了VIP
。 - 二、通過
keepalived
搭建了主從雙機(jī)熱備。 - 三、通過
keepalived
實(shí)現(xiàn)了Nginx
宕機(jī)重啟。
由于前面沒有域名的原因,因此最初server_name
配置的是當(dāng)前機(jī)器的IP
,所以需稍微更改一下nginx.conf
的配置:
sever{listen 80;# 這里從機(jī)器的本地IP改為虛擬IPserver_name 192.168.12.111;# 如果這里配置的是域名,那么則將域名的映射配置改為虛擬IP
}
最后來實(shí)驗(yàn)一下效果:
在上述過程中,首先分別啟動(dòng)了
keepalived、nginx
服務(wù),然后通過手動(dòng)停止nginx
的方式模擬了Nginx
宕機(jī)情況,過了片刻后再次查詢后臺(tái)進(jìn)程,我們會(huì)發(fā)現(xiàn)nginx
依舊存活。
從這個(gè)過程中不難發(fā)現(xiàn),keepalived
已經(jīng)為我們實(shí)現(xiàn)了Nginx
宕機(jī)后自動(dòng)重啟的功能,那么接著再模擬一下服務(wù)器出現(xiàn)故障時(shí)的情況:
在上述過程中,我們通過手動(dòng)關(guān)閉
keepalived
服務(wù)模擬了機(jī)器斷電、硬件損壞等情況(因?yàn)闄C(jī)器斷電等情況=主機(jī)中的keepalived
進(jìn)程消失),然后再次查詢了一下本機(jī)的IP
信息,很明顯會(huì)看到VIP
消失了!
現(xiàn)在再切換到另外一臺(tái)機(jī)器:192.168.12.130
來看看情況:
此刻我們會(huì)發(fā)現(xiàn),在主機(jī)
192.168.12.129
宕機(jī)后,VIP自動(dòng)從主機(jī)飄移到了從機(jī)192.168.12.130
上,而此時(shí)客戶端的請(qǐng)求就最終會(huì)來到130
這臺(tái)機(jī)器的Nginx
上。
最終,利用Keepalived
對(duì)Nginx
做了主從熱備之后,無論是遇到線上宕機(jī)還是機(jī)房斷電等各類故障時(shí),都能夠確保應(yīng)用系統(tǒng)能夠?yàn)橛脩籼峁?code>7x24小時(shí)服務(wù)。