Ist es möglich, zwei Bedingungen in einem Backend zu überprüfen? Beispiel
backend web-static
option httpchk GET /path/alive.php HTTP/1.1\r\nHost:\ www1.domain.com
option httpchk GET /path2/alive.php HTTP/1.1\r\nHost:\ www1.domain.com
server appsrv1 192.168.1.10:80 check inter 3000 weight 1
load-balancing
haproxy
Elgreco08
quelle
quelle
Ah, ich hatte die gleiche Frage! Unsere Entwickler haben einen multifunktionalen Webdienst mit einem URL-Namen erstellt, da wir nicht CORS-kompatible Browser (IE 8 und 9) unterstützen müssen. Ein DNS-Name, der zu einer VIP-Adresse führt, verfügt über mehrere Unterverzeichnisse mit jeweils unterschiedlichen Anwendungen. Unser Load Balancer muss also jeden einzelnen Dienst auf seinen Zustand überprüfen und ihn dann als großen "UND" -Test behandeln. Wenn sogar einer der Dienste die Prüfung nicht besteht, müssen wir diesen Server aus dem Dienst ziehen die Farm, bis alle vorbei sind.
Wir wechseln von Cisco ACE-Load-Balancern. Auf dieser Plattform definieren Sie einfach mehrere "Probe" -Konfigurationen und rufen dann mehrere Probes innerhalb einer einzelnen Serverfarm nacheinander auf, und alle Probes werden ausgeführt. Wie Sie wahrscheinlich festgestellt haben, können Sie mit HAProxy nicht mehr als eine "Option httpchk" definieren ... oder zumindest alle bis auf eine ignorieren, sodass Sie nicht die Tests erhalten, nach denen Sie suchen. Aber ich habe aus dem Handbuch herausgefunden, dass ich es tun kann, indem ich httpchk nicht benutze und eine Reihe von Zeilen "Verbinden, Senden, Prüfen" unter "Option TCP-Prüfung" ersetze. Es funktioniert perfekt.
Beachten Sie, dass Sie jedes Leerzeichen in der Zeichenfolge, die Sie senden, mit einem Backslash-Escapezeichen versehen müssen. Ich verwende HTTP / 1.0 in der Anforderung, die standardmäßig nicht Keepalive-fähig ist. Daher verbinde ich die Verbindung in jeder Reihe von Zeilen erneut. Ich denke, ich könnte auch HTTP / 1.1 verwenden, aber dann müsste ich auch einen Host-Header übertragen, also denke ich, dass es auf diese Weise einfacher ist. Wenn Sie diese vier Überprüfungen hintereinander ausführen, dauert es immer noch nur 60 ms, also bin ich zufrieden. Beachten Sie auch, dass ich nur "Erwartungszeichenfolge" verwende, aber es gibt auch eine "Erwartungszeichenfolge" für die Suche nach regulären Ausdrücken, die den vom Server zurückgegebenen Ergebnisinhalt durchsucht.
quelle