亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

使用nginx模擬進行金絲雀發布的方式

2024-08-30 12:30:08
字體:
來源:轉載
供稿:網友

這篇文章介紹一下藍綠部署以及使用nginx如何最簡單地模擬一下金絲雀發布的方式

金絲雀發布/灰度發布

金絲雀發布的重點在于:試錯。金絲雀發布的來歷本身就是自然界的美麗生物在人類工業發展過程中的一個悲慘的故事。金絲雀就是用它的生命來為礦工的安全來試錯的。用很小的成本來換取整體的安全,在持續部署的實踐中,金絲雀就是流量控制,用很少的流量比如百分之一或者十分之一用于檢證某個版本是否正常,如果不正常則就用最低的成本實現了其作用,降低了風險。如果正常,則可以逐漸加大權重直至百分之百,將所有的流量都平穩地切換至新的版本?;叶劝l布,一般來說也是類似的概念。灰色是介于黑和白之前的一個過渡,區別于藍綠部署的非藍即綠,灰度發布/金絲雀發布會有一個兩者同時存在的時間段,只是兩者對應的流量不同,金絲雀發布如果說和灰度發布有所不同的話,其不同點應該是目的性的不同,金絲雀發布目的在于試錯,而灰度發布在于平穩發布,而在金絲雀發布沒有問題的狀況下進行的平穩過渡則正是灰度發布。

模擬金絲雀發布

接下來我們使用nginx的upstream來簡單模擬一下金絲雀發布的場景。具體場景如下, 當前活躍的是主版本,通過調整nginx設定,通過不斷的調節金絲雀版本的權重,最終實現平穩地發布。

nginx,模擬,金絲雀,發布

事前準備

事前在7001/7002兩個端口分別啟動兩個服務,用于顯示不同信息,為了演示方便,使用tornado做了一個鏡像,通過docker容器啟動時傳遞的參數不同用于顯示服務的不同。

docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello main service: v1 in 7001"docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello canary deploy service: v2 in 7002"

執行日志

