[tlw. gelöst] HAproxy Konfiguration

Started by viragomann, November 26, 2024, 05:17:34 PM

Previous topic - Next topic
November 27, 2024, 06:13:20 PM #15 Last Edit: November 27, 2024, 06:17:04 PM by meyergru
Namensbasiert. Das map-File sieht doch genau so aus:


www.xyz.de    www-xyz_BACKEND
forum.xyz.de   forum-xyz_BACKEND
wiki.xyz.de      wiki-xyz_BACKEND
...


Wobei die _BACKENDs gemäß dem Tutorial eben Backends sind, die auf Real Server verweisen.

Da fügt man einfach weitere Backends an, die keinen Real Server haben, sondern nur je eine Weiterleitungs-Rule, wie oben beschrieben:


weiterleitung1.xyz.de    xyz1_REDIRECT
weiterleitung2.xyz.de    xyz2_REDIRECT
...


Wenn man Teile des Namens wiederverwenden will, muss natürlich die Regel entsprechend aufgebohrt werden, um HAproxy-Variablen zu verwenden. Dann reicht dafür eventuell eine Regel und ein paar Zeilen im Map-File, die alle das selbe Backend verwenden:


weiterleitunga.xyz.de    xyz_REDIRECT
weiterleitungb.xyz.de    xyz_REDIRECT
...


P.S.: Wildcards gehen im Map-File nicht.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Quote from: meyergru on November 27, 2024, 06:13:20 PM
Namensbasiert. Das map-File sieht doch genau so aus:


www.xyz.de    www-xyz_BACKEND
forum.xyz.de   forum-xyz_BACKEND
wiki.xyz.de      wiki-xyz_BACKEND
...


Wobei die _BACKENDs gemäß dem Tutorial eben Backends sind, die auf Real Server verweisen.
Ach ja, logisch. Im Map File ist ja das Backend einzutragen. Dass es nun kein tatsächliches ist, hat mich verwirrt.

Sollte klappen.
Okay, versuche ich morgen.
Danke.

Grüße

@meyergru
Geschafft!

Es braucht 2 Regeln. Das ging für mich aus deiner Erklärung nicht hervor und führte zur Unklarheit.
Eine für das http-request-redirect und eine weitere, die auf das Map File verweist und ich im Frontend eingebunden werden kann.

Ich kann auch noch bestätigen, dass Wildcards wie www.* (hab ich tatsächlich eingebaut :) ) im Map File funktionieren.

Ich muss, nachdem ich dieses eingerichtet habe, nochmal bekräftigen, die GUI ist alles andere als übersichtlich. Um einen Überblick zu bekommen, musste ich mir alle für den Zweck benötigen Konfigurationsteile heraus schreiben, das Backend, die beiden Regeln, das Frontend.

Eine GUI sollte eigentlich die Konfiguration erleichtern. Aber in dieser sind die Kategorien dermaßen zerpflückt, dass die Zusammenhänge vollkommen verloren gehen. Die verwendeten, vom HAproxy Konfig File abweichenden Bezeichnungen für die einzelnen Funktionen tun dann ein Übriges.
Das mit dem Map File ist klar, dass dies einen gesonderten Platz in der Konfig hat, weil es verschiedene Zwecke erfüllen kann. Aber ein Backend Pool da, zwei Regeln dort, im Frontend einbinden...

Gewiss, wenn man es ein paar mal gemacht hat, geht es einem wahrscheinlich problemlos von der Hand, aber für einen Neuling ist das nicht zu durchschauen.

Ja, man muss es ja nicht nutzen... Aber die Software nicht zu nutzen kann ja nicht die Intuition der Entwickler sein.

Wie auch immer, ich habe einiges gelernt.
Vielen Dank für die Unterstützung.

Grüße

December 10, 2024, 02:47:50 PM #18 Last Edit: December 10, 2024, 02:54:36 PM by viragomann
Hallo,

ich muss diesen Thread nochmals aufgreifen, nachdem die Sache nicht, wie erwartet, funktioniert.

Aus Freude an der Ordnung, die mir das Map File für die ganzen Redirects in die Konfiguration gebracht hat, habe ich für ein weiteres Backend mit 7 Hostnamen ein weiteres Map File erstellt und die Regel entsprechend geändert.
Hat auch funktioniert.

Jedoch habe ich gestern bemerkt, dass dir Redirects aus dem ersten Map File nicht mehr funktionieren. Bei Aufruf eines Hosts bekomme ich von HAproxy 503 zurück.

Wenn ich die Regel fürs 2. Map File aus dem Frontend entferne, geht es. Natürlich.
Beim Herumspielen mit den Regeln ist mir aufgefallen, dass immer die letzte Regel, die ich hinzufüge nichts bewirkt.
Schreibe ich alle Mappings in ein File und verwende eben nur die entsprechende Regel, funktionieren auch alle.
Alle Hostnamen und die beiden Backends in den Map Files sind eindeutig. Wildcards hatte ich entfernt, um dies sicher überprüfen zu können.

