Erzwingen Sie, dass HAProxy DNS für den Back-End-Server sucht

13

Ich habe Haproxy 1.5.8, das einige Anfragen (basierend auf dem Pfad) an einen Dritten weiterleitet, über den wir keine Kontrolle haben.

Da die IP des Back-End-Servers beim Start einmal aufgelöst wird, bricht sie ab, wenn sich die IP ändert.

Gibt es eine Problemumgehung dafür? In nginx ist es möglich, eine interne Variable zu deklarieren und für X Sekunden zwischenzuspeichern. Ich habe keine ähnliche Lösung für HAProxy gefunden.

Bastien974
quelle

Antworten:

24

Mit der neuesten Version von HAProxy 1.6 gibt es eine Lösung für Ihr Problem. Sie können nun Resolver definieren und diese Ihrem Backend zuordnen. Die IP-Auflösung erfolgt dann zur Laufzeit.

resolvers dns
  nameserver public-0  xx.xx.xx.xx:53
  hold valid 1s

frontend http
  bind *:8000
  default_backend site-backend

backend site-backend
  balance leastconn
  server site sub.example.com:80 resolvers dns check inter 1000

StackOverflow diskutiert dies

Link zur entsprechenden Dokumentation

Mana
quelle
hmmm wenn ich das tue und anfange die Seite zu aktualisieren, bekomme ich innerhalb einer Minute oder so einen 503
Paulius Dragunas
Ich musste mehrere doppelte "Server" -Zeilen haben. discourse.haproxy.org/t/…
jamshid
1

Leider scheint es so, als sei dies noch in Arbeit.

Haben Sie darüber nachgedacht, einen separaten Nginx-Proxy zu verwenden? Damit Sie Anforderungen für dieses Backend an eine Nginx-Instanz weiterleiten, die dann die DNS-Auflösung vornimmt und die Anforderung weiterleitet? Nicht ideak, kann aber in einer verkehrsarmen Umgebung funktionieren.

David Hulick
quelle
Es gibt immer diese Lösung, aber in der Hoffnung, eine Lösung zu finden, die es einfach hält.
Bastien974,