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:
upstream backend { server backend1.example.com; server backend2.example.com max_fails=3 fail_timeout=30s; }
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; }
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;
}
}
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; } }
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; } }
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; }
Geben Sie die angeforderte URL an.
location / { proxy_pass http://backend; health_check uri=/some/path; }
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 } }
http {
#...
match server_ok {
status 200-399;
body !~ "maintenance mode";
}
server {
#...
location / {
proxy_pass http://backend;
health_check match=server_ok;
}
}
}
例如,下面的 match 指令匹配有状态代码响应 200,精确值 text/html 的content-type 标题,页面中的文字:'welcome to nginx!'.
match welcome { status 200; header content-type = text/html; body ~ "welcome to nginx!"; }
以下示例使用感叹号(!)来定义响应不得通过运行状况检查的特征。在这种情况下,健康检查在非 301,302,303,或 307状态码,同时并没有 refresh 头信息时将通过检查,。
match not_redirect { status ! 301-303 307; header ! refresh; }
健康检查可以在其他非 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!