Der beste Weg, um die IP-Adresse der Site zu ändern - aus Sicht des Endbenutzers?

10

Ich habe hier eine Reihe relevanter Fragen und Antworten gelesen, bin mir aber immer noch nicht sicher, was die beste Antwort ist.

Ich verschiebe einige Websites von der IP-Adresse "1.abc" nach "2.def". Ab sofort setze ich im vorhandenen DNS alle TTL auf 300 Sekunden und habe eine neue DNS-Zone zur Verwendung bereit (auf AWS Route 53), mit neuen Nameservern und allen TTLs bei 60 Sekunden. Ich glaube also, dass ich aus DNS-Sicht bereit bin. Nach dem Umzug werde ich nach einigen Tagen die TTL auf der Route 53 auf vernünftigere Zahlen einstellen.

Ich habe alle meine Benutzer vor dem Umzug gewarnt und habe ein definiertes Zeitfenster für den Umzug. Ich sagte ihnen, dass sie nach Abschluss des Umzugs und wenn 24 Stunden vergangen sind und sie immer noch die alten (gesperrten) Sites sehen, ihren Computer neu starten sollten, um eine lokale DNS-Cache-Leerung zu erzwingen.

Ich verstehe nicht, wie der Browser (Cache) des Benutzers dabei eine Rolle spielt. Meine eigenen Experimente mit einer lokalen Hosts-Datei (Win7) haben ergeben, dass der Browser die alte IP-Adresse nicht loslässt - ich musste in den Verlauf gehen -> alles löschen , damit der neue Standort angezeigt wird auch danachipconfig /flushdns

(BEARBEITEN) - Ich habe keinen Root-Zugriff auf den alten Server, daher kann ich die akzeptierte Antwort auf diese Frage nicht implementieren .

Frage: Ich möchte wirklich nicht, dass meine Benutzer sich damit befassen müssen. Kann ich also etwas tun, um alle Browser zum erneuten Zwischenspeichern zu zwingen? Und wenn ja, wie lange lasse ich es eingeschaltet?

Vielen Dank...

CC
quelle
My own experiments with a local hosts file (Win7) tell me there is something about the browser that is not letting the old IP address goKönnen Sie dazu einige Informationen geben? Afaik, Browser zwischenspeichern DNS-Einträge nicht länger als 1 Minute.
Tanmay
Ich bin mir nicht sicher, aber nach mehreren ipconfig / flushdns und "ctrl-F5" (in Firefox) bekam ich weiterhin eine Mischung aus Seiten sowohl von der alten als auch von der neuen Site ... musste schließlich "alles" löschen und neu starten Browser. Ich möchte nicht, dass meine Benutzer ähnliche
CC
JBTW, die Lösung in dem von Ihnen angegebenen Link, kann auch funktionieren, wenn Sie Root-Zugriff auf den neuen Server haben. Aktualisieren Sie die DNS-Einträge und leiten Sie den gesamten Datenverkehr vom neuen zum alten Server weiter, bis DNS ordnungsgemäß weitergegeben wurde.
Tanmay
danke ... aber dann müsste ich das alte später wieder mit dem neuen (datenbanken usw.) synchronisieren, nein?
CC
Sie müssen die Datenbank einmal synchronisieren, bevor Sie die Weiterleitung deaktivieren.
Tanmay

Antworten:

15

Nein, das kannst du nicht. Das Problem ist, dass die DNS-Antwort überall zwischen Benutzer und DNS-Server zwischengespeichert werden kann und es keine Möglichkeit gibt, sie ungültig zu machen.

Was Sie jedoch tun können - Sobald Sie Daten synchronisiert haben und Ihr zweiter Standort bereit ist, können Sie den ursprünglichen Server so konfigurieren, dass er sich als Proxy verhält, und alle Anforderungen an den neuen Speicherort weiterleiten.

Auf diese Weise können Sie Ausfallzeiten Ihrer Website von fast 0 Sekunden erreichen.

Aktualisieren

