Maison > Opération et maintenance > Nginx > le corps du texte

Comment utiliser la simulation nginx pour le déploiement bleu-vert

WBOY
Libérer: 2023-06-03 12:31:03
avant
900 Les gens l'ont consulté

Déploiement bleu-vert

L'objectif du déploiement bleu-vert réside dans les fonctionnalités suivantes

  • #🎜 🎜#1. Bleu La version couleur et la version verte existent en même temps

  • 2 L'environnement de course réel est bleu ou vert, il ne peut s'agir que de l'un des deux. eux, contrôlés par le switch

    # 🎜🎜#

Analyse des avantages et inconvénients : L'avantage réside dans sa rapidité et son rollback. Et les défauts sont également évidents. Une restauration rapide est possible car deux ensembles d'environnements existent en même temps. La complexité et les ressources requises augmenteront donc car il existe deux ensembles d'environnements.
De plus, bien que la vitesse ait été améliorée, en cours de mise en œuvre, la commande de commutation, quelle que soit la vitesse de commutation, est toujours incapable d'obtenir une commutation totalement transparente sans combiner d'autres technologies.


Simuler le déploiement bleu-vert

Ensuite, nous utilisons nginx en amont pour simuler simplement le scénario de déploiement bleu-vert. Le scénario spécifique est le suivant. La version bleue est actuellement active. En ajustant les paramètres de nginx, la version verte est définie comme la version actuellement active.

Comment utiliser la simulation nginx pour le déploiement bleu-vert

Préparation à l'avance

Démarrer deux ports 7001/7002 respectivement à l'avance Les services sont utilisé pour afficher différentes informations.Pour faciliter la démonstration, un miroir est créé à l'aide de tornado et différents paramètres transmis lors du démarrage du conteneur Docker sont utilisés pour afficher les différences entre les services.

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"
Copier après la connexion

journal d'exécution

[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 ~]#
Copier après la connexion

start 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 ~]#
Copier après la connexion
# 🎜 🎜 #Extrait de code nginx

Préparez l'extrait de code nginx suivant et ajoutez-le à /etc/nginx/conf.d/default.conf de nginx. down Le trafic est nul (le poids ne peut pas être mis à zéro dans nginx) et 100 % du trafic est envoyé vers la version bleue au début.

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;
  }
}
Copier après la connexion

Comment modifier default.conf

Vous pouvez obtenir l'effet en installant vim dans le conteneur, ou vous pouvez le modifier localement et puis utilisez docker cp Vous pouvez le transmettre ou le modifier directement avec sed. Si vous installez vim dans un conteneur, utilisez la méthode suivante

[root@kong ~]# docker exec -it nginx-lb sh
# apt-get update
...省略
# apt-get install vim
...省略
Copier après la connexion

Recharger les paramètres nginx

# 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;
  #}
}
#
Copier après la connexion
Confirmer le résultat

10 La sortie de tous les appels est v1 dans 7001

[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]> ; curl> let cnt++

> done

hello, service :hello blue/green service: v1 in 7001hello, service :hello blue/green service : v1 in 7001bonjour, service :bonjour service bleu/vert: v1 en 7001

bonjour, service :bonjour service bleu/vert: v1 en 7001

bonjour, service :bonjour service bleu/vert: v1 en 7001

bonjour, service :bonjour service bleu/vert: v1 en 7001
bonjour, service :bonjour service bleu/vert: v1 en 7001

bonjour, service :bonjour service bleu/vert: v1 en 7001
bonjour, service :bonjour service bleu/vert: v1 en 7001
bonjour, service :bonjour service bleu/vert: v1 en 7001
[root@kong ~] ##🎜 🎜#


Déploiement bleu-vert : passer à la version verte


En ajustant le poids de default.conf, puis en exécutant nginx - s La méthode de rechargement peut passer dynamiquement à la version verte sans arrêter le service nginx La cible générera tout le trafic vers la v2 en 7002


Comment modifier default.conf
#. 🎜🎜#
Il vous suffit d'ajuster le poids du serveur en amont comme suit :

# 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;
  #}
}
#
Copier après la connexion

Reload nginx settings

#🎜🎜 #

# nginx -s reload
2018/05/28 04:39:47 [notice] 321#321: signal process started
#
Copier après la connexion
#🎜🎜 #Confirmer le résultat

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

bonjour, service :bonjour service bleu/vert: v2 en 7002bonjour, service :bonjour service bleu/vert: v2 en 7002bonjour, service :bonjour service bleu/vert: v2 en 7002

bonjour, service :bonjour service bleu/vert: v2 en 7002

bonjour, service :bonjour service bleu/vert: v2 en 7002

bonjour, service :bonjour service bleu/vert: v2 en 7002

bonjour, service :bonjour service bleu/vert: v2 en 7002bonjour, service :bonjour service bleu/vert: v2 en 7002bonjour, service :bonjour service bleu/vert: v2 en 7002

bonjour, service :bonjour service bleu/vert: v2 en 7002

[root@kong ~]#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal