So verwenden Sie die Nginx-Simulation für Canary Publishing
Canary Release/Grayscale Release
Der Kernpunkt von Canary Release ist: Versuch und Irrtum. Der Ursprung der Kanarienvogelfreisetzung selbst ist eine tragische Geschichte der wunderschönen Geschöpfe der Natur in der Entwicklung der menschlichen Industrie. Der Kanarienvogel nutzt sein Leben, um Fehler zu machen, um die Sicherheit der Bergleute zu gewährleisten. Bei der kontinuierlichen Bereitstellung werden geringe Kosten für die Verkehrskontrolle verwendet, z. B. ein Prozent oder ein Zehntel, um zu überprüfen, ob eine bestimmte Version normal ist. Wenn es abnormal ist, wird seine Funktion mit den geringsten Kosten erreicht und das Risiko verringert. Wenn es normal ist, können Sie die Gewichtung schrittweise erhöhen, bis sie 100 % erreicht, und den gesamten Datenverkehr reibungslos auf die neue Version umstellen. Bei der Graustufenveröffentlichung handelt es sich im Allgemeinen um ein ähnliches Konzept. Grau ist ein Übergang zwischen Schwarz und Weiß. Es unterscheidet sich von der Blau- und Grün-Bereitstellung, bei der entweder Blau oder Grün gleichzeitig vorhanden sind, der entsprechende Datenverkehr jedoch vorhanden ist Wenn sich die Canary-Release von der Grayscale-Release unterscheidet, sollte der Zweck im Versuch und Irrtum liegen, während es bei der Grayscale-Release um eine stabile Release geht, aber es gibt kein Problem bei der Canary-Release Übergang unter den Umständen der Graustufenveröffentlichung.
Kanarische Veröffentlichung simulieren
Als nächstes verwenden wir den Upstream von Nginx, um einfach das kanarische Veröffentlichungsszenario zu simulieren. Das konkrete Szenario ist wie folgt. Durch Anpassen der Nginx-Einstellungen und ständiges Anpassen des Gewichts der Canary-Version wird schließlich eine reibungslose Veröffentlichung erreicht.
Bereiten Sie sich im Voraus vor
Starten Sie zwei Dienste auf den beiden Ports 7001/7002 im Voraus, um unterschiedliche Informationen anzuzeigen. Zur Vereinfachung der Demonstration habe ich Tornado verwendet, um ein Bild zu erstellen und die beim Docker übergebenen Parameter zu übergeben Der Container wurde gestartet, um die Unterschiede zwischen Diensten anzuzeigen.
docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "hello main service: v1 in 7001" docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "hello canary deploy service: v2 in 7002"
Ausführungsprotokoll
[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "hello main service: v1 in 7001" 28f42bbd21146c520b05ff2226514e62445b4cdd5d82f372b3791fdd47cd602a [root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "hello canary deploy service: v2 in 7002" b86c4b83048d782fadc3edbacc19b73af20dc87f5f4cf37cf348d17c45f0215d [root@kong ~]# curl http://192.168.163.117:7001 hello, service :hello main service: v1 in 7001 [root@kong ~]# curl http://192.168.163.117:7002 hello, service :hello canary deploy service: v2 in 7002 [root@kong ~]#
Nginx starten
[root@kong ~]# docker run -p 9080:80 --name nginx-canary -d nginx 659f15c4d006df6fcd1fab1efe39e25a85c31f3cab1cda67838ddd282669195c [root@kong ~]# docker ps |grep nginx-canary 659f15c4d006 nginx "nginx -g 'daemon ..." 7 seconds ago up 7 seconds 0.0.0.0:9080->80/tcp nginx-canary [root@kong ~]#
Nginx-Code-Snippet
Bereiten Sie das folgende Nginx-Code-Snippet vor und fügen Sie es zu. /etc/nginx/conf.d/default hinzu .conf von Nginx, simulieren Die Methode ist sehr einfach. Verwenden Sie down, um anzuzeigen, dass der Datenverkehr Null ist (das Gewicht kann in Nginx nicht auf Null gesetzt werden). Zu Beginn werden 100 % des Datenverkehrs an die Hauptversion gesendet.
http { upstream nginx_canary { 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_canary; } }
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 es direkt mit sed ändern. 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.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; #} } #
Nach der Änderung: Alle werden nach 10 Aufrufen ausgegeben. Alle sind v1 in 7001
[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; let cnt++; v1 in 7001hallo, service :Hallo Hauptdienst: v1 in 7001Hallo, Dienst :Hallo Hauptdienst: v1 in 7001
Hallo, Dienst:Hallo Hauptdienst: v1 in 7001Hallo, Dienst:Hallo Hauptdienst: v1 in 7001Hallo, Dienst:Hallo Hauptdienst: v1 in 7001Hallo, Dienst: Hallo Hauptdienst: v1 in 7001. Hallo, Dienst: Hallo Hauptdienst: v1 in 7001. Hallo, Dienst: Hallo Hauptdienst: v1 in 7001. Hallo, Dienst: Hallo Hauptdienst : v1 in 7001
[root@kong ~]#Kanarische Version: Traffic-Gewicht der kanarischen Version 10 %
Passen Sie das Gewicht an, indem Sie das Gewicht von default.conf anpassen und dann nginx -s reload ausführen Canary-Version auf 10 %, und 10 % des Datenverkehrs führen den neuen Dienst aus.
So ändern Sie default.conf Einstellungen# cat default.conf upstream nginx_canary { 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_canary; } #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 dem Login kopieren
Bestätigen Sie das Ergebnis
[root@kong ~]# cnt=0; do Curl ; let cnt++; v2 in 7002Hallo, Service:Hallo Canary Deploy Service: v2 in 7002Hallo, Service:Hallo Canary Deploy Service: v2 in 7002
Hallo, Service:Hallo Canary Deploy Service: v2 in 7002Hallo, Service: Hallo Hauptdienst : v1 in 7001
Hallo, Service:Hallo Canary Deploy Service: v2 in 7002Hallo, Service:Hallo Canary Deploy Service: v2 in 7002Hallo, Service:Hallo Canary Deploy Service: v2 in 7002Hallo, Service:Hallo Canary Bereitstellungsdienst: v2 in 7002
Hallo, Dienst: Hallo Canary Bereitstellungsdienst: v2 in 7002[root@kong ~]#
Kanarische Version: Die Verkehrsgewichtung der kanarischen Version beträgt 50 %
Durch Anpassen der Standardgewichtung .conf und führen Sie dann nginx -s reload aus, passen Sie die Gewichtung der Canary-Version auf 50 % an, und 50 % des Datenverkehrs führen den neuen Dienst aus
Methode zum Ändern von default.conf
Passen Sie einfach die Gewichtung von an den Server im Upstream wie folgt:# nginx -s reload 2018/05/28 05:16:20 [notice] 319#319: signal process started #Nach dem Login kopieren
Nginx-Einstellungen neu laden# nginx -s reload 2018/05/28 05:22:26 [notice] 339#339: signal process started #Nach dem Login kopieren确认结果
[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl ; let cnt++; done
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
[root@kong ~]#金丝雀发布: 金丝雀版本流量权重90%
通过调整default.conf的weight,然后执行nginx -s reload的方式,调节金丝雀版本的权重为90%,流量的90%会执行新的服务
修改default.conf的方法
只需要将upstream中的server的权重做如下调整:
upstream nginx_canary { server 192.168.163.117:7001 weight=10; server 192.168.163.117:7002 weight=90; }Nach dem Login kopieren重新加载nginx设定
# nginx -s reload 2018/05/28 05:24:29 [notice] 346#346: signal process started #Nach dem Login kopieren确认结果
[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl ; let cnt++; done
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello main service: v1 in 7001
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
[root@kong ~]#金丝雀发布: 金丝雀版本流量权重100%
通过调整default.conf的weight,然后执行nginx -s reload的方式,调节金丝雀版本的权重为100%,流量的100%会执行新的服务
修改default.conf的方法
只需要将upstream中的server的权重做如下调整:
upstream nginx_canary { server 192.168.163.117:7001 down; server 192.168.163.117:7002 weight=100; }Nach dem Login kopieren重新加载nginx设定
# nginx -s reload 2018/05/28 05:26:37 [notice] 353#353: signal process startedNach dem Login kopieren确认结果
[root@kong ~]# cnt=0; while [ $cnt -lt 10 ]; do curl ; let cnt++; done
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
hello, service :hello canary deploy service: v2 in 7002
[root@kong ~]#Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Nginx-Simulation für Canary Publishing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Um dem Tomcat-Server den Zugriff auf das externe Netzwerk zu ermöglichen, müssen Sie Folgendes tun: Ändern Sie die Tomcat-Konfigurationsdatei, um externe Verbindungen zuzulassen. Fügen Sie eine Firewallregel hinzu, um den Zugriff auf den Tomcat-Server-Port zu ermöglichen. Erstellen Sie einen DNS-Eintrag, der den Domänennamen auf die öffentliche IP des Tomcat-Servers verweist. Optional: Verwenden Sie einen Reverse-Proxy, um Sicherheit und Leistung zu verbessern. Optional: Richten Sie HTTPS für mehr Sicherheit ein.

Für die Konvertierung einer HTML-Datei in eine URL ist ein Webserver erforderlich. Dazu sind die folgenden Schritte erforderlich: Besorgen Sie sich einen Webserver. Richten Sie einen Webserver ein. Laden Sie eine HTML-Datei hoch. Erstellen Sie einen Domainnamen. Leiten Sie die Anfrage weiter.

Serverbereitstellungsschritte für ein Node.js-Projekt: Bereiten Sie die Bereitstellungsumgebung vor: Erhalten Sie Serverzugriff, installieren Sie Node.js, richten Sie ein Git-Repository ein. Erstellen Sie die Anwendung: Verwenden Sie npm run build, um bereitstellbaren Code und Abhängigkeiten zu generieren. Code auf den Server hochladen: über Git oder File Transfer Protocol. Abhängigkeiten installieren: Stellen Sie eine SSH-Verbindung zum Server her und installieren Sie Anwendungsabhängigkeiten mit npm install. Starten Sie die Anwendung: Verwenden Sie einen Befehl wie node index.js, um die Anwendung zu starten, oder verwenden Sie einen Prozessmanager wie pm2. Konfigurieren Sie einen Reverse-Proxy (optional): Verwenden Sie einen Reverse-Proxy wie Nginx oder Apache, um den Datenverkehr an Ihre Anwendung weiterzuleiten

Ja, auf Node.js kann von außen zugegriffen werden. Sie können die folgenden Methoden verwenden: Verwenden Sie Cloud Functions, um die Funktion bereitzustellen und öffentlich zugänglich zu machen. Verwenden Sie das Express-Framework, um Routen zu erstellen und Endpunkte zu definieren. Verwenden Sie Nginx, um Proxy-Anfragen an Node.js-Anwendungen umzukehren. Verwenden Sie Docker-Container, um Node.js-Anwendungen auszuführen und sie über Port-Mapping verfügbar zu machen.

Um eine PHP-Website erfolgreich bereitzustellen und zu warten, müssen Sie die folgenden Schritte ausführen: Wählen Sie einen Webserver (z. B. Apache oder Nginx). Installieren Sie PHP. Erstellen Sie eine Datenbank und verbinden Sie PHP. Laden Sie Code auf den Server hoch. Richten Sie den Domänennamen und die DNS-Überwachung der Website-Wartung ein Zu den Schritten gehören die Aktualisierung von PHP und Webservern sowie die Sicherung der Website, die Überwachung von Fehlerprotokollen und die Aktualisierung von Inhalten.

Eine wichtige Aufgabe für Linux-Administratoren besteht darin, den Server vor illegalen Angriffen oder Zugriffen zu schützen. Linux-Systeme verfügen standardmäßig über gut konfigurierte Firewalls wie iptables, Uncomplicated Firewall (UFW), ConfigServerSecurityFirewall (CSF) usw., die eine Vielzahl von Angriffen verhindern können. Jeder mit dem Internet verbundene Computer ist ein potenzielles Ziel für böswillige Angriffe. Es gibt ein Tool namens Fail2Ban, mit dem illegale Zugriffe auf den Server eingedämmt werden können. Was ist Fail2Ban? Fail2Ban[1] ist eine Intrusion-Prevention-Software, die Server vor Brute-Force-Angriffen schützt. Es ist in der Programmiersprache Python geschrieben

Heute werde ich Sie durch die Installation von Nginx in einer Linux-Umgebung führen. Das hier verwendete Linux-System ist CentOS7.2. Bereiten Sie die Installationstools vor. 1. Laden Sie Nginx von der offiziellen Nginx-Website herunter. Die hier verwendete Version ist: 1.13.6.2. Laden Sie das heruntergeladene Nginx auf Linux hoch. Hier wird das Verzeichnis /opt/nginx verwendet. Führen Sie zum Dekomprimieren „tar-zxvfnginx-1.13.6.tar.gz“ aus. 3. Wechseln Sie in das Verzeichnis /opt/nginx/nginx-1.13.6 und führen Sie ./configure für die Erstkonfiguration aus. Wenn die folgende Eingabeaufforderung erscheint, bedeutet dies, dass PCRE nicht auf dem Computer installiert ist und Nginx dies tun muss

Nachdem yum Keepalived installiert hat, konfigurieren Sie die Keepalived-Konfigurationsdatei. In den Keepalived-Konfigurationsdateien ist der Netzwerkkartenname des aktuellen VIP normalerweise als verfügbare IP ausgewählt. Es gibt viele LAN-Umgebungen, daher ist diese VIP eine Intranet-IP im selben Netzwerksegment wie die beiden Maschinen. Bei der Verwendung in einer externen Netzwerkumgebung spielt es keine Rolle, ob es sich im selben Netzwerksegment befindet, solange der Client darauf zugreifen kann. Stoppen Sie den Nginx-Dienst und starten Sie den Keepalived-Dienst. Wenn er nicht gestartet werden kann und fehlschlägt, liegt im Grunde ein Problem mit den Konfigurationsdateien und Skripten oder ein Präventionsproblem vor.
