So konfigurieren Sie die Nginx-HTTP-Gesundheitsprüfung

WBOY
Freigeben: 2023-05-14 18:10:06
nach vorne
1739 Leute haben es durchsucht

Passive Prüfung

Bei passiven Gesundheitsprüfungen überwachen Nginx und Nginx Plus das Ereignis, wenn es auftritt, und versuchen, die fehlgeschlagene Verbindung wiederherzustellen . Wenn das immer noch nicht funktioniert, markieren Nginx Open Source und Nginx Plus den Server als nicht verfügbar und stellen vorübergehend das Senden von Anfragen an ihn ein, bis er wieder als aktiv markiert wird.

Die Bedingungen, unter denen ein Upstream-Server als nicht verfügbar markiert wird, werden für jeden Upstream-Server mit dem Parameter upstream der Serverdirektive im Block definiert:

  • # 🎜🎜 #fail_timeout – Legt fest, wie viele Fehlversuche unternommen werden müssen, bevor der Server als nicht verfügbar markiert wird, und wie lange der Server als nicht verfügbar markiert wird (Standard ist 10 Sekunden).

  • max_fails – Legt die Anzahl der Fehlversuche fest, die während fail_timeout auftreten müssen, bevor der Server als nicht verfügbar markiert wird (Standard ist 1 Versuch). Wenn Nginx im folgenden Beispiel keine Anfrage an den Server sendet oder innerhalb von 30 Sekunden dreimal keine Antwort erhält, bedeutet dies, dass der Server innerhalb von 30 Sekunden nicht verfügbar ist:

  • upstream backend {
      server backend1.example.com;
      server backend2.example.com max_fails=3 fail_timeout=30s;
    }
    Nach dem Login kopieren
    #🎜🎜 #Beachten Sie, dass bei nur einer einzigen Servergruppe die Parameter fail_timeout und max_fails ignoriert werden und der Server niemals als nicht verfügbar markiert wird.

Langsamer Serverstart


Kürzlich wiederhergestellte Server können leicht mit Verbindungen überflutet werden, was dazu führen kann, dass der Server als markiert wird nicht wieder verfügbar. Durch einen langsamen Start kann ein Upstream-Server sein Gewicht schrittweise von Null auf seinen Nennwert wiederherstellen, nachdem es wiederhergestellt wurde oder verfügbar wird. Dies kann durch Angabe des slow_start-Parameters des Upstream-Servermoduls erfolgen:

upstream backend {
  server backend1.example.com slow_start=30s;
  server backend2.example.com;
  server 192.0.0.1 backup;
}
Nach dem Login kopieren

Hinweis: Wenn es nur einen Server in der Gruppe gibt, wird der slow_start-Parameter ignoriert und der Server wird nie als markiert nicht verfügbar. Langsamer Start ist eine exklusive Funktion von nginx plus. Überprüfen Sie regelmäßig den Zustand Ihrer Upstream-Server, indem Sie spezielle Gesundheitsprüfungsanfragen senden und korrekte Antworten überprüfen.

So aktivieren Sie die aktive Gesundheitsprüfung:

1 Fügen Sie im Standortblock bei der Weitergabe von Anforderungen (proxy_pass) an die Upstream-Gruppe die Anweisung „health_check“ ein: #🎜 🎜#

server {
 location / {
   proxy_pass http://backend;
   health_check;
 }
}
Nach dem Login kopieren
Dieses Snippet definiert einen Server, der alle Anfragen an den Standort/die Upstream-Gruppe abgleicht, die an das aufrufende Backend weitergeleitet werden. Es ermöglicht außerdem eine erweiterte Gesundheitsüberwachung mithilfe der Direktive „health_check“: Standardmäßig sendet nginx plus alle fünf Sekunden eine „/“-Anfrage an jeden Server im Gruppen-Backend.

Die Integritätsprüfung schlägt fehl, wenn ein Kommunikationsfehler oder eine Zeitüberschreitung auftritt (der vom Server zurückgegebene Statuscode liegt außerhalb des Bereichs von 200–399). Der Server wird als fehlerhaft markiert und nginx plus sendet keine Client-Anfragen an ihn, bis er die Gesundheitsprüfung erneut besteht.

Eine weitere optionale Option: Sie können einen anderen Port für Gesundheitsprüfungen angeben, um beispielsweise den Zustand vieler Dienste auf demselben Host zu überwachen. Verwenden Sie den Port-Parameter der Direktive, um die neue Port-Gesundheitsprüfung anzugeben:

server {
 location / {
   proxy_pass  http://backend;
   health_check port=8080;
 }
}
Nach dem Login kopieren

2 Verwenden Sie in der Upstream-Servergruppe die Zonen-Direktive, um einen gemeinsam genutzten Speicherbereich zu definieren:

http {
 upstream backend {
   zone backend 64k;
   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
   server backend4.example.com;
 }
}
Nach dem Login kopieren

Dieser Bereich wird von allen Arbeitsprozessen gemeinsam genutzt und speichert die Konfiguration der Upstream-Gruppe. Dadurch können Arbeitsprozesse denselben Zählersatz verwenden, um Antworten von Servern in der Gruppe zu verfolgen.

Der Standardwert für aktive Gesundheitsprüfungen kann mit den Parametern der Anweisung „health_check“ überschrieben werden:

location / {
  proxy_pass http://backend;
  health_check interval=10 fails=3 passes=2;
}
Nach dem Login kopieren

Hier ändert der Intervallparameter die Verzögerung zwischen Gesundheitsprüfungen vom Standardwert 5 Sekunden auf 10 Sekunden erhöht. Der Parameter „fails“ erfordert, dass der Server drei Integritätsprüfungen nicht besteht, um ihn als fehlerhaft zu markieren (beginnend mit dem Standardwert). Schließlich bedeutet der Parameter „passes“, dass der Server anstelle des Standardwerts zwei aufeinanderfolgende Prüfungen bestehen muss, bevor er wieder als fehlerfrei markiert werden kann.

Geben Sie die angeforderte URL an.

Geben Sie den Parameter uri in der Direktive „health_check“ an, um die Route der Integritätsprüfungsanforderung festzulegen: #🎜🎜 #
location / {
  proxy_pass http://backend;
  health_check uri=/some/path;
}
Nach dem Login kopieren

Die angegebene URL wird an den Serverdomänennamen oder die IP-Adresse angehängt, die für den Server im Upstream-Block festgelegt ist. Für den ersten Server in der oben deklarierten Backend-Beispielgruppe fordert die Integritätsprüfung die URL http://backend1.example.com/some/path an.

Benutzerdefinierte Bedingungen definieren


Sie können benutzerdefinierte Bedingungen festlegen, die eine Antwort erfüllen muss, damit der Server den Zustand besteht überprüfen. Die Bedingungen werden in einem Match-Block definiert, auf den im Argument der Direktive „health_check“ verwiesen wird.

1. Geben Sie auf der http-{}-Ebene den Match-{}-Block an und benennen Sie ihn, zum Beispiel: „server_ok“

http {
 #... 
 match server_ok {
   # tests are here     
 }
}
Nach dem Login kopieren

2.health_check by Angabe des Blocks Der Match-Parameter und der Name des Match-Parameterblocks:

http {
 #... 
 match server_ok {
   status 200-399;
   body !~ "maintenance mode";
 }
 server {
   #...     
   location / {
     proxy_pass http://backend;
     health_check match=server_ok;
   }
 }
}
Nach dem Login kopieren
Die Integritätsprüfung wird bestanden, wenn der Statuscode der Antwort im Bereich 200-399 liegt und ihr Text nicht enthält die Zeichenfolge: 'Wartungsmodus'

Die Match-Direktive ermöglicht es Nginx Plus, den Statuscode, das Header-Feld und den Antworttext zu überprüfen. Verwenden Sie diese Anweisung, um zu überprüfen, ob der Status innerhalb des angegebenen Bereichs liegt, ob die Antwort Header enthält oder ob die Header oder der Text mit einem regulären Ausdruck übereinstimmen. Die Match-Direktive kann eine Statusbedingung, eine Textbedingung und mehrere Titelbedingungen enthalten. Die Antwort muss alle im Match-Block definierten Bedingungen erfüllen, damit der Server die Integritätsprüfung besteht.

例如,下面的 match 指令匹配有状态代码响应 200,精确值 text/html 的content-type 标题,页面中的文字:'welcome to nginx!'.

match welcome {
  status 200;
  header content-type = text/html;
  body ~ "welcome to nginx!";
}
Nach dem Login kopieren

以下示例使用感叹号(!)来定义响应不得通过运行状况检查的特征。在这种情况下,健康检查在非 301,302,303,或 307状态码,同时并没有 refresh 头信息时将通过检查,。

match not_redirect {
  status ! 301-303 307;
  header ! refresh;
}
Nach dem Login kopieren

健康检查可以在其他非 http 协议中启用, 例如 fastcgi, , scgi,  甚至 tcp 和 udp。

很多很好的特性,就是需要 nginx plus 才能使用。

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie die Nginx-HTTP-Gesundheitsprüfung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!