Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan simulasi nginx untuk penggunaan biru-hijau

Cara menggunakan simulasi nginx untuk penggunaan biru-hijau

WBOY
WBOYke hadapan
2023-06-03 12:31:03897semak imbas

Pengaturan biru-hijau

Tumpuan penggunaan biru-hijau terletak pada ciri berikut

  • Versi biru dan hijau wujud pada masa yang sama

  • 2 Persekitaran larian sebenar adalah biru atau hijau, ia hanya boleh menjadi salah satu daripadanya, dikawal oleh suis

<.>
Analisis Kelebihan dan Kekurangan: Kelebihannya ialah kelajuan dan pengembaliannya. Dan kelemahannya juga jelas. Pemulihan pantas adalah mungkin kerana dua set persekitaran wujud pada masa yang sama, jadi kerumitan dan sumber yang diperlukan akan meningkat kerana terdapat dua set persekitaran.

Walaupun kelajuan telah dipertingkatkan, dalam proses pelaksanaan, kawalan suis, tidak kira seberapa pantas kelajuan pensuisan, masih tidak dapat mencapai pensuisan yang lancar sepenuhnya tanpa menggabungkan teknologi lain.

Simulasikan penggunaan biru-hijau

Seterusnya, kami menggunakan huluan nginx untuk mensimulasikan senario penggunaan biru-hijau sahaja. Senario khusus adalah seperti berikut Versi biru sedang aktif Dengan melaraskan tetapan nginx, versi hijau ditetapkan sebagai versi yang sedang aktif.

Cara menggunakan simulasi nginx untuk penggunaan biru-hijau

Persediaan lebih awal

Mulakan dua perkhidmatan pada dua port 7001/7002 lebih awal untuk memaparkan maklumat yang berbeza mudah. ​​Saya menggunakan puting beliung untuk membuat imej Parameter berbeza yang diluluskan semasa memulakan bekas docker digunakan untuk memaparkan perbezaan dalam perkhidmatan.

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"

Log pelaksanaan

[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 ~]#

Mulakan 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 &#39;daemon ..."  10 seconds ago    up 9 seconds    0.0.0.0:9080->80/tcp   nginx-blue-green
[root@kong ~]#

coretan kod nginx Sediakan coretan kod nginx berikut dan tambahkannya pada /etc/nginx/conf.d/default.conf of nginx Kaedah simulasi adalah sangat mudah untuk menunjukkan bahawa trafik adalah sifar dalam nginx). Pada mulanya, 100% trafik telah dihantar ke versi biru.

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

Cara mengubah suai default.conf

Anda boleh mencapai kesan dengan memasang vim dalam bekas, anda juga boleh mengubah suainya secara setempat dan menghantarnya melalui cp docker , atau secara langsung sed Pengubahsuaian boleh dilakukan. Jika anda memasang vim dalam bekas, gunakan kaedah berikut

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

Sebelum pengubahsuaian

# 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&#39;s document root
  # concurs with nginx&#39;s one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
#
Selepas pengubahsuaian

# 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&#39;s document root
  # concurs with nginx&#39;s one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
#
Muat semula tetapan nginx

# nginx -s reload
2018/05/28 04:39:47 [notice] 321#321: signal process started
#
Sahkan keputusan

Semua output 10 panggilan adalah v1 dalam 7001

[ root@kong ~]# cnt=0; manakala [ $cnt -lt 10 ]

> hello perkhidmatan biru/hijau: v1 dalam 7001
hello, perkhidmatan :hello biru/hijau perkhidmatan: v1 dalam 7001

hello, perkhidmatan :hello biru/hijau perkhidmatan: v1 dalam 7001
hello, perkhidmatan : hello biru /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 perkhidmatan: v1 dalam 7001
hello, perkhidmatan :hello biru/hijau perkhidmatan: v1 dalam 7001
hello, perkhidmatan :hello biru/hijau perkhidmatan: v1 dalam 7001
hello, perkhidmatan :hello biru/hijau perkhidmatan: v1 pada tahun 7001
[root@kong ~]#



Penyerahan biru-hijau: tukar kepada versi hijau


dengan melaraskan berat default.conf, dan kemudian laksanakan muat semula nginx -s Anda boleh bertukar secara dinamik kepada versi hijau tanpa menghentikan perkhidmatan nginx Sasaran akan mengeluarkan semua trafik ke v2 pada 7002

Ubah suai kaedah .conf .

hanya perlu melaraskan berat pelayan di hulu seperti berikut:

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

Muat semula tetapan nginx

# nginx -s reload
2018/05/28 05:01:28 [notice] 330#330: signal process started
#

Sahkan keputusan

[root@kong ~]# cnt=0; v2 pada 7002

hello, perkhidmatan :hello biru/hijau perkhidmatan: v2 pada 7002

hello, perkhidmatan :hello biru/hijau perkhidmatan: v2 dalam 7002hello, perkhidmatan : hello biru/hijau perkhidmatan: v2 dalam 7002hello, perkhidmatan :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, perkhidmatan :hello biru/hijau perkhidmatan: v2 dalam 7002
hello, perkhidmatan :hello biru/hijau perkhidmatan: v2 dalam 7002
hello, perkhidmatan :hello biru/hijau perkhidmatan: v2 pada 7002
[root@kong ~]#

Atas ialah kandungan terperinci Cara menggunakan simulasi nginx untuk penggunaan biru-hijau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam