Verwenden von Nginx zum Implementieren der Graustufenversion

Verwenden von Nginx zum Implementieren der Graustufenversion

Unter Graustufenfreigabe versteht man eine Freigabemethode, die einen reibungslosen Übergang zwischen Schwarz und Weiß ermöglicht. Beim AB-Test handelt es sich um eine Graustufen-Releasemethode , bei der einige Benutzer weiterhin A verwenden, während andere beginnen, B zu verwenden. Wenn die Benutzer keine Einwände gegen B haben, wird der Umfang schrittweise erweitert und alle Benutzer werden zu B migriert.

Die Graustufenversion kann die Stabilität des Gesamtsystems sicherstellen. Probleme können während der ersten Graustufenversion erkannt und behoben werden, um ihre Auswirkungen sicherzustellen.

Es gibt grundsätzlich drei Möglichkeiten, Graustufen freizugeben:

  • Nginx+LUA-Methode
  • Graustufen-Release basierend auf Cookie
  • Graustufenfreigabe basierend auf der Quell-IP

In diesem Artikel wird hauptsächlich erläutert, wie einfaches Graustufen-Publishing basierend auf Cookies und Quell-IP implementiert wird. Die Nginx+LUA-Methode beinhaltet zu viel Inhalt und wird in diesem Artikel nicht weiter erläutert.

A/B-Testprozess

Nginx implementiert eine Graustufenversion basierend auf Cookie

Gemäß der Cookie-Abfrage ist der Cookie-Schlüssel der Versionswert. Wenn der Cookie-Wert V1 ist, wird er an hilinux_01 weitergeleitet. Wenn er V2 ist, wird er an hilinux_02 weitergeleitet. Wenn die Cookie-Werte nicht übereinstimmen, wird standardmäßig der Server verwendet, der hilinux_01 entspricht.

Die beiden Server sind wie folgt definiert:

  • hilinux_01 192.168.1.100:8080
  • hilinux_02 192.168.1.200:8080

Implementiert mit if-Anweisung