Wenn Sie keinen Root-Zugriff haben, gibt es mehrere Möglichkeiten:

  • Führen Sie das Proxying in PHP durch

  • Konfigurieren Sie den Proxy auf dem zweiten Server (wenn Sie dort Root-Zugriff haben), wechseln Sie den DNS und ändern Sie den Proxy auf den Webserver, wenn Sie bereit sind

  • Diese Methode kann zu Problemen führen. Haben Sie 2 Adressen (www.domain.tld und www2.domain.tld). Konfigurieren Sie www2 (das gleiche wie www) und stellen Sie die richtigen DNS-Einträge ein. Bereiten Sie dann die WWW-Version Ihrer Site vor und wechseln Sie den DNS. Stellen Sie die Umleitung aller Anforderungen auf dem alten Server auf die Unterdomäne www2 ein.

Yarik Dot
quelle
Würde es Ihnen etwas ausmachen, dies ein wenig zu erweitern oder mit einem Zeiger auf einen Artikel oder eine Frage / Antwort, die ich lesen könnte? Ich habe keinen Root-Zugriff auf den vorhandenen Server, daher kann ich IP-Tabellen nicht direkt bearbeiten. Gibt es also möglicherweise einen alternativen Weg?
CC
@CC Vielleicht haben Sie Zugriff darauf, Ihre Anwendung durch eine HAProxy-Instanz zu ersetzen? Oder ersetzen Sie Ihren Anwendungscode durch einen anderen, der die Anfrage lediglich an den neuen Server weiterleitet?
Jason Martin
@JasonMartin - Ich habe Zugriff auf .htaccess und den Anwendungscode. Also, ja, ich könnte wahrscheinlich die angeforderte URL abrufen und an die neue IP-Adresse weiterleiten - vielleicht sollte ich das versuchen?
CC
@CC das klingt dann vielversprechend. DNS ist ein "letztendlich konsistentes" Tool, und einige DNS-Server legen in ihrer TTL Etagen fest und ignorieren Ihre 300er. Wenn Sie dort eine Unterbrechung vermeiden möchten, ist ein Weiterleitungs-Proxy die beste Wahl.
Jason Martin
4

Theoretisch sollte das Festlegen der TTL der Domäne auf einen niedrigen Wert und das Warten auf diese Änderung und das anschließende Ändern der IP zu einer nahezu transparenten Migration führen. Schließlich ist das der springende Punkt bei der Konfigurierbarkeit der TTL.

In der Praxis konfigurieren Menschen Dinge falsch und Werkzeuge brechen. Aus diesem Grund müssen Sie Ihren Benutzern möglicherweise Anweisungen geben, um ihren lokalen Cache zu leeren, wenn die Dinge nicht richtig funktionieren.

Du machst aber nichts falsch.

Leichtigkeitsrennen im Orbit
quelle
Sollte ich sofort auf das neue AWS Route 53-DNS mit der alten IP-Adresse umsteigen, ändern Sie nach Abschluss der Migration einfach die IP-Adresse in die neue? - oder einfach den DNS auf den neuen ändern und gleichzeitig die IP ändern?
CC
1
@CC: Ich bin kein Netzwerkadministrator, nehmen Sie dies also mit einer Prise Salz (und ich freue mich, etwas anderes von ServerFault-Gurus zu hören), aber ich persönlich würde empfehlen, nicht beide gleichzeitig zu ändern. Lassen Sie Ihr DNS aussortieren, führen Sie dann die IP-Änderung durch und lassen Sie das neue DNS seine Arbeit erledigen, indem Sie Ihnen bei diesem letzten Teil helfen.
Leichtigkeitsrennen im Orbit
1
Nun, ich habe ein Experiment versucht. An einem Standort habe ich die DNS-Stunden zuvor geändert und später die IP-Adresse des A-Eintrags geändert. Hat perfekt funktioniert. Die andere Seite habe ich beide gleichzeitig geändert. Es wurde stundenlang zwischen alter und neuer IP-Adresse gewechselt - ich habe schließlich die AWS Route 53-Zone gelöscht und sie auf die gleiche Weise wie die erste Site erneut ausgeführt. Hat perfekt funktioniert. Also keine Prise Salz nötig - Sie waren genau richtig!
CC
1

