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

Ein Artikel, der Ihnen hilft, jQuery-Animationen zu verstehen

Inhaltsverzeichnis 1. Steuern Sie die Anzeige und...

So implementieren Sie die Unschärfefunktion von DIV

Verwenden Sie Anti-Shake, um DIV verschwinden zu ...

Eine kurze Analyse der Grundkonzepte von HTML-Webseiten

Was ist eine Webseite? Die Seite, die nach dem HT...

18 Killer-JavaScript-Einzeiler

Vorwort JavaScript erfreut sich weiterhin wachsen...

Lösung für das Fehlen einer chinesischen Eingabemethode in Ubuntu

Es gibt keine Lösung für die chinesische Eingabem...

So ändern Sie die Tomcat-Portnummer in Linux

Ich habe hier mehrere Tomcats. Wenn ich sie gleic...

Beispiel für den schnellen Aufbau einer LEMP-Umgebung mit Docker

LEMP (Linux + Nginx + MySQL + PHP) ist heutzutage...

Grundkenntnisse der MySQL-Datenbank

Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...

Verwenden Sie zum Senden des Formulars ein Bild statt einer Schaltfläche.

Code kopieren Der Code lautet wie folgt: <form...

Detaillierte Erklärung zu Drag-Time und Drag-Case in JavaScript

Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...