Upstream hilinux_01 {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Upstream hilinux_02 {
  Server 192.168.1.200:8080 max_fails=1 Fail_timeout=60;
}

Upstream-Standard {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Server {
 hören Sie 80;
 Servername www.hi-linux.com;
 access_log Protokolle/www.hi-linux.com.log Haupt;

 #Match-Cookie
 setze $group auf "Standard";
  if ($http_cookie ~* "version=V1"){
    setze $group hilinux_01;
  }

  if ($http_cookie ~* "version=V2"){
    setze $group hilinux_02;
  }

 Standort / {            
  Proxy-Passwort http://$Gruppe;
  Proxy_Set_Header Host $host;
  Proxy_Set_Header X-Real-IP $Remote_Addr;
  proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
  Index Index.html Index.htm;
 }
 }

Implementiert mit der Map-Direktive

Konfigurieren Sie eine Zuordnung in Nginx, $COOKIE_version可以解析出Cookie里面的version字段. $group ist eine Variable und {} enthält Zuordnungsregeln.

Wenn ein Benutzer mit Version V1 auf das System zugreift, ist $group gleich hilinux_01. Bei Verwendung auf dem Server wird ein Proxy zu http://hilinux_01 eingerichtet. Wenn der Benutzer mit der Version V2 auf das System zugreift, ist $group gleich hilinux_02. Bei Verwendung auf dem Server wird ein Proxy zu http://hilinux_02 eingerichtet. Wenn die Cookie-Werte nicht übereinstimmen, wird standardmäßig der Server verwendet, der hilinux_01 entspricht.

Upstream hilinux_01 {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Upstream hilinux_02 {
  Server 192.168.1.200:8080 max_fails=1 Fail_timeout=60;
}

Upstream-Standard {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Karte $COOKIE_version $group {
~*V1$ hilinux_01;
~*V2$ hilinux_02;
Standard Standard;
}

Server {
 hören Sie 80;
 Servername www.hi-linux.com;
 access_log Protokolle/www.hi-linux.com.log Haupt;

 Standort / {            
  Proxy-Passwort http://$Gruppe;
  Proxy_Set_Header Host $host;
  Proxy_Set_Header X-Real-IP $Remote_Addr;
  proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
  Index Index.html Index.htm;
 }
 }

Nginx implementiert die Graustufenfreigabe basierend auf der eingehenden IP

Wenn es sich um eine interne IP handelt, wird der Reverse-Proxy an hilinux_02 (Pre-Release-Umgebung) gesendet, andernfalls wird der Reverse-Proxy an hilinux_01 (Produktionsumgebung) gesendet.

Upstream hilinux_01 {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Upstream hilinux_02 {
  Server 192.168.1.200:8080 max_fails=1 Fail_timeout=60;
}

Upstream-Standard {
  Server 192.168.1.100:8080 max_fails=1 Fail_timeout=60;
}

Server {
 hören Sie 80;
 Servername www.hi-linux.com;
 access_log Protokolle/www.hi-linux.com.log Haupt;

 $group-Standard festlegen;
 wenn ($remote_addr ~ "211.118.119.11") {
   setze $group hilinux_02;
 }

Standort / {            
  Proxy-Passwort http://$Gruppe;
  Proxy_Set_Header Host $host;
  Proxy_Set_Header X-Real-IP $Remote_Addr;
  proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
  Index Index.html Index.htm;
 }
}

Wenn Sie nur über einen einzigen Server verfügen, können Sie zum Erreichen desselben Zwecks verschiedene Website-Stammverzeichnisse entsprechend den unterschiedlichen IP-Adressen einrichten.

Server {
 hören Sie 80;
 Servername www.hi-linux.com;
 access_log Protokolle/www.hi-linux.com.log Haupt;

 setze $rootdir "/var/www/html";
  wenn ($remote_addr ~ "211.118.119.11") {
    setze $rootdir "/var/www/test";
  }

  Standort / {
   Wurzel $rootdir;
  }
}

Dies ist das Ende der grundlegendsten Methode zur Implementierung der Graustufenfreigabe. Wenn Sie eine feinkörnigere Graustufenfreigabe durchführen möchten, können Sie auf das ABTestingGateway-Projekt verweisen.

ABTestingGateway ist ein Open-Source-System für dynamisches Routing von Sina. ABTestingGateway ist ein Graustufen-Release-System, das Umleitungsstrategien dynamisch festlegen kann. Es arbeitet auf Layer 7 und wurde auf Basis von nginx und ngx-lua entwickelt. Es verwendet redis als Datenbank für Umleitungsstrategien und kann dynamische Planungsfunktionen implementieren.

ABTestingGateway: https://github.com/CNSRE/ABTestingGateway

Referenzdokumentation
http://www.google.com
http://www.jianshu.com/p/88f206f48278
http://blog.chinaunix.net/uid-531464-id-4140473.html

Dies ist das Ende dieses Artikels über die Verwendung von Nginx zur Implementierung von Graustufenveröffentlichungen. Weitere relevante Inhalte zu Graustufenveröffentlichungen mit Nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung der Graustufenversion mit Nginx und Lua
  • Zusammenfassung der drei Methoden zur Implementierung der Graustufenfreigabe in Nginx

<<:  Vue implementiert eine einfache Slider-Verifizierung

>>:  Detaillierte Erklärung zur Sicherstellung der Konsistenz von MySQL-Ansichten (mit Prüfoption)

Artikel empfehlen

So überwachen Sie Array-Änderungen in Vue

Inhaltsverzeichnis Vorwort Quellcode Wo beginne i...

jQuery implementiert Warenkorbfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Konfiguration der primären Netzwerk-Portzuordnung für Docker

Portzuordnung Wenn vor dem Start des Docker-Conta...

Zusammenfassung der Grundlagen der Vue-Komponenten

Komponentengrundlagen 1 Wiederverwendung von Komp...

Informationen zum Textumbruchproblem bei IE-Labels (LI)

Ich habe lange damit gekämpft und nach einiger Suc...

Die Verwendung und der Unterschied zwischen JavaScript-Pseudo-Array und Array

Pseudo-Arrays und Arrays In JavaScript sind mit A...

Sieben Möglichkeiten zur Implementierung der Array-Deduplizierung in JS

Inhaltsverzeichnis 1. Verwenden von Set()+Array.f...

Zabbix-Überwachungslösung – die neueste offizielle Version 4.4 [empfohlen]

Zabbix 12.10.2019 Chenxin siehe https://www.zabbi...

So installieren Sie mehrere mysql5.7.19 (tar.gz)-Dateien unter Linux

Informationen zur ersten Installation der MySQL-5...

So zeigen Sie den Status von Remote-Serverdateien in Linux an

Wie unten dargestellt: Der Testbefehl stellt fest...

Installationsprozess von MySQL5.7.22 auf dem Mac

1. Verwenden Sie das Installationspaket, um MySQL...

Eine kurze Diskussion über den Spaß von :focus-within in CSS

Ich glaube, einige Leute haben dieses Bild gesehe...