Ihre alte Adresse wird zwangsläufig für eine lange Zeit zwischengespeichert und verwendet - meistens von Bots.

Wie ich es machen würde:

  • Erstellen Sie einen A-Datensatz, der beispielsweise www2.yourdomain.comauf eine neue IP verweist. Dieser Datensatz sollte niemals zuvor verwendet worden sein. daher nie zwischengespeichert.
  • Leiten Sie Abfragen auf dem alten Server um www2.yourdomain.com
  • Überwachen Sie Weiterleitungen, und entfernen Sie den alten Server, wenn der Datenverkehr auf ein akzeptables Maß abfällt.
  • Und schließlich, sobald der alte Server entfernt wurde, leiten Sie www2.yourdomain.comzu weiter www.yourdomain.com.

Stellen Sie sicher, dass Sie 301 permanente Weiterleitungen verwenden. https://en.wikipedia.org/wiki/HTTP_301

ClickLabs
quelle
Mein Bauchgefühl ist , dass er sollte nicht 301 für die erste Runde von Umleitungen verwenden, aber nur für die zweiten. Gibt es einen bestimmten Grund, den er sollte, der möglicherweise nur jemandem mit esoterischer SEO-Weisheit bekannt ist?
Random832
@ Random832 Eine permanente Anweisung weist den Benutzeragenten an, die alte URL zu vergessen und z. B. Lesezeichen zu aktualisieren, um auf die neue URL zu verweisen (damit sie beim nächsten Mal möglicherweise direkt auf die neue URL zugreifen können). Es schadet nicht, später wieder umzuleiten (oder sogar zur ursprünglichen URL zurückzukehren). Eine vorübergehende Weiterleitung hingegen weist den Benutzeragenten an, die ursprüngliche URL beizubehalten (da die Weiterleitung möglicherweise beim nächsten Mal an ein anderes Ziel oder gar nicht erfolgt). Daher würde bei vorübergehenden Weiterleitungen die Umleitungsüberwachung niemals auf ein "akzeptables Niveau" fallen.
Hagen von Eitzen
@HagenvonEitzen Es wird auf ein akzeptables Niveau fallen, da Browser die IP-Adresse des alten Servers für www.yourdomain.com nicht mehr abrufen. Dies ist eine DNS-Sache und wird von der Art der verwendeten HTTP-Umleitung nicht beeinflusst. Und "weil die Weiterleitung passieren könnte ... beim nächsten Mal überhaupt nicht" ist daher genau richtig.
Random832
0

Klingt so, als würden Sie gleichzeitig Ihre Nameserver ändern? Aufgrund der Art und Weise, wie Nameserver erkannt werden, dauert die Aktualisierung viel länger als bei einem normalen Datensatz - häufig etwa 24 Stunden oder länger.

Ich würde Ihnen dringend empfehlen, das DNS bei Ihrem aktuellen Anbieter zu aktualisieren, bevor Sie das DNS ändern, oder Ihre Nameserver 7 Tage vor dem Ändern der Website-IP zu ändern.

Moderne Computer und Browser sind ziemlich zuverlässig darin, TTLs mit DNS zu befolgen, aber Sie müssen die gesamte Kette verstehen, um die besten Ergebnisse zu erzielen.

Kodatorium
quelle
Danke, und ja, dies spiegelt meinen Kommentar unter der Antwort von Lightness oben wider. Die Resolver haben die Nameserver ziemlich schnell aktualisiert - innerhalb von Minuten. Der Schlüssel war, dies zuerst zu tun und dann einige Stunden zu warten, bevor die Ziel-IP-Adresse geändert wird. Beides auf einmal war schlecht ... sehr schlecht.
CC