欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Nginx實現(xiàn)灰度發(fā)布的使用

 更新時間:2020年03月30日 09:11:30   作者:weifengCorp  
這篇文章主要介紹了使用Nginx實現(xiàn)灰度發(fā)布的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。AB test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來。

灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。

灰度發(fā)布常見一般有三種方式:

  • Nginx+LUA方式
  • 根據(jù)Cookie實現(xiàn)灰度發(fā)布
  • 根據(jù)來路IP實現(xiàn)灰度發(fā)布

本文主要將講解根據(jù)Cookie和來路IP這兩種方式實現(xiàn)簡單的灰度發(fā)布,Nginx+LUA這種方式涉及內(nèi)容太多就不再本文展開了。

A/B測試流程

Nginx根據(jù)Cookie實現(xiàn)灰度發(fā)布

根據(jù)Cookie查詢Cookie鍵為version的值,如果該Cookie值為V1則轉(zhuǎn)發(fā)到hilinux_01,為V2則轉(zhuǎn)發(fā)到hilinux_02。Cookie值都不匹配的情況下默認走hilinux_01所對應(yīng)的服務(wù)器。

兩臺服務(wù)器分別定義為:

  • hilinux_01  192.168.1.100:8080
  • hilinux_02  192.168.1.200:8080

用if指令實現(xiàn)

upstream hilinux_01 {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

upstream hilinux_02 {
  server 192.168.1.200:8080 max_fails=1 fail_timeout=60;
}

upstream default {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

server {
 listen 80;
 server_name www.hi-linux.com;
 access_log logs/www.hi-linux.com.log main;

 #match cookie
 set $group "default";
  if ($http_cookie ~* "version=V1"){
    set $group hilinux_01;
  }

  if ($http_cookie ~* "version=V2"){
    set $group hilinux_02;
  }

 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;
 }
 }

用map指令實現(xiàn)

在Nginx里面配置一個映射,$COOKIE_version可以解析出Cookie里面的version字段。$group是一個變量,{}里面是映射規(guī)則。

如果一個version為V1的用戶來訪問,$group就等于hilinux_01。在server里面使用就會代理到http://hilinux_01上。version為V2的用戶來訪問,$group就等于hilinux_02。在server里面使用就會代理到http://hilinux_02上。Cookie值都不匹配的情況下默認走hilinux_01所對應(yīng)的服務(wù)器。

upstream hilinux_01 {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

upstream hilinux_02 {
  server 192.168.1.200:8080 max_fails=1 fail_timeout=60;
}

upstream default {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

map $COOKIE_version $group {
~*V1$ hilinux_01;
~*V2$ hilinux_02;
default default;
}

server {
 listen 80;
 server_name www.hi-linux.com;
 access_log logs/www.hi-linux.com.log main;

 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;
 }
 }

Nginx根據(jù)來路IP實現(xiàn)灰度發(fā)布

如果是內(nèi)部IP,則反向代理到hilinux_02(預(yù)發(fā)布環(huán)境);如果不是則反向代理到hilinux_01(生產(chǎn)環(huán)境)。

upstream hilinux_01 {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

upstream hilinux_02 {
  server 192.168.1.200:8080 max_fails=1 fail_timeout=60;
}

upstream default {
  server 192.168.1.100:8080 max_fails=1 fail_timeout=60;
}

server {
 listen 80;
 server_name www.hi-linux.com;
 access_log logs/www.hi-linux.com.log main;

 set $group default;
 if ($remote_addr ~ "211.118.119.11") {
   set $group hilinux_02;
 }

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;
 }
}

如果你只有單臺服務(wù)器,可以根據(jù)不同的IP設(shè)置不同的網(wǎng)站根目錄來達到相同的目的。

server {
 listen 80;
 server_name www.hi-linux.com;
 access_log logs/www.hi-linux.com.log main;

 set $rootdir "/var/www/html";
  if ($remote_addr ~ "211.118.119.11") {
    set $rootdir "/var/www/test";
  }

  location / {
   root $rootdir;
  }
}

到此最基本的實現(xiàn)灰度發(fā)布方法就講解完了,如果要做更細粒度灰度發(fā)布可參考ABTestingGateway項目。

ABTestingGateway是新浪開源的一個動態(tài)路由系統(tǒng)。ABTestingGateway是一個可以動態(tài)設(shè)置分流策略的灰度發(fā)布系統(tǒng),工作在7層,基于nginx和ngx-lua開發(fā),使用redis作為分流策略數(shù)據(jù)庫,可以實現(xiàn)動態(tài)調(diào)度功能。

ABTestingGateway:https://github.com/CNSRE/ABTestingGateway

參考文檔
http://www.google.com
http://www.jianshu.com/p/88f206f48278
http://blog.chinaunix.net/uid-531464-id-4140473.html

到此這篇關(guān)于使用Nginx實現(xiàn)灰度發(fā)布的使用的文章就介紹到這了,更多相關(guān)Nginx 灰度發(fā)布內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx?504?Gateway?Time-out的兩種最新解決方案

    Nginx?504?Gateway?Time-out的兩種最新解決方案

    大家在訪問網(wǎng)站的時候通常會遇到502錯誤、404錯誤等,很少會遇到504錯誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時,打開網(wǎng)頁偶爾就會出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下
    2022-08-08
  • Nginx限制搜索引擎爬蟲頻率、禁止屏蔽網(wǎng)絡(luò)爬蟲配置示例

    Nginx限制搜索引擎爬蟲頻率、禁止屏蔽網(wǎng)絡(luò)爬蟲配置示例

    這篇文章主要介紹了Nginx限制搜索引擎爬蟲頻率、禁止屏蔽網(wǎng)絡(luò)爬蟲配置示例,限制爬蟲頻率用于一些無良爬蟲,禁止爬蟲用于一些不需要收錄的網(wǎng)站,需要的朋友可以參考下
    2014-07-07
  • 504?Gateway?Timeout網(wǎng)關(guān)超時詳細解決方法

    504?Gateway?Timeout網(wǎng)關(guān)超時詳細解決方法

    這篇文章主要介紹了504?Gateway?Timeout網(wǎng)關(guān)超時詳細解決方法的相關(guān)資料,504GatewayTimeout是HTTP狀態(tài)碼,表示網(wǎng)關(guān)或代理服務(wù)器在等待上游服務(wù)器響應(yīng)時超時,常見觸發(fā)場景包括Nginx超時、后端性能問題、網(wǎng)絡(luò)延遲和服務(wù)器資源耗盡,需要的朋友可以參考下
    2025-02-02
  • ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)

    ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)

    configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對應(yīng)的ENV環(huán)境變量不會更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié),感興趣的朋友一起看看吧
    2024-03-03
  • 為Nginx動態(tài)添加模塊的方法

    為Nginx動態(tài)添加模塊的方法

    這篇文章主要介紹了為Nginx動態(tài)添加模塊的方法,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Nginx配置https過程中出現(xiàn)的問題與解決

    Nginx配置https過程中出現(xiàn)的問題與解決

    這篇文章主要為大家詳細介紹在Nginx配置https過程中容易出現(xiàn)的問題與解決方法,文中有詳細的圖文介紹,具有一定的參考價值,需要的朋友可以參考下
    2023-06-06
  • 簡單快速搭建Nginx文件服務(wù)器

    簡單快速搭建Nginx文件服務(wù)器

    這篇文章主要為大家介紹了簡單快速搭建Nginx文件服務(wù)器方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Linux配置nginx腳本的操作方法

    Linux配置nginx腳本的操作方法

    正常來說,配置nginx相對來說比較麻煩,這里寫一個sh腳本,可以之間完成相關(guān)的操作,其中包括,換 nginx的源,加載nginx前置的依賴,同樣包含nginx的conf文件配置,這篇文章主要介紹了Linux配置nginx腳本的操作方法,需要的朋友可以參考下
    2024-05-05
  • nginx配置返回文本或json的方法

    nginx配置返回文本或json的方法

    有些時候請求某些接口的時候需要返回指定的文本字符串或者json字符串,這篇文章主要介紹了nginx配置返回文本或json的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解

    這篇文章主要介紹了Nginx服務(wù)器中配置非80端口的端口轉(zhuǎn)發(fā)方法詳解,文中使用到了Nginx中的proxy_pass配置項,需要的朋友可以參考下
    2016-04-04

最新評論