[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello main service: v1 in 7001"28f42bbd21146c520b05ff2226514e62445b4cdd5d82f372b3791fdd47cd602a[root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "Hello canary deploy service: v2 in 7002"b86c4b83048d782fadc3edbacc19b73af20dc87f5f4cf37cf348d17c45f0215d[root@kong ~]# curl http://192.168.163.117:7001Hello, Service :Hello main service: v1 in 7001[root@kong ~]# curl http://192.168.163.117:7002Hello, Service :Hello canary deploy service: v2 in 7002[root@kong ~]#

啟動nginx

[root@kong ~]# docker run -p 9080:80 --name nginx-canary -d nginx659f15c4d006df6fcd1fab1efe39e25a85c31f3cab1cda67838ddd282669195c[root@kong ~]# docker ps |grep nginx-canary659f15c4d006    nginx           "nginx -g 'daemon ..."  7 seconds ago    Up 7 seconds    0.0.0.0:9080->80/tcp   nginx-canary[root@kong ~]#

nginx代碼段

準備如下nginx代碼段將其添加到nginx的/etc/nginx/conf.d/default.conf中, 模擬方式很簡單,通過down來表示流量為零(nginx中無法將weight設置為零),開始的時候100%的流量都發到主版本。

http {upstream nginx_canary {  server 192.168.163.117:7001 weight=100;  server 192.168.163.117:7002 down;}server {  listen    80;  server_name www.liumiao.cn 192.168.163.117;  location / {    proxy_pass http://nginx_canary;  }}

修改default.conf的方法

可以通過在容器中安裝vim達到效果,也可以在本地修改然后通過docker cp傳入,或者直接sed修改都可。如果在容器中安裝vim,使用如下方式即可

[root@kong ~]# docker exec -it nginx-lb sh# apt-get update...省略# apt-get install vim...省略

修改前

# cat default.confserver {  listen    80;  server_name localhost;  #charset koi8-r;  #access_log /var/log/nginx/host.access.log main;  location / {    root  /usr/share/nginx/html;    index index.html index.htm;  }  #error_page 404       /404.html;  # redirect server error pages to the static page /50x.html  #  error_page  500 502 503 504 /50x.html;  location = /50x.html {    root  /usr/share/nginx/html;  }  # proxy the PHP scripts to Apache listening on 127.0.0.1:80  #  #location ~ /.php$ {  #  proxy_pass  http://127.0.0.1;  #}  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  #  #location ~ /.php$ {  #  root      html;  #  fastcgi_pass  127.0.0.1:9000;  #  fastcgi_index index.php;  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;  #  include    fastcgi_params;  #}  # deny access to .htaccess files, if Apache's document root  # concurs with nginx's one  #  #location ~ //.ht {  #  deny all;  #}}#

修改后

# cat default.confupstream nginx_canary {  server 192.168.163.117:7001 weight=100;  server 192.168.163.117:7002 down;}server {  listen    80;  server_name www.liumiao.cn 192.168.163.117;  #charset koi8-r;  #access_log /var/log/nginx/host.access.log main;  location / {    #root  /usr/share/nginx/html;    #index index.html index.htm;    proxy_pass http://nginx_canary;  }  #error_page 404       /404.html;  # redirect server error pages to the static page /50x.html  #  error_page  500 502 503 504 /50x.html;  location = /50x.html {    root  /usr/share/nginx/html;  }  # proxy the PHP scripts to Apache listening on 127.0.0.1:80  #  #location ~ /.php$ {  #  proxy_pass  http://127.0.0.1;  #}  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  #  #location ~ /.php$ {  #  root      html;  #  fastcgi_pass  127.0.0.1:9000;  #  fastcgi_index index.php;  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;  #  include    fastcgi_params;  #}  # deny access to .htaccess files, if Apache's document root  # concurs with nginx's one  #  #location ~ //.ht {  #  deny all;  #}}#

重新加載nginx設定

# nginx -s reload2018/05/28 05:16:20 [notice] 319#319: signal process started#

確認結果

10次調用全部輸出的都是v1 in 7001

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl http://localhost:9080; let cnt++; done
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello main service: v1 in 7001
[root@kong ~]#

金絲雀發布: 金絲雀版本流量權重10%

通過調整default.conf的weight,然后執行nginx -s reload的方式,調節金絲雀版本的權重為10%,流量的10%會執行新的服務

修改default.conf的方法

只需要將upstream中的server的權重做如下調整:

upstream nginx_canary {  server 192.168.163.117:7001 weight=10;  server 192.168.163.117:7002 weight=90;}

重新加載nginx設定

# nginx -s reload2018/05/28 05:20:14 [notice] 330#330: signal process started#

確認結果

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl http://localhost:9080; let cnt++; done
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
[root@kong ~]#

金絲雀發布: 金絲雀版本流量權重50%

通過調整default.conf的weight,然后執行nginx -s reload的方式,調節金絲雀版本的權重為50%,流量的50%會執行新的服務

修改default.conf的方法

只需要將upstream中的server的權重做如下調整:

upstream nginx_canary {  server 192.168.163.117:7001 weight=50;  server 192.168.163.117:7002 weight=50;}

重新加載nginx設定

# nginx -s reload2018/05/28 05:22:26 [notice] 339#339: signal process started#

確認結果

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl http://localhost:9080; let cnt++; done
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
[root@kong ~]#

金絲雀發布: 金絲雀版本流量權重90%

通過調整default.conf的weight,然后執行nginx -s reload的方式,調節金絲雀版本的權重為90%,流量的90%會執行新的服務

修改default.conf的方法

只需要將upstream中的server的權重做如下調整:

upstream nginx_canary {  server 192.168.163.117:7001 weight=10;  server 192.168.163.117:7002 weight=90;}

重新加載nginx設定

# nginx -s reload2018/05/28 05:24:29 [notice] 346#346: signal process started#

確認結果

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl http://localhost:9080; let cnt++; done
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello main service: v1 in 7001
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
[root@kong ~]#

金絲雀發布: 金絲雀版本流量權重100%

通過調整default.conf的weight,然后執行nginx -s reload的方式,調節金絲雀版本的權重為100%,流量的100%會執行新的服務

修改default.conf的方法

只需要將upstream中的server的權重做如下調整:

upstream nginx_canary {  server 192.168.163.117:7001 down;  server 192.168.163.117:7002 weight=100;}

重新加載nginx設定

# nginx -s reload2018/05/28 05:26:37 [notice] 353#353: signal process started

確認結果

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl http://localhost:9080; let cnt++; done
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
Hello, Service :Hello canary deploy service: v2 in 7002
[root@kong ~]#

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久小说| 91九色国产在线| 久久福利网址导航| 亚洲午夜久久久久久久| 国产精品主播视频| 日韩风俗一区 二区| 最近中文字幕2019免费| 91chinesevideo永久地址| 亚洲最大的av网站| 欧美丰满少妇xxxxx做受| 色婷婷综合久久久久| 黄网动漫久久久| 另类专区欧美制服同性| 日韩电影网在线| 国产亚洲精品日韩| 国内伊人久久久久久网站视频| 国产精品视频xxx| 欧美激情免费观看| 中文日韩在线视频| 免费91在线视频| 日韩av最新在线观看| 欧美精品福利视频| 久久免费少妇高潮久久精品99| 91久久精品国产| 成人免费福利视频| 国产拍精品一二三| 中文字幕av日韩| 久久精品视频免费播放| 久久精品99久久久久久久久| 亚洲a成v人在线观看| 亚洲视频第一页| 国产欧美日韩91| 精品露脸国产偷人在视频| 亚洲精品电影在线观看| 日韩免费av一区二区| 国产精品入口夜色视频大尺度| 久久国产精彩视频| 亚洲第一页自拍| 欧美性开放视频| 欧美精品激情在线观看| 欧美日韩免费观看中文| 97在线免费观看视频| 久久人人爽国产| 久久久久久久一区二区三区| 国产成人精品视频在线观看| 亚洲精品国产精品国自产观看浪潮| 日韩中文字幕视频| 国产精品一区二区三区免费视频| 国产精品∨欧美精品v日韩精品| 日韩欧美中文免费| 久久久久久久久网站| 亚洲国产日韩欧美在线99| 久久全球大尺度高清视频| 欧美另类高清videos| 欧美亚洲国产日本| 国产精品成人在线| 黄网动漫久久久| 97视频在线免费观看| 亚洲香蕉在线观看| 亚洲区中文字幕| 欧美成人免费全部观看天天性色| 日韩av在线免费看| 久久资源免费视频| 成人午夜在线视频一区| 992tv在线成人免费观看| 国产欧美精品va在线观看| 欧美野外猛男的大粗鳮| 欧美国产第二页| 成人在线视频网站| 中文字幕v亚洲ⅴv天堂| 欧美另类xxx| 欧美大尺度在线观看| 亚洲视频在线观看| 亚洲精品日韩在线| 欧美性20hd另类| 亚洲片在线资源| 日韩av在线免费观看| 国产精品91在线观看| 精品久久久久久中文字幕| 美女久久久久久久久久久| 日韩成人网免费视频| 国产专区欧美专区| 国产盗摄xxxx视频xxx69| 欧美久久精品一级黑人c片| 久久久久久国产精品三级玉女聊斋| 一区二区三区四区精品| 精品网站999www| 日韩欧美精品网站| 亚洲在线一区二区| 欧美小视频在线观看| 亚洲成人av片| 97精品久久久中文字幕免费| 亚洲第一网站男人都懂| 国产一区av在线| 欧美极品美女视频网站在线观看免费| 欧美日本中文字幕| 久久69精品久久久久久久电影好| 草民午夜欧美限制a级福利片| 一区二区三区动漫| 一区二区三区回区在观看免费视频| 日韩小视频在线| 国产成人精品a视频一区www| 欧美乱大交做爰xxxⅹ性3| 国产成人精品免费视频| 欧美成人三级视频网站| 国产日本欧美视频| 亚洲最大福利视频网| 91精品久久久久久久久不口人| 亚洲国产精品成人一区二区| 亚洲免费电影在线观看| 国产综合在线观看视频| 亚洲激情视频网| 91免费国产视频| 国产一区二区激情| 狠狠躁夜夜躁久久躁别揉| 久久久国产一区二区| 国产精品久久久久高潮| 国产精品88a∨| 国产黑人绿帽在线第一区| 最近免费中文字幕视频2019| 欧美大奶子在线| 日韩成人激情视频| 北条麻妃久久精品| 欧美一级淫片aaaaaaa视频| 在线观看中文字幕亚洲| 国产自产女人91一区在线观看| 欧美激情日韩图片| 97视频免费看| 中文字幕日韩视频| 国产精品99蜜臀久久不卡二区| 亚洲福利在线视频| 中文字幕久精品免费视频| 视频在线观看一区二区| 81精品国产乱码久久久久久| wwwwwwww亚洲| 国产成人亚洲综合91精品| 7m精品福利视频导航| 久久中文精品视频| 理论片在线不卡免费观看| 北条麻妃一区二区在线观看| 亚洲精品久久久久中文字幕欢迎你| 久久乐国产精品| 精品久久久久久久久国产字幕| 热门国产精品亚洲第一区在线| 亚洲成人a级网| 成人网页在线免费观看| 热门国产精品亚洲第一区在线| 久久深夜福利免费观看| 欧美美女操人视频| 91精品国产综合久久男男| 国产精品视频免费观看www| 在线观看日韩欧美| 国产精品美女无圣光视频| 久久久久免费精品国产| 91精品国产777在线观看| 国产精品一二区| 国产成人亚洲综合青青| 中文字幕av一区二区三区谷原希美| 成人免费在线网址| 亚洲天堂av在线免费| 欧美成aaa人片免费看| 亚洲一级黄色av| 18一19gay欧美视频网站| 亚洲美女av电影|