Eine Recherche, ob vielleicht nur 1 Map File desselben Typs (Hosts) erlaubt wären, brachte nichts. Aber bezüglich mehrere Map Files bin ich auf den Hinweis gestoßen, dass diese im Frontend per IF zu verknüpfen wären, was aber OPNsense nicht macht.
Die beiden Map File Regeln werden in der HAproxy Konfig einfach nacheinander beim Frontend eingetragen:
  use_backend %[req.hdr(host),lower,map_dom(/tmp/haproxy/mapfiles/674879807b26b5.22516524.txt)]
  use_backend %[req.hdr(host),lower,map_dom(/tmp/haproxy/mapfiles/67472b11b0a4a9.24401988.txt)]


Nachdem ich im Frontend keine Möglichkeit habe, Regeln zu verknüpfen, nehme ich an, dass OPNsense das automatisch machen müsste.
Könnte man das bitte einpflegen?
Die Logik, die die Konfig generiert, erkennt ja schon, dass es sich bei der Regel um eine Map File Regel handelt. Diese im Fall mehrere noch zu verknüpfen, sollte nicht mehr viel Aufwand geben.

Nach Verwendungszweck getrennte Map Files sind doch übersichtlicher, als alles in eines zu schreiben.

Grüße

Edit:
Bei solch einem Problem sollte man die OS Version nennen: 24.7.9
Im Change Log zur aktuellen 24.7.10 konnte ich aber nichts Diesbezügliches finden. Wurde also noch nichts daran geändert.

Wenn du möchtest, dass sich hier etwas tut, ist das Beste, einen Issue auf Github zu öffnen.
Die beiden Maps ohne logische Verknüpfung hintereinander zu schreiben, darf man ja sicher "Bug" nennen.

Durch Forenposts löst du in der Regel (!) keine Aktionen in der Entwicklung aus.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Das böse Wort wollte ich nicht verwenden, und so sicher war ich mir dessen auch nicht.

Ich dachte, ihr habt einen direkten Draht zu den zuständigen Leuten und könntet das formlos weitergeben.

Entwickler wie Franco oder Cedrik lesen hier mit, aber garantiert is da nix und ich habe keinen direkteren Draht als du auch.

Ich kann das auch nicht nachstellen, ich habe deine Anwendung nicht und bis auf eine einzige meiner vielen Firewalls auch nirgends HAproxy.

Daher bist der einzig qualifizierte Mensch für den Bugreport im Moment du. Kein Issue, keine Aktion  ;)
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Nur wenn man auf github bei den plugins eine issue öffnet bekommt der Maintainer auch was davon mit. Viele plugins haben verschiedene Maintainer und nicht alle lesen hier.
Hardware:
DEC740

Abgesehen davon sehe ich auch nicht, wo der Fehler liegen soll. Man braucht ja keine zwei Mapfiles für verschiedene Backends. Eins reicht völlig, es ist lediglich so, dass verschiedene Zeilen darin auf verschiedene Backends verweisen, die dann wiederum unterschiedliche Server bedienen.

Wenn man das besser lesbar gestalten will, kann man ja Kommentarzeilen einfügen.
Intel N100, 4 x I226-V, 16 GByte, 256 GByte NVME, ZTE F6005

1100 down / 440 up, Bufferbloat A+

Okay, ist erledigt.
.. für die "Nachwelt". Für meine Bedürfnisse hätte ich mich auch mit einem gemeinsamen Map File abfinden können.  ;)

Vielleicht aber noch eine Frage für meine künftigen Ambitionen an dieser Stelle:
Gibt es Ansätze, Map Files von außen zu generieren? Durch API od. per Script via SSH.

Das könnte bei vielen Domains doch hilfreich sein, und vor allem könnten Änderungen automatisiert werden.

Quote from: meyergru on December 10, 2024, 05:16:33 PM
Abgesehen davon sehe ich auch nicht, wo der Fehler liegen soll. Man braucht ja keine zwei Mapfiles für verschiedene Backends.
Es würde der Übersichtlichkeit und dem Komfort dienen.
Die in einem Map File zusammengefassten Domains erfüllen denselben Zweck. Wenn sich an deren Routing was ändern soll, gilt das für alle. Dann brächte ich nicht ein unübersichtliches Map File editieren, dessen Darstellung in der GUI zudem immer ziemlich mickrig geöffnet wird.

Man braucht auch nicht zwingend eine hübsche GUI, um die Funktionen von OPNsense umzusetzen, dennoch wurde eine gemacht.

Mehrere Map Files zu mergen, wäre auch ein gangbarer Weg und habe ich auf Github auch vorgeschlagen.

Wenn man das besser lesbar gestalten will, kann man ja Kommentarzeilen einfügen.

Danke für den Tipp.
Das hätte ich auch versucht. Wusste aber nicht, ob das auch akzeptiert wird. Und dein Link zur Syntax von Map Files funktioniert leider nicht mehr.