Heim  >  Artikel  >  Backend-Entwicklung  >  Nginx-Anwendung: Verwendung von Nginx für die Blau-Grün-Bereitstellung

Nginx-Anwendung: Verwendung von Nginx für die Blau-Grün-Bereitstellung

不言
不言Original
2018-06-05 09:41:002797Durchsuche

In diesem Artikel werden hauptsächlich Nginx-Anwendungen vorgestellt: Die Verwendung von Nginx für die blaue und grüne Bereitstellung hat einen bestimmten Referenzwert. Jetzt können Freunde in Not darauf verweisen.

In diesem Artikel wird die blaue und grüne Bereitstellung vorgestellt. Grüne Bereitstellung und wie man mit Nginx auf einfachste Weise eine blau-grüne Bereitstellung simuliert

Blau-grüne Bereitstellung

Der Schwerpunkt der blau-grünen Bereitstellung liegt in den folgenden Funktionen
1. Blaue Version und grüne Version existieren gleichzeitig
2. Die tatsächliche Betriebsumgebung ist blau oder grün. Verwenden Sie die Schaltersteuerung

优点和缺点分析:优点在于它的速度和回滚。而缺点也显而易见。可以快速回滚是因为有两套环境同时存在的缘故,所以复杂度和需要的资源会增多,因为其有两套环境。 
 另外虽然速度有所提高,但是在实现的过程中,开关的控制,无论多快的切换速度,如果不结合其他的技术,还是无法做到完全无缝切换。

, um die Blau-Grün-Bereitstellung zu simulieren.

Als nächstes verwenden wir Nginx's Upstream Simulieren Sie es. Blau-grünes Einsatzszenario. Das konkrete Szenario ist wie folgt. Durch Anpassen der Nginx-Einstellungen wird die grüne Version als aktuell aktive Version festgelegt.

版本 说明
router 用户通过http://localhost:8090来访此种部署下的微服务
蓝色版本 当前活跃的为蓝色版本,在7001端口提供服务,提示信息为“Hello blue/green service: v1 in 7001”
绿色版本 即将发布的绿色版本,在7002端口提供服务,提示信息为“Hello blue/green service: v2 in 7002”

Vorbereitung im Voraus

Starten Sie im Voraus zwei Dienste auf den beiden Ports 7001/7002, um unterschiedliche Informationen anzuzeigen. Zur Vereinfachung der Demonstration habe ich Tornado verwendet, um einen Spiegel zu erstellen und zu verwenden Docker Verschiedene Parameter, die beim Starten des Containers übergeben werden, werden verwendet, um die Unterschiede in den Diensten anzuzeigen.

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"

Ausführungsprotokoll

[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:7001Hello, Service :Hello blue/green service: v1 in 7001[root@kong ~]# curl http://192.168.163.117:7002Hello, Service :Hello blue/green service: v2 in 7002[root@kong ~]#

Nginx starten

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

Nginx-Code-Snippet

Bereiten Sie das folgende Nginx-Code-Snippet vor und fügen Sie es zu /etc/nginx/ von nginx hinzu. In conf.d/default.conf ist die Simulationsmethode sehr einfach. Verwenden Sie down, um anzugeben, dass der Datenverkehr Null ist (das Gewicht kann in Nginx nicht auf Null gesetzt werden). Zu Beginn werden 100 % des Datenverkehrs an Blue gesendet Version.

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

}

So ändern Sie default.conf

Sie können den Effekt erzielen, indem Sie vim im Container installieren. Sie können es auch lokal ändern und es dann über Docker CP übergeben oder direkt ändern mit sed. Wenn Sie vim in einem Container installieren, verwenden Sie die folgende Methode:

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

Vor der Änderung

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

Nach der Änderung

# cat default.confupstream 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-Einstellungen neu laden

# nginx -s reload2018/05/28 04:39:47 [notice] 321#321: signal process started#

Ergebnis bestätigen

Alle Ausgaben von 10 Aufrufen sind 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 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001Hello, Service :Hello blue/green service: v1 in 7001[root@kong ~]#

Blau-grüne Bereitstellung: Wechseln Sie zur grünen Version

Durch Anpassen der Gewichtung von default.conf und anschließendes Ausführen Die Reload-Methode von nginx -s kann dynamisch zur grünen Version wechseln, ohne den Nginx-Dienst zu stoppen. Das Ziel gibt den gesamten Datenverkehr an v2 in 7002 aus.

Methode zum Ändern von default.conf

Sie müssen nur Passen Sie die Gewichtung des Servers im Upstream wie folgt an:

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

Nginx-Einstellungen neu laden

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

Ergebnis bestätigen

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

Verwandte Empfehlungen:

Nginx-Anwendung: Canary-Veröffentlichung mit Nginx

Das obige ist der detaillierte Inhalt vonNginx-Anwendung: Verwendung von Nginx für die Blau-Grün-Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn