灰度環境發佈策略

灰度發佈是指在黑與白之間,可以平滑過渡的一種發佈方式。AB test就是一種灰度發佈方式,讓一部分用戶繼續用A,一部分用戶開始用B,若是用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把全部用戶都遷移到B上面 來。灰度發佈能夠保證總體系統的穩定,在初始灰度的時候就能夠發現、調整問題,以保證其影響度。
灰度發佈通常有三種方式 nginx+lua,nginx根據cookie分流,nginx 根據權重來分配
nginx+lua根據來訪者ip地址區分,因爲公司出口是一個ip地址,會出現訪問網站要麼都是老版,要麼都是新版,採用這種方式並不適合
nginx 根據權重來分配,實現很簡單,也能夠嘗試
nginx根據cookie分流,灰度發佈基於用戶才更合理

兩臺服務器分別定義爲
tts_V6  192.168.3.81:5280
tts_V7  192.168.3.81:5380

默認服務器爲:
default:192.168.3.81:5280

前端nginx服務器監聽端口80,須要根據cookie轉發,查詢的cookie的鍵(key)爲tts_version_id(該鍵由開發負責增長),若是該cookie值(value)爲tts1則轉發到tts_V6,爲tts2則轉發到tts_V7。

upstream tts_V6 {
        server 192.168.3.81:5280 max_fails=1 fail_timeout=60;
}
upstream tts_V7 {
       server 192.168.3.81:5380 max_fails=1 fail_timeout=60;
}
upstream default {
        server 192.168.3.81:5280 max_fails=1 fail_timeout=60;
}
server {
        listen 80;
        server_name  test.taotaosou.com;
       access_log  logs/test.taotaosou.com.log  main buffer=32k;
        #match cookie
        set $group "default";
        if ($http_cookie ~* "tts_version_id=tts1"){
                set $group tts_V6;
        }
        if ($http_cookie ~* "tts_version_id=tts2"){
                set $group tts_V7;
        }
        location / {                       
                proxy_pass http://$group;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                index  index.html index.htm;
       }html

 }前端

相關文章
相關標籤/搜索