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.

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


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.


Es gibt immer diese Lösung, aber in der Hoffnung, eine Lösung zu finden, die es einfach hält.
Bastien974,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.