Hostnamen in der HAProxy-Konfigurationsdatei

7

Meine Datei haproxy.cfg hat zwei Backend-Server, die Hostnamen verwenden:

server ops-ca-revealv2e-prod-1 ops-ca-revealv2e-prod-1:443 cookie ops-ca-revealv2e-prod-1 ssl weight 1 maxconn 512 check

server ops-ca-revealv2e-prod-2 ops-ca-revealv2e-prod-2:443 cookie ops-ca-revealv2e-prod-2 ssl weight 1 maxconn 512 check

Diese Hostnamen sind Teil von Amazon OpsWorks und werden automatisch in / etc / hosts eingefügt, wenn eine Instanz hoch- oder heruntergefahren wird. Wenn ich versuche, HAProxy neu zu starten, wenn eine der Instanzen nicht verfügbar ist, wird folgende Fehlermeldung angezeigt:

[ALERT] 362/225440 (27202) : parsing [/opt/haproxy-ssl/haproxy.cfg:42] : 'server ops-ca-revealv2e-prod-2' : invalid address: 'ops-ca-revealv2e-prod-2' in 'ops-ca-revealv2e-prod-2:443'
[ALERT] 362/225440 (27202) : Error(s) found in configuration file : /opt/haproxy-ssl/haproxy.cfg
[ALERT] 362/225440 (27202) : Fatal errors found in configuration.

Gibt es eine Möglichkeit, HAProxy anzuweisen, zu überprüfen, ob ein Hostname gültig ist? Wenn es gültig ist, verwenden Sie es, wenn nicht, ignorieren Sie es.

Naijaba
quelle

Antworten:

7

In haproxy> = 1.7 sollten Sie in der Lage sein, die init-addrOption zu verwenden und keine anzugeben, um die DNS-Auflösung beim Start zu verhindern.

Aus den Dokumenten :

init-addr {last | libc | none | <ip>},[...]*

Geben Sie an, in welcher Reihenfolge die Serveradresse beim Start aufgelöst werden soll, wenn ein vollqualifizierter Domänenname verwendet wird. Es wird versucht, die Adresse aufzulösen, indem nacheinander jede der in der durch Kommas getrennten Listen genannten Methoden angewendet wird. Die erste Methode, die erfolgreich ist, wird verwendet. Wenn das Ende der Liste erreicht ist, ohne eine Arbeitsmethode zu finden, wird ein Fehler ausgegeben. Die Methode "last" schlägt vor, die Adresse auszuwählen, die in der Statusdatei angezeigt wird (siehe "Server-Statusdatei"). Die Methode "libc" verwendet den internen Resolver der libc (gethostbyname () oder getaddrinfo (), abhängig vom Betriebssystem und den Erstellungsoptionen). Die Methode "none" gibt ausdrücklich an, dass der Server ohne gültige IP-Adresse in einem ausgefallenen Zustand gestartet werden soll. Es kann nützlich sein, einige DNS-Probleme beim Start zu ignorieren. Warten, bis die Situation später behoben ist. Schließlich kann eine IP-Adresse (IPv4 oder IPv6) bereitgestellt werden.

Ihre Konfigurationszeile könnte also sein:

server s1 myhostname init-addr none

Bharat
quelle
4

Nein, es ist nicht innerhalb von Haproxy möglich.

Laut Handbuch ist das addressin der serverKonfigurationszeile

[...] die IPv4- oder IPv6-Adresse des Servers. Alternativ wird ein auflösbarer Hostname unterstützt, [...]

Mit anderen Worten, es ist nicht zulässig, nicht auflösbare Hostnamen in der Konfiguration zu verwenden.

Idee:

Jeder Teil der Adresszeichenfolge kann auf eine beliebige Anzahl von Umgebungsvariablen verweisen, indem vor ihrem Namen ein Dollarzeichen ('$') steht und diese optional mit geschweiften Klammern ('{}') eingeschlossen werden, ähnlich wie in der Bourne-Shell.

marcoc
quelle