Verwenden der regionsübergreifenden Neptune-Streams-Replikation zur Notfallwiederherstellung - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden der regionsübergreifenden Neptune-Streams-Replikation zur Notfallwiederherstellung

Neptune stellt zwei Möglichkeiten für die Implementierung regionsübergreifender Failover-Funktionen bereit:

  • Kopieren und Wiederherstellen regionsübergreifender Snapshots

  • Verwenden von Neptune-Streams zur Replikation von Daten zwischen zwei Clustern in zwei verschiedenen Regionen.

Das Kopieren und Wiederherstellen regionsübergreifender Snapshots führt zum geringsten operativen Aufwand für die Wiederherstellung eines Neptune-Clusters in einer anderen Region. Das Kopieren eines Snapshots zwischen Regionen kann jedoch eine erhebliche Datenübertragungszeit erfordern, da ein Snapshot eine vollständige Sicherung des Neptune-Clusters darstellt. Daher kann das regionsübergreifende Kopieren und Wiederherstellen von Snapshots für Szenarien verwendet werden, die lediglich ein Recovery Point Objective (RPO) von einigen Stunden und ein Recovery Time Objective (RTO) von einigen Stunden erfordern.

Ein Recovery Point Objective (RPO) wird anhand der Zeit zwischen Sicherungen gemessen. Es definiert, wie viele Daten zwischen dem Zeitpunkt der letzten Sicherung und dem Zeitpunkt, an dem die Datenbank wiederhergestellt wird, möglicherweise verloren gingen.

Ein Recovery Time Objective (RTO) wird anhand der Zeit gemessen, die für die Durchführung einer Wiederherstellung benötigt wird. Dies ist die Zeit, die der DB-Cluster benötigt, um nach einem Ausfall einen Failover zu einer wiederhergestellten Datenbank auszuführen.

Neptune-Streams ermöglichen die kontinuierliche Synchronisierung von Neptune-Sicherungs-Clustern mit dem primären Produktions-Cluster. Wenn ein Fehler auftritt, erfolgt ein Failover Ihrer Datenbank zum Sicherungs-Cluster. Dies reduziert RPO und RTO auf Minuten, da Daten ständig zum Sicherungs-Cluster kopiert werden, der jederzeit sofort als Failover-Ziel verfügbar ist.

Der Nachteil dieser Verwendung von Neptune-Streams besteht darin, dass der operative Aufwand für die Wartung der Replikationskomponenten und die Kosten für die kontinuierliche Ausführung eines zweiten Neptune-DB-Clusters erheblich sein können.

Einrichten der Neptune-Neptune-Replikation

Ihr primärer Produktions-DB-Cluster befindet sich in einer VPC in einer bestimmten Quellregion. Zur Notfallwiederherstellung müssen Sie vor allem drei Dinge in einer anderen Wiederherstellungsregion replizieren oder emulieren:

  • Die im Cluster gespeicherten Daten.

  • Die Konfiguration des primären Clusters. Dies würde Aspekte wie IAM-Authentifizierung, Verschlüsselung, DB-Cluster-Parameter, Instance-Parameter, Instance-Größen usw. umfassen.

  • Die verwendete Netzwerktopologie, einschließlich der Ziel-VPC, ihrer Sicherheitsgruppen usw.

Sie können Neptune-Verwaltungs-APIs wie die folgenden verwenden, um diese Informationen zu sammeln:

Mit den gesammelten Informationen können Sie das folgende Verfahren verwenden, um einen Sicherungs-Cluster in einer anderen Region einzurichten, zu dem Ihr Produktionscluster bei einem Fehler einen Failover ausführen kann.

1: Aktivieren von Neptune-Streams

Mit ModifyDBClusterParameterGroup können Sie den Parameter neptune_streams auf 1 festlegen. Starten Sie anschließend alle Instances im DB-Cluster neu, damit die Änderung wirksam wird.

Sie sollten nach der Aktualisierung von Neptune-Streams mindestens einen Vorgang zum Hinzufügen oder Aktualisieren für den DB-Quell-Cluster ausführen. Dies füllt den Änderungs-Stream mit Datenpunkten, auf die später verwiesen werden kann, wenn der Produktions-Cluster erneut mit dem Sicherungs-Cluster synchronisiert wird.

2: Erstellen einer neuen VPC in der Region, in der Sie Ihren Sicherungs-Cluster einrichten möchten

