Heim > Artikel > Backend-Entwicklung > Nginx-Anwendung: Verwendung von Nginx für die Blau-Grün-Bereitstellung
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
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
优点和缺点分析:优点在于它的速度和回滚。而缺点也显而易见。可以快速回滚是因为有两套环境同时存在的缘故,所以复杂度和需要的资源会增多,因为其有两套环境。 另外虽然速度有所提高,但是在实现的过程中,开关的控制,无论多快的切换速度,如果不结合其他的技术,还是无法做到完全无缝切换。
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” |
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"
[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 ~]#
[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 ~]#
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; } }
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...省略
# 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_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 -s reload2018/05/28 04:39:47 [notice] 321#321: signal process started#
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 ~]#
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.
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 -s reload2018/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++; 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!