自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何利用Nginx為系統(tǒng)構(gòu)筑發(fā)布前的最后一道防線

運(yùn)維 系統(tǒng)運(yùn)維
在項(xiàng)目發(fā)展的早期,為了簡(jiǎn)單方便,我們升級(jí)服務(wù)器端應(yīng)用,一般會(huì)先將應(yīng)用源碼或程序包上傳到服務(wù)器,然后再停掉老版本服務(wù),啟動(dòng)新版本服務(wù)。由于此時(shí),項(xiàng)目用戶少訪問(wèn)量小,這樣做通常不會(huì)有什么太大問(wèn)題。

[[312387]]

背景

在項(xiàng)目發(fā)展的早期,為了簡(jiǎn)單方便,我們升級(jí)服務(wù)器端應(yīng)用,一般會(huì)先將應(yīng)用源碼或程序包上傳到服務(wù)器,然后再停掉老版本服務(wù),啟動(dòng)新版本服務(wù)。由于此時(shí),項(xiàng)目用戶少訪問(wèn)量小,這樣做通常不會(huì)有什么太大問(wèn)題。但后面隨著項(xiàng)目越來(lái)越大,用戶越來(lái)越多,再這樣做你會(huì)發(fā)現(xiàn)存在兩個(gè)明顯的問(wèn)題。

1、在新版本升級(jí)過(guò)程中,服務(wù)是暫時(shí)中斷的,在這期間,服務(wù)將不可使用。

2、如果新版本有BUG,升級(jí)失敗,回滾起來(lái)將非常麻煩,容易造成更長(zhǎng)時(shí)間的服務(wù)不可用。

為了解決上面這些問(wèn)題,人們研究出了很多發(fā)布策略,如藍(lán)綠發(fā)布、滾動(dòng)發(fā)布等,下面要講的灰度發(fā)布也是其中之一。

什么是灰度發(fā)布

灰度發(fā)布也叫金絲雀發(fā)布,其原理如下圖所示:

 

「系統(tǒng)架構(gòu)」如何利用nginx為系統(tǒng)構(gòu)筑發(fā)布前的<span><span><span><i style=最后一道防線" src="http://p1.pstatp.com/large/pgc-image/6315b9822fb3472199a9e4dec8c42146" width="640" height="312">

 

用文字描述即在灰度發(fā)布開始后,我們會(huì)先啟動(dòng)一個(gè)新版本應(yīng)用V2,但是此時(shí)并不直接將流量切過(guò)來(lái),而是先讓測(cè)試人員對(duì)新版本進(jìn)行線上測(cè)試。如果測(cè)試沒(méi)有問(wèn)題,那么就將少量的(如圖中的5%)用戶流量導(dǎo)入到新版本上,然后再對(duì)新版本做運(yùn)行狀態(tài)觀察,收集各種運(yùn)行時(shí)數(shù)據(jù)。當(dāng)確認(rèn)新版本運(yùn)行良好后,再逐步將更多的流量導(dǎo)入到新版本上。

在此期間,我們可以不斷地調(diào)整新舊兩個(gè)版本的運(yùn)行的服務(wù)器副本數(shù)量,以使得新版本能夠承受越來(lái)越大的流量壓力。當(dāng)最后我們將100%的流量都切換到新版本上后,就可以關(guān)閉剩下的老版本服務(wù),完成灰度發(fā)布。

另外,如果在灰度發(fā)布過(guò)程中發(fā)現(xiàn)新版本有問(wèn)題,我們可以立即將流量切回老版本上,這樣,可以將負(fù)面影響控制在最小范圍內(nèi)。

如何實(shí)現(xiàn)灰度發(fā)布

實(shí)現(xiàn)灰度發(fā)布有多種方式,但總結(jié)起來(lái)有三類

  1. 基于IP
  2. 基于COOKIE
  3. 基于權(quán)重

