haproxy warten, bis dns das backend auflöst

2079
Alexey

Ich habe 2 Docker-Container im selben Netzwerk - webund proxyläuft haproxymit Backend

backend web server web web:80 check 

Auch init-addrist auf gesetzt last,libc,none, so dass es nicht fehlschlägt, wenn webbeim Start nicht aufgelöst werden kann .

Wenn ich proxyzuerst anfange, haproxyberichtet could not resolve address 'web', disabling server.

Dann fange ich an web. Es wird durch den Namen erreichbar proxy, auf Ping und Telnet antworten. Aber haproxyimmer noch webverwöhnt.

Ich erwarte haproxy, dass das Backend webim Standardintervall erneut geprüft wird (alle 2 Sekunden laut Dokumentation), und erneutes Neigen - Versuch, DNS bei jeder Überprüfung erneut aufzulösen.

Wie kann ich konfigurieren haproxy, um zu warten, bis dns den Namen des Backend-Servers auflöst und dieses Backend dann automatisch hochläuft?

2
Welche Version von HAProxy (`haproxy -v`)? Michael - sqlbot vor 6 Jahren 0
es ist aus dem Docker Store, spätestens 1.7.5 Alexey vor 6 Jahren 0

1 Antwort auf die Frage

1
MoEmEn

Ihre aktuelle Konfiguration ermöglicht es HAProxy, Hostnamen nur beim Start aufzulösen, wie hier erwähnt . Da es webbeim Start nicht aufgelöst werden kann, wird der betreffende Server deaktiviert.
Um HAProxy tun DNS - Auflösungs nach dem Start Sie hinzufügen müssen, um Resolvern Abschnitt .
Beispiel:

resolvers mydns nameserver dns1 10.0.0.1:53 nameserver dns2 10.0.0.2:53  backend web server web web:80 check init-addr last,libc,none resolvers mydns 

Wann webimmer lösbar ist, werden Sie in den Protokollen so etwas wie folgt:
Server web/web ('web') is UP/READY (resolves again).