Bevor Sie einen neuen Neptune-DB-Cluster in einer anderen Region als der Region Ihres primären Clusters erstellen, müssen Sie in der Zielregion eine neue VPC einrichten, um den Cluster zu hosten. Die Konnektivität zwischen primären und Sicherungs-Clustern wird mittels VPC-Peering hergestellt, bei dem Datenverkehr über private Subnetze in verschiedenen VPCs verwendet wird. Um jedoch ein VPC-Peering zwischen zwei VPCs einzurichten, dürfen sich ihre CIDR-Blöcke oder IP-Adressräume nicht überschneiden. Das bedeutet, dass Sie nicht einfach die Standard-VPC in beiden Regionen verwenden können, da der CIDR-Block für eine Standard-VPC stets derselbe ist (172.31.0.0/16).

Sie können eine vorhandene VPC in der Zielregion verwenden, solange sie die folgenden Bedingungen erfüllt:

  • Sie besitzt keinen CIDR-Block, der sich mit dem CIDR-Block der VPC überschneidet, in der sich der primäre Cluster befindet.

  • Es besteht noch kein Peering mit einer anderen VPC, die denselben CIDR-Block wie die VPC hat, in dem sich der primäre Cluster befindet.

Wenn in der Zielregion keine geeignete VPC verfügbar ist, müssen Sie eine VPC mittels der Amazon-EC2-API CreateVpc erstellen.

3: Erstellen eines Snapshots des primären Clusters und dessen Wiederherstellung zur Zielregion der Sicherung

Erstellen Sie jetzt einen neuen Neptune-Cluster in einer geeigneten VPC in der Sicherungszielregion als Kopie des Produktions-Clusters:

Erstellen einer Kopie des Produktions-Clusters in der Sicherungsregion
  1. Erstellen Sie in der Sicherungszielregion ermeut die Parameter und Parametergruppen, die vom DB-Produktions-Cluster verwendet werden. Sie können dies mittels CreateDBClusterParameterGroup, CreateDBParameterGroup, ModifyDBClusterParameterGroup und ModifyDBParameterGroup ausführen.

    Beachten Sie, dass die APIs CopyDBParameterGroup und CopyDBClusterParameterGroup zurzeit kein regionsübergreifendes Kopieren unterstützen.

  2. Verwenden Sie CreateDBClusterSnapshot, um einen Snapshot des Produktions-Clusters in der VPC in der Produktionsregion zu erstellen.

  3. Verwenden Sie CopyDBClusterSnapshot, um den Snapshot zur VPC in der Zielregion der Sicherung zu kopieren.

  4. Verwenden Sie RestoreDBClusterFromSnapshot, um mittels des kopierten Snapshots einen neuen DB-Cluster in der VPC in der Sicherungszielregion zu erstellen. Verwenden Sie die Konfigurationseinstellungen und Parameter, die Sie aus dem primären Produktions-Cluster kopiert haben.

  5. Der neue Neptune-Cluster ist jetzt vorhanden, enthält jedoch keine Instances. Erstellen Sie über CreateDBInstanceeine neue primäre-/Writer-Instance mit demselben Instance-Typ und derselben Instance-Größe wie die Writer-Instance des Produktions-Clusters. Zu diesem Zeitpunkt müssen Sie keine zusätzlichen Read-Replicas erstellen, es sei denn, Ihre Sicherungs-Instance wird verwendet, um vor einem Failover einen Lese-E/A in der Zielregion bereitzustellen.

4: Einrichten von VPC-Peering zwischen der VPC des primären Clusters und der VPC des neuen Sicherungs-Clusters

Mit dem Einrichten von VPC-Peering ermöglichen Sie der VPC des primären Clusters die Kommunikation mit der VPC des Sicherungs-Clusters, als ob sie sich im selben privaten Netzwerk befinden würden. Führen Sie hierzu die folgenden Schritte aus:

  1. Rufen Sie von der VPC des Produktions-Clusters aus die API CreateVpcPeeringConnection auf, um die Peering-Verbindung herzustellen.

  2. Rufen Sie von der VPC des Sicherungs-Ziel-Clusters aus die API AcceptVpcPeeringConnection auf, um die Peering-Verbindung anzunehmen.

  3. Verwenden Sie von der VPC des Produktions-Clusters aus die API CreateRoute, um der Routing-Tabelle der VPC eine Route hinzuzufügen, die den gesamten Datenverkehr zum CIDR-Block der Ziel-VPC umleitet, sodass dieser die VPC-Peering-Präfixliste verwendet.

  4. Verwenden Sie auf ähnliche Weise von der VPC des Sicherungs–Ziel-Clusters aus die API CreateRoute, um der Routing-Tabelle der VPC eine Route hinzuzufügen, die den Datenverkehr zur VPC des primären Clusters leitet.

