Glatter Netzwerkdienstwechsel mit DNS-Diensten

Angenommen, der Dienstdomainname lautet example.domain, die ursprüngliche Server-IP-Adresse ist A. Aufgrund eines Serverumzugs oder einer IP-Änderung beträgt die neue Server-IP-Adresse B. Um einen nutzerfreundlichen Übergang zu gewährleisten, kann der Netzwerkdienst mit einem DNS-Dienst nahtlos umgeschaltet werden.

  1. Ursprünglicher Dienstzustand: example.domain wird auf die IP-Adresse A aufgelöst
  2. Übergangszustand: example.domain wird auf die IP-Adressen A und B aufgelöst
  3. Neuer Dienstzustand: example.domain wird auf die IP-Adresse B aufgelöst, IP-Adresse A wird entfernt

Hinweis: Wenn der Nutzer zwei Auflösungsadressen erhält, wählt der Client eine dieser Adressen für die Verbindung aus. Wenn die Verbindung fehlschlägt, versucht er es mit den anderen Adressen, um die Verfügbarkeit des Dienstes zu gewährleisten.

Da DNS-Auflösungen zwischengespeichert werden, muss der Übergangszustand für eine gewisse Zeit beibehalten werden, um sicherzustellen, dass alle Caches ablaufen.

Für den hier zu migrierenden DNS-Dienst kann im Übergangszustand ein DNS-rewrite eingerichtet werden, um den Migrationsprozess zu beschleunigen.

DNS-rewrite-Regeln für den Dienst A:

A-Dienst-rewrite

DNS-rewrite-Regeln für den Dienst B:

B-Dienst-rewrite

Der ursprüngliche Migrationsprozess wird erweitert zu:

  1. Ursprünglicher Dienstzustand: example.domain wird auf die IP-Adresse A aufgelöst
  2. Übergangszustand: example.domain wird im dns A-Dienst auf A und B und im dns B-Dienst auf B umgeschrieben
  3. Neuer Dienstzustand: example.domain wird auf die IP-Adresse B aufgelöst, IP-Adresse A wird entfernt

Wenn der Nutzer weiterhin den dns A-Dienst verwendet, erhält er zwei Adressen und hat eine 50%ige Wahrscheinlichkeit, den dns A-Dienst zu wählen.
Die andere Hälfte der Wahrscheinlichkeit führt zu einem Wechsel zum dns B-Dienst. Wenn der dns B-Dienst ausfällt, erfolgt ein Wechsel zurück zum dns A-Dienst. Wenn der dns B-Dienst nicht ausfällt, erhält der Nutzer nur eine Adresse und bleibt somit beim dns B-Dienst.
Auf diese Weise können wir den Ressourcenverbrauch des dns A-Dienstes schrittweise reduzieren, anstatt ihn sofort zu stoppen, und so eine noch glattere Migration erreichen.