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

Detaillierter Installationsprozess und Prinzip des Vue-Routers

Inhaltsverzeichnis 1. Implementierungsprinzip des...

Linux verwendet NetworkManager, um Ihre MAC-Adresse zufällig zu generieren

Egal, ob Sie zu Hause auf dem Sofa oder draußen i...

So verwenden Sie JS zum Parsen des Excel-Inhalts in der Zwischenablage

Inhaltsverzeichnis Vorwort 1. Ereignisse und Zwis...

Ein Artikel zeigt Ihnen, wie Sie den Watch-Listener von Vue verwenden

Inhaltsverzeichnis Hörer beobachten Format Richte...

Wie die MySQL Select-Anweisung ausgeführt wird

Wie wird die MySQL-Select-Anweisung ausgeführt? I...

Ubuntu installiert mehrere Versionen von CUDA und wechselt jederzeit

Ich werde nicht erklären, was CUDA ist, sondern d...

Detaillierte Erklärung des JQuery-Selektors

Inhaltsverzeichnis Grundlegende Selektoren: Ebene...

Detaillierte Erklärung zur Lösung des Problems zu langer Inhalte in CSS

Wenn wir CSS schreiben, vergessen wir manchmal di...

CSS realisiert die Layoutmethode „Fest links“ und „Adaptiv rechts“

1. Schwebendes Layout 1. Lassen Sie zuerst das Di...

...

So verwenden Sie den Yum-Befehl

1. Einführung in yum Yum (vollständiger Name Yell...

Detaillierte Erklärung zur Interpretation der Nginx-Konfigurationsdatei

Die Nginx-Konfigurationsdatei ist hauptsächlich i...