DNS-Lastausgleich mit Integritätsprüfungen

DNS-Lastausgleich mit Integritätsprüfungen

Ich habe hier ein Problem.

Wir verfügen über ein Setup aus Compute-Instanzen in zwei unterschiedlichen Cloud-Regionen von einem Cloud-Anbieter, den ich hier nicht erwähnen möchte, außer um festzustellen, dass die Arbeit damit mühsam ist.

Diese Instanzen verwenden (offensichtlich) private.

Wir können keine Lastausgleichslösung basierend auf einem VIP verwenden, da dieser Cloud-Anbieter keine regionenübergreifenden privaten IPs zulässt und ein NLB daher nicht in Frage kommt.

Was wir brauchen, ist ein DNS-Server (oder eigentlich mindestens zwei) mit der Möglichkeit, den Zustand des A-Records zu überprüfen. Hier ein Beispiel:

  1. Service:
  • Server A – Region 1 – IP 10.1.1.100
  • Server B – Region 2 – IP 172.26.1.100
  1. DNS-Balancer (die dieselben Datensätze und dieselbe Konfigurationsdatenbank gemeinsam nutzen):
  • DNS A – Region 1 – IP 10.1.1.50
  • DNS B – Region 2 – IP 172.26.1.50
  • DNS-Eintrag 1: whatever.local – 10.1.1.50
  • DNS-Eintrag 2: whatever.local – 172.26.1.50
  1. Kunden:
  • Kunde A – Jede Region – Jede IP
  1. Szenario A:
  • Client A hat sowohl DNS A als auch DNS B als DNS-Server konfiguriert.
  • Client A fordert „whatever.local“ von DNS-Server A an
  • Server A ist offline
  • DNS-Server A führt Backend-Integritätsprüfungen durch, erkennt dies und antwortet mit der IP-Adresse von Server B (172.26.1.50).
  • TTL wird auf 0 (Null) oder einen entsprechend niedrigen Wert eingestellt, um das Caching zu vermeiden.
  1. Szenario B:
  • Client A hat sowohl DNS A als auch DNS B als DNS-Server konfiguriert.
  • Client A fragt nach „whatever.local“, DNS-Server A ist ausgefallen, also antwortet DNS-Server B
  • Server B ist offline
  • DNS-Server B führt Backend-Healthchecks durch, erkennt es und antwortet mit der IP-Adresse von Server A (10.1.1.100).
  • TTL wird auf 0 (Null) oder einen entsprechend niedrigen Wert eingestellt, um das Caching zu vermeiden.

Im Wesentlichen: Ein DNS-Server, der die Integrität der IPs von DNS-Einträgen überprüft.

Grüße.

Antwort1

Client A hat sowohl DNS A als auch DNS B als DNS-Server konfiguriert.

ähm, Sie werden sich auf eine Menge Ärger einstellen, wenn eine Maschine mehrere DNS-Server verwendet, die mit unterschiedlichen Split-Daten konfiguriert sind. Sie müssten wirklich Ihren eigenen aufgelösten Stapel auf dem Überwachungshost erstellen, um ein vorhersehbares Verhalten zu erzielen.

Dieser Dienst kann ohne Aufspaltung des DNS überwacht werden:

service.example.com.  CNAME region1_service.example.com.
service.example.com.  CNAME region2_service.example.com.
region1_service.example.com. A 10.1.1.50
region2_service.example.com. A 172.26.1.50

Und überwachen Sie Folgendes:

  • service.beispiel.com
  • region1_service.example.com
  • region2_service.example.com

Alternativ Ihr Monitoring-AgentMaiunterstützt das Festlegen expliziter Adressen, sodass Sie jede Instanz separat überwachen können. Allerdings besteht dann die Komplikation, dass ein Ausfall auf BEIDEN Knoten gemeldet wird, was viel schwerwiegender ist als ein Ausfall auf einem der Knoten.

Sie sollten auch prüfen, WIE Ihr Überwachungsclient rrDNS implementiert. Die Failover-Erkennungszeit bei Einhaltung der Regeln beträgt ca. 5 Minuten, aber Browser wenden einen Schwellenwert von etwa 10 Sekunden für die erste Verbindung und <1 Sekunde für nachfolgende Anforderungen an.

Antwort2

Letztendlich gibt es Lösungen dafür. Dies ist im Wesentlichen das, was ein GSLB bietet, es gibt viele kommerzielle.

Wenn Sie es mit einer gewissen Einfachheit und Open Source tun möchten, können Sie PowerDNS mit LUA-Einträgen auf einem PowerDNS-Cluster verwenden.

verwandte Informationen