2. 實際運行的環境為藍或則綠,只能為其中之一,通過開關控制

優點和缺點分析:優點在于它的速度和回滾。而缺點也顯而易見。可以快速回滾是因為有兩套環境同時存在的緣故,所以復雜度和需要的資源會增多,因為其有兩套環境。
另外雖然速度有所提高,但是在實現的過程中,開關的控制,無論多快的切換速度,如果不結合其他的技術,還是無法做到完全無縫切換。

模擬藍綠部署

接下來我們使用nginx的upstream來簡單模擬一下藍綠部署的場景。具體場景如下, 當前活躍的是藍色版本,通過調整nginx設定,將綠色版本設定為當前活躍版本。

事前準備

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

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

執行日志

[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py Hello blue/green service: v1 in 7001
70c74dc8e43d5635983f7240deb63a3fc0599d5474454c3bc5197aa5c0017348
[root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py Hello blue/green service: v2 in 7002
6c5c2ea322d4ac17b90feefb96e3194ec8adecedaa4c944419316a2e4bf07117
[root@kong ~]# curl http://192.168.163.117:7001
Hello, Service :Hello blue/green service: v1 in 7001
[root@kong ~]# curl http://192.168.163.117:7002
Hello, Service :Hello blue/green service: v2 in 7002
[root@kong ~]#

啟動nginx

[root@kong ~]# docker run -p 9080:80 --name nginx-blue-green -d nginx
d3b7098c44890c15918dc47616b67e5e0eb0da7a443eac266dbf26d55049216a
[root@kong ~]# docker ps |grep nginx-blue-green
d3b7098c4489    nginx           nginx -g \\\'daemon ...  10 seconds ago    Up 9 seconds    0.0.0.0:9080->80/tcp   nginx-blue-green
[root@kong ~]#

nginx代碼段

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

http {
upstream nginx_blug_green {
  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_blug_green;
  }
}

修改default.conf的方法

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

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

修改前

# cat default.conf
server {
  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.conf
upstream nginx_blug_green {
  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_blug_green;
  }
  #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 reload
2018/05/28 04:39:47 [notice] 321#321: 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 blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
Hello, Service :Hello blue/green service: v1 in 7001
[root@kong ~]#

藍綠部署:切換到綠色版本

通過調整default.conf的weight,然后執行nginx -s reload的方式,在不停止nginx服務的方式下可動態的切換到綠色版本,目標將會將全部的流量都輸出v2 in 7002

修改default.conf的方法

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

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

重新加載nginx設定

# nginx -s reload
2018/05/28 05:01:28 [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 blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
Hello, Service :Hello blue/green service: v2 in 7002
[root@kong ~]#

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對三五互聯的支持。如果你想了解更多相關內容請查看下面相關鏈接

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » 使用nginx模擬進行藍綠部署的方式

登錄

找回密碼

注冊

主站蜘蛛池模板: 伊人色综合一区二区三区影院视频| 九九综合va免费看| 国产精品女人毛片在线看| 暖暖 免费 高清 日本 在线观看5| 一区二区三区放荡人妻| 十八禁国产精品一区二区| 国产精品白嫩初高生免费视频| 国产精品v片在线观看不卡| 国产精品免费无遮挡无码永久视频 | 国产在线精品一区二区中文| 亚洲国产精品日韩av专区| 久久99精品久久久久久9| 最近日本免费观看高清视频| 少妇人妻真实偷人精品| 中文字幕一区二区三区麻豆| 亚洲高清中文字幕在线看不卡| 中文字幕日韩有码av| 亚欧洲乱码视频在线专区| 和黑人中出一区二区三区| 亚洲av麻豆aⅴ无码电影| 四虎永久精品免费视频| 中文字幕乱码十国产乱码| 偷窥盗摄国产在线视频| 亚洲精品成人一二三专区| 亚洲热视频这里只有精品| 国产一区精品综亚洲av| 国产精品无码素人福利不卡| 国产一区二区三区九精品| 野花香视频在线观看免费高清版| 99久久精品费精品国产一区二| 久久国产精品波多野结衣| 一级国产在线观看高清| 丰满少妇69激情啪啪无| 久久99日韩国产精品久久99| 国产偷拍自拍视频在线观看| 少妇人妻偷人一区二区| 欧美一区内射最近更新| 羞羞影院午夜男女爽爽免费视频| 亚洲熟妇自偷自拍另欧美| 国产成人午夜福利精品| 国产精品一区二区不卡91|