[Gelöst] HAproxy Backendpool - kein automatisches Failback

Started by viragomann, April 09, 2025, 03:43:51 PM

Previous topic - Next topic
Hallo,

ich habe in HAproxy einen Backendpool mit 3 Real Servers eingerichtet.
Einer davon ist als "active" konfiguriert, die anderen beiden als "backup".

Wenn nun der active Server nicht erreichbar ist, schaltet HAproxy auf das erste Backup um, wie gewünscht. Allerdings schaltet er nicht wieder von selbst zurück, wenn der active Server wieder verfügbar ist, obwohl der Status in Maintenance "UP" zeigt.

Also HAproxy erkennt zwar, dass der primäre Server wieder auf Health Checks antwortet, leitet aber dennoch alle Anfo
rderungen an den Backup Server. Deshalb denke ich nicht, dass die Health Check Einstellungen hier was verbessern könnten. Sind TCP Checks.

Ein "set state to ready" hilft auch nicht, das ist er ohnehin schon.
Bislang konnte ich HAproxy nur durch einen Service Restart oder durch auf "Maintenance" Setzen der beiden Backup Server wieder dazu bringen, richtig zu arbeiten. Das müsste er doch automatisch machen.

Könnte es da noch was zu konfigurieren geben?

Dieses Setup hatte ich bereits unter pfSense eingerichtet. Da funktioniert es einwandfrei.

Grüße

Ich nehme an beim Real Server steht der Type auf "static"? Worauf steht denn der Balancing Algorithm im Backend Pool? Da muss m.E. "Static Round Robin" rein.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Quote from: Patrick M. Hausen on April 09, 2025, 04:15:41 PMIch nehme an beim Real Server steht der Type auf "static"?
Ja, bei allen, auch den Backups. Die anderen Optionen "template" und "unix socket" erscheinen mir als unpassend. (?)

QuoteWorauf steht denn der Balancing Algorithm im Backend Pool? Da muss m.E. "Static Round Robin" rein.
Unverändert auf "Source-IP Hash (default)".

"Static Round Robin"? Die Bedeutung davon habe ich mir nicht angesehen. Ich kann es aber mal testen. Bislang ist das Setup ohnehin nur zur Evaluierung.

Nein, das Verhalten ist damit dasselbe. Auch mit normalem Round Robin.

Wenn ich die Konfig zu der von pfSense vergleiche, findet sich bei OPNsense zusätzlich die Option "balance" mit ausgewähltem Wert im Backend. Aber in der GUI sehe ich keine Möglichkeit, diese weg zu bekommen.

Hier bei mir funktioniert es mit static round robin.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Problem behoben.
Im Backend war für "Table type" "Source IP" und für "Stored data types" "Stick table persistence" aktiviert. Beides offenbar default Werte.^^
Beides auf "none" gesetzt. Dann funktioniert das Zurückswitchen. Dann kann auch die "Balancing Algorithm" Einstellung auf dem Standardwert bleiben.

Warum man diese Werte standardmäßig setzt, kann ich mir beim besten Willen nicht ausmalen. Ja, ich weiß, HAproxy ist grundsätzlich ein Load-Balancer, aber vermutlich dennoch hauptsächlich als einfacher Reverse-Proxy genutzt, und da sind diese Settings fehl am Platz.
Wer einen Load-Balancer einrichtet, wird nach solchen Einstellungen bewusst suchen und sie finden. Wer einen Reverse-Proxy konfiguriert, denkt an sowas eben nicht zwingend und läuft damit in ein Problem, auch wenn Active-Backup Backend Switching auch in gewisser Weise als Load-Balancing gesehen werden könnte.

Und wieder war die verkorkste Implementierung von HAproxy ein Problem bei der Fehlersuche und hat mich extra Zeit gekostet:
Im Config Export sind mir ja die Zeilen
    stick-table type ip size 50k expire 30m 
    stick on src
als verdächtig aufgefallen, aber eine Suche nach "stick" irgendwo in der GUI ist vergebens.
Und wieder mal darf ich die Implementierung in pfSense als Referenz hernehmen. Da heißt der Bereich im Backend (Pool) "Stick-table persistence" und die Einstellung "Stick tables", eben wie in der offiziellen HAproxy Dokumentation auch. Abgesehen, dass es da das Problem nicht gäbe, hätte man die relevante Einstellung raschee gefunden.
In OPNsense aber benötigt man für die HAproxy Konfiguration ein Wörterbuch zur Übersetzung der Begriffe. Aber leider konnte ich ein solches bislang auch noch nirgends finden.

Grüße



Naja, das hilft mir auch nicht wirklich weiter. Da finde ich zwar die Begriffe, die HAproxy selbst verwendet, aber keine Referenzen zu jenen in der GUI.