5: Einrichten der Neptune-Streams-Replikationsinfrastruktur

Nachdem beide Cluster bereitgestellt sind und die Netzwerkkommunikation zwischen beiden Regionen eingerichtet wurde, verwenden Sie die AWS CloudFormation Neptune-to-Neptune-Vorlage, um die Neptune Streams-Consumer-Lambda-Funktion mit der zusätzlichen Infrastruktur bereitzustellen, die die Datenreplikation unterstützt. Führen Sie dies in der VPC des primären Produktions-Clusters aus.

Die Parameter, die Sie für diesen Stack angeben müssen, sind: AWS CloudFormation

  • NeptuneStreamEndpoint   –   Der Stream-Endpunkt für den primären Cluster im URL-Format. Zum Beispiel: https://(cluster name):8182/pg/stream.

  • QueryEngine   –   Dies muss gremlin, sparql oder openCypher sein.

  • RouteTableIds   –   Ermöglicht Ihnen das Hinzufügen von Routen für einen DynamoDB-VPC-Endpunkt und für einen VPC-Überwachungsendpunkt.

    Sie müssen zwei weitere Parameter (CreateMonitoringEndpoint und CreateDynamoDBEndpoint) auf true festlegen, wenn sie nicht bereits in der VPC des primären Clusters vorhanden sind. Wenn sie bereits existieren, stellen Sie sicher, dass sie auf False gesetzt sind. Andernfalls schlägt die AWS CloudFormation Erstellung fehl.

  • SecurityGroupIds   –   Gibt die Sicherheitsgruppe an, die vom Lambda-Consumer für die Kommunikation mit dem Neptune-Stream-Endpunkt des primären Clusters verwendet wird.

    Fügen Sie im Sicherungs-Ziel-Cluster eine Sicherheitsgruppe hinzu, die Datenverkehr von dieser Sicherheitsgruppe zulässt.

  • SubnetIds   –   Eine Liste der Subnetz-IDs in der VPC des primären Clusters, die vom Lambda-Consumer für die Kommunikation mit dem primären Cluster verwendet werden können.

  • TargetNeptuneClusterEndpoint   –   Der Cluster-Endpunkt (nur Hostname) des Ziel-Clusters für die Sicherung.

  • TargetAWSRegion— Die AWS Region des Ziel-Backup-Clusters, z. B.us-east-1). Sie müssen diesen Parameter nur angeben, wenn sich die AWS Region des Ziel-Backup-Clusters von der Region des Neptune-Quell-Clusters unterscheidet, wie im Fall einer regionsübergreifenden Replikation. Wenn Quell- und Zielregion identisch sind, ist dieser Parameter optional.

    Beachten Sie, dass der Vorgang fehlschlägt, wenn der TargetAWSRegion Wert keine gültige AWS Region ist, die Neptune unterstützt.

  • VPC   –   Die ID der VPC des primären Clusters.

Alle anderen Parameter können bei ihren Standardwerten belassen werden.

Sobald die AWS CloudFormation Vorlage bereitgestellt wurde, beginnt Neptune damit, alle Änderungen vom primären Cluster auf den Backup-Cluster zu replizieren. Sie können diese Replikation in den von der Lambda-Consumer-Funktion generierten CloudWatch Protokollen überwachen.

Weitere Überlegungen

  • Wenn Sie die IAM-Authentifizierung zwischen dem Primär- und dem Backup-Cluster verwenden müssen, können Sie diese auch beim Aufrufen der Vorlage einrichten. AWS CloudFormation

  • Wenn für den primären Cluster die Verschlüsselung im Ruhezustand aktiviert ist, sollten Sie überlegen, wie Sie die zugehörigen KMS-Schlüssel verwalten, wenn Sie den Snapshot in die Zielregion kopieren und in der Zielregion einen neuen KMS-Schlüssel zuordnen.

  • Es stellt eine bewährte Methode dar, den Neptune-Endpunkten in Ihren Anwendungen DNS-CNAMEs voranzustellen. Wenn Sie einen manuellen Failover zum Sicherungs-Ziel-Cluster ausführen müssen, können Sie diese CNAMes so ändern, dass sie auf den Ziel-Cluster- und/oder die Instance-Endpunkte verweisen.