如下是利用nginx對(duì)這三類的實(shí)現(xiàn)。

1、基于IP

我們利用LUA,先獲取客戶端IP,然后通過(guò)判斷客戶端IP的類型,來(lái)判斷應(yīng)該選擇訪問(wèn)什么服務(wù)器。如果是客戶端IP為公司出口IP,則反向代理到@client;如果不是,則反向代理到@client_test。如下:

 

「系統(tǒng)架構(gòu)」如何利用nginx為系統(tǒng)構(gòu)筑發(fā)布前的<span><span><span><i style=最后一道防線" src="http://p3.pstatp.com/large/pgc-image/278f6501b71e4636a5230f9efaaf5a11" width="640" height="1143">

 

2、基于Cookie

我們先定義三個(gè)upstream,tts_v6、tts_v7和default,然后查詢Cookie鍵為version的值,如果該Cookie值為tts1,則轉(zhuǎn)發(fā)到tts_v6;如果該Cookie值為tts2,則轉(zhuǎn)發(fā)到tts_v7;如果該Cookie值既不是tts1,也不是tts2,則默認(rèn)走default所對(duì)應(yīng)的服務(wù)器。如下:

 

「系統(tǒng)架構(gòu)」如何利用nginx為系統(tǒng)構(gòu)筑發(fā)布前的<span><span><span><i style=最后一道防線" src="http://p1.pstatp.com/large/pgc-image/6316eadd9c9f419ab479bc583541c173" width="640" height="716">

 

其中,192.168.3.81:5380所指向的服務(wù)器為運(yùn)行新功能的服務(wù)器。

3、基于權(quán)重

我們定義一個(gè)upstream,設(shè)置三個(gè)服務(wù)器IP,其權(quán)重分別為5,3,1。我們先把新功能部署在權(quán)重為1的服務(wù)器上,然后使用ip_hash進(jìn)行負(fù)載均衡。待權(quán)重為1的服務(wù)器運(yùn)行沒(méi)有問(wèn)題后,就將新功能部署到權(quán)重為3的服務(wù)器。如此重復(fù)操作,最后將新功能部署到所有服務(wù)器上。如下:

 

「系統(tǒng)架構(gòu)」如何利用nginx為系統(tǒng)構(gòu)筑發(fā)布前的<span><span><span><i style=最后一道防線" src="http://p1.pstatp.com/large/pgc-image/76629d95ba634cd984127e3d8066d4af" width="640" height="667">

 

總結(jié)

灰度發(fā)布雖然操作復(fù)雜,但在一定程度上保證了系統(tǒng)的安全與穩(wěn)定。隨著項(xiàng)目的不斷發(fā)展,系統(tǒng)穩(wěn)定越來(lái)越比完善功能更加重要。從長(zhǎng)遠(yuǎn)來(lái)看,使用灰度發(fā)布利大于弊。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2011-08-18 09:33:23

2024-03-18 13:32:11

2022-04-08 14:50:37

存儲(chǔ)零信任安全

2017-11-15 09:22:58

容災(zāi)備份信息安全

2017-08-27 12:40:43

信息安全容災(zāi)備份網(wǎng)絡(luò)安全

2021-12-21 15:16:55

數(shù)據(jù)備份

2022-09-26 10:54:43

Veeam

2020-08-07 11:23:31

網(wǎng)絡(luò)安全人工智能數(shù)據(jù)

2022-06-10 09:39:48

云原生節(jié)點(diǎn)水位線

2021-03-12 15:10:00

UI驗(yàn)收交互驗(yàn)收

2024-04-18 08:00:00

2018-03-14 07:42:48

2011-08-10 17:08:09

2010-09-14 09:41:12

2019-11-12 12:34:15

人工智能機(jī)器學(xué)習(xí)技術(shù)

2015-03-27 18:46:05

2021-06-28 16:18:56

戴爾

2024-10-30 12:07:44

2011-03-30 20:43:28

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)