2016-06-13 8 views
6

Beginnen wir mit ein paar Fakten Auflistung:Migrating Redis AWS ElastiCache mit minimaler Ausfallzeit

  • ElastiCache kann kein Sklave meiner bestehenden Redis eingerichtet werden. Wirkliche Schande, das wäre so viel effizienter.
  • Ich habe nur einen Redis-Server zu migrieren, mit etwa 3 GB Daten.
  • Die Ausfallzeit muss weniger als 10 Minuten betragen. Ich nehme an, dass das übliche "Stoppt die Seite, Stop-Redis, Provision-Cluster mit Snapshot" länger dauern wird.

ähnlich wie diese Frage: How do I set an elasticache redis cluster as a slave?

Eine Idee, wie dies funktionieren könnte:

  1. Set Redis einen AOF und Trigger BGSAVE zur gleichen Zeit zu nutzen.
  2. Wenn BGSAVE fertig ist, stellen Sie den Elasticache-Cluster mit RDB-Seed bereit.
  3. Stoppen Sie die Site und fahren Sie meine lokale Redis-Instanz herunter.
  4. Verwenden Sie ein AOF-Tool, um die AOF in Elasticache wiederzugeben.
  5. Starten Sie die Site erneut, zeigte auf den Elasticache-Cluster.

Meine Fragen:

  1. Wie kann ich garantieren, dass meine AOF-Datei an genau dem Punkt beginnt die RDB-Datei endet, und dass keine Daten zwischen geschrieben werden?
  2. Gibt es ein AOF-Tool vom Maintainer Redis unterstützt, oder sie sind alle Lösungen von Drittanbietern, und damit (möglicherweise) von fragwürdiger Zuverlässigkeit? *

* Keine Handlung zu allen Autoren solcher Werkzeuge bestimmt Ich bin mir sicher, dass sie großartig sind. Ich fühle mich viel sicherer bei der Verwendung eines Tools, das vom selben Team wie das Produkt geschrieben wurde, um potenzielle Kompatibilitätsprobleme zu vermeiden.

+0

Kann Ihre App ohne Redis arbeiten? Wird es nur langsamer (kein Zugriff auf den Cache) oder wird es scheitern? –

+0

Wie aktiv sind Ihre Nutzer über Nacht? 3 Uhr morgens? Das war der Zeitpunkt, an dem ich eine große Änderung in der Produktions-App migrieren würde, die für unsere Geschäftsbenutzer erforderlich war. Selbst wenn Ihre App rund um die Uhr genutzt wird, haben Sie wahrscheinlich eine geringe Nutzungsdauer, die Sie einplanen könnten, um die bemerkten Auswirkungen zu minimieren, wenn Sie während einer Migration 30 Minuten offline sind. –

+0

App ist meistens ohne Redis nutzlos, und es gibt nicht wirklich ein tägliches Nutzungsmuster. Es ist eine ständig geladene Anwendung über einen Zeitraum von 24 Stunden. Was lässt Sie vermuten, dass es nur 30 Minuten Ausfallzeit sind? – arrtchiu

Antwort

3

Ich habe nur eine Redis-Server zu migrieren, mit etwa 3 GB Daten

Ich würde stoppen, die REDIS bis S3 speichern und dann zu einem neuen Cluster zu laden.

Ich rate 10 Minuten, um die Datei zu speichern und es in S3 zu bekommen.
10 Minuten, um nur einen Elasticache-Cluster aus diesen Daten zu starten. Verleiht Ihnen zehn zusätzliche Minuten zum Konfigurieren und Testen.

Aber es gibt einen einfachen Weg GENAU wie lange zu wissen. Führen Sie eine Testmigration durch.

  1. DONT Ihr Live-System
  2. Run BGSAVE stoppen und einen Dump Ihrer Redis erhalten (lassen Sie alles normal läuft)
  3. Bewegung der Dump S3
  4. Start ein ElastiCache Cluster für sie.

Nimm DETAILLIERTE Hinweise, ZEIT jeden Schritt, kopiere die Befehle in ein Notizblockfenster.

Legen Sie ein Word/Excel-Dokument, so dass Sie ein Migrationsdokument haben. So weißt du, wie lange es dauert und es gibt keine Überraschungen. Lassen Sie uns wissen, wie es geht.

0

Es gibt mehrere Möglichkeiten, die Daten ohne Ausfallzeiten zu migrieren. Sie sind jedoch schwerer zu erreichen.

  1. könnten Sie Ihre App schreiben zu zwei redis Instanzen gleichzeitig haben - von denen eine auf EG wäre. Sobald die Caches beide "warm" sind, können Sie Ihre App einfach neu starten und aus dem EC-Cache lesen.

  2. Sie könnten zunächst zu EC2 statt zu EC migrieren. nicht wirklich, was du zu hören hofftest, stelle ich mir vor. Das ist einfach, weil Sie EC2 als Salve Ihrer Redis-Instanz einstellen können. Außerdem ist die Migration von EC2 zu EC etwas einfacher (die Daten sind bereits in AWS), so dass Benutzer mit großen Datenmengen davon profitieren.

  3. Sie könnten theoretisch die Befehle vom Client abfangen und sie an EC senden und so effektiv "replizieren". Aber das erfordert etwas Programmierung (ich glaube nicht, dass ein Werkzeug wie dieses ATM existiert) und wäre schwer mit mehreren, ephemeren Kunden.

Verwandte Themen