Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Automatisieren Sie einen Switchover- und Failover-Plan für eine auf OCI Kubernetes Engine bereitgestellte Demoanwendung mit OCI Full Stack Disaster Recovery
Einführung
Dieses Tutorial zeigt einen Anwendungsfall für Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) mit einer Demo-E-Commerce-Anwendung, die auf einem Oracle Cloud Infrastructure Kubernetes Engine-(OCI Kubernetes Engine oder OKE-)Cluster bereitgestellt wird.
Zum Zeitpunkt des Schreibens dieses Tutorials hat OCI Full Stack DR eine begrenzte Verfügbarkeit für OKE angekündigt. In einem begrenzten Release können wir OCI Full Stack DR auf OKE-basierten Anwendungen wie MuShop testen, einer Microservices-basierten Demoanwendung, die verschiedene andere Oracle Cloud Infrastructure-(OCI-)Services als eine Anwendung verwendet.
Wir verwenden einen Warm Standby-Ansatz: ein Disaster Recovery-(DR-)Modell, bei dem einige oder alle Anwendungskomponenten in einer Standbyregion vorab bereitgestellt werden, um einen schnelleren DR-Übergang zu ermöglichen. Obwohl dieses Modell höhere Betriebskosten beinhaltet, bietet es eine niedrigere Recovery Time Objective (RTO).
OCI Full Stack DR orchestriert den Übergang von Berechnungen, Datenbanken und Anwendungen zwischen OCI-Regionen aus der ganzen Welt mit einem einzigen Klick. Kunden können die erforderlichen Schritte zur Wiederherstellung eines oder mehrerer Geschäftssysteme automatisieren, ohne vorhandene Infrastruktur, Datenbanken oder Anwendungen neu zu entwerfen oder neu zu strukturieren, ohne dass spezielle Verwaltungs- oder Konvertierungsserver erforderlich sind.
Deployment-Architektur
Hinweis: Die primäre Region ist Sydney, und die DR-Region ist Melbourne.
Ziele
-
Gemäß der Architektur erstellen wir eine DR-Schutzgruppe (DRPG) mit dem Namen
Mushop-Syd
in der primären Region Sydney. -
Das primäre DRPG enthält eine Sammlung verschiedener OCI-Ressourcen, aus denen eine Anwendung besteht und die bei der Ausführung von DR-Vorgängen als kombinierte Gruppe behandelt werden müssen. OKE und Oracle Autonomous Database Serverless (Autonomous Database Serverless) wurden dem primären DRPG hinzugefügt. Dieses Tutorial enthält auch Schritte zum Deployment der Anwendung MuShop und aller anderen für das Deployment erforderlichen Ressourcen.
-
Ein ähnliches DRPG wird in der Standby-Region Melbourne erstellt. OKE und Autonomous Database Serverless (im Standby-Modus) werden dem DRPG hinzugefügt. Die Load Balancer sind nicht Teil des DRPG, werden jedoch an beiden Sites unabhängig ausgeführt, wie in der Deployment-Architektur hervorgehoben.
-
Zwischen den beiden DRPGs wird eine Zuordnung gebildet.
-
In der Standby-DRPG (Melbourne) wird ein DR-Plan erstellt. Dieser Plan stellt einen DR-Workflow dar (eine Folge von Schritten).
-
DR-Plan ausführen Es wird ein Switchover ausgeführt, bei dem ein Übergang von Services vom primären DRPG zum Standby-DRPG geplant wird. Switchover-Pläne führen einen ordnungsgemäßen Übergang aus, indem der Anwendungsstack in der primären Region heruntergefahren und dann in der Standbyregion hochgefahren wird. Daher setzt ein Switchover-Plan voraus, dass Anwendungsstackkomponenten und andere erforderliche OCI-Services in beiden Regionen verfügbar sind.
Voraussetzungen
-
Administratorberechtigungen oder konfigurieren Sie die erforderlichen Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Policys für OCI Full Stack DR. Weitere Informationen finden Sie unter Identity and Access Management-(IAM-)Policys zur Verwendung von OCI Full Stack DR konfigurieren und Policys für OCI Full Stack DR.
-
Umgebungssetup:
export COMPARTMENT_ID=ocid1.compartment.oc1.. export DB_NAME=fsdrdemoadb export DB_DISPLAY_NAME=fsdrdemoadb export DB_PASSWORD=<Your DB Password> export WALLET_PW=<Your DB Password> export DB_SERVICE_NAME=${DB_NAME}_tp export WALLET_ZIP=/tmp/Wallet_${DB_NAME}.zip export STANDBY_WALLET_ZIP=/tmp/Wallet_${DB_NAME}_Standby.zip export PRIMARY_REGION=ap-sydney-1 export STANDBY_REGION=ap-melbourne-1 export STANDBY_DB_NAME=${DB_NAME}_remote
Fügen Sie die folgenden Zeilen zu einer Datei mit dem Namen
env
hinzu, und beziehen Sie sie.source env
Hinweis:
- Weitere Informationen zu den Kennwortkriterien für Autonomous Database Serverless finden Sie unter Benutzerkennwörter in Autonomous Database.
- Der Serverless-Name von Autonomous Database darf nur alphanumerische Zeichen enthalten.
- Ersetzen Sie
DB_PASSWORD
undWALLET_PW
in den obigen Umgebungsvariablen.
Aufgabe 1: Oracle Autonomous Database installieren und einrichten
-
Erstellen Sie die primäre Oracle Autonomous Database.
oci db autonomous-database create --compartment-id ${COMPARTMENT_ID} \ --db-name ${DB_NAME} --admin-password ${DB_PASSWORD} --db-version 19c \ --cpu-core-count 1 --data-storage-size-in-tbs 1 \ --display-name ${DB_DISPLAY_NAME} --region ${PRIMARY_REGION}
-
Rufen Sie die primäre Oracle Autonomous Database-OCID ab.
DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \ --region ${PRIMARY_REGION} --display-name $DB_NAME \ --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
-
Erstellen Sie die Standby-DR, und aktivieren Sie regionsübergreifendes Oracle Data Guard.
oci db autonomous-database create-adb-cross-region-data-guard-details \ --compartment-id ${COMPARTMENT_ID} --db-name ${DB_NAME} --source-id ${DB_ID} \ --cpu-core-count 1 --data-storage-size-in-tbs 1 \ --region ${FAILOVER_REGION} --db-version 19c
-
Laden Sie das Wallet der autonomen Datenbank herunter, und extrahieren Sie es aus der primären Oracle Autonomous Database.
oci db autonomous-database generate-wallet --autonomous-database-id ${DB_ID}\ --password ${WALLET_PW} --file ${WALLET_ZIP} --region $PRIMARY_REGION
-
Entpacken Sie das Wallet bei der Primärdatenbank.
unzip ${WALLET_ZIP} -d /tmp/wallet_primary
Hinweis:
- Halten Sie diese Brieftasche griffbereit, da wir sie später als OKE-Secret hinzufügen müssen.
- Das Wallet muss für die Primär- und die Standbyregion separat heruntergeladen werden, da die DNS-Einträge
tnsnames.ora
unterschiedlich sind.
-
Rufen Sie die Oracle Autonomous Database-Standbydatenbank-OCID ab.
STANDBY_DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \ --region ${STANDBY_REGION} --display-name $STANDBY_DB_NAME \ --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
-
Laden Sie das Wallet der autonomen Datenbank herunter, und extrahieren Sie es aus der Standby-Oracle Autonomous Database.
oci db autonomous-database generate-wallet --autonomous-database-id \ ${STANDBY_DB_ID} --password ${WALLET_PW} \ --file ${STANDBY_WALLET_ZIP} --region $STANDBY_REGION
-
Dekomprimieren Sie das Standby-Wallet.
unzip ${STANDBY_WALLET_ZIP} -d /tmp/wallet_standby
Aufgabe 2: OKE-Cluster erstellen
Erstellen Sie ein OKE-Cluster auf den primären und DR-Sites. Weitere Informationen finden Sie unter Cluster mit Oracle Cloud Infrastructure Container Engine for Kubernetes erstellen.
Mit der Option Schnellerstellung haben wir Cluster mit den folgenden Informationen erstellt:
- Clustername: Geben Sie
primary-syd-oke-demo-cluster
(Sydney) undstandby-mel-oke-demo-cluster
(Melbourne) ein. - Kubernetes-API-Endpunkt: Wählen Sie Öffentlich aus.
- Knotentyp: Wählen Sie Verwaltet aus.
- Wählen Sie Private Worker aus.
- Ausprägung: Wählen Sie VM Standard E3 Flex (4 OCPU, 64 GB Arbeitsspeicher) aus.
- Wählen Sie Oracle Linux 8 aus.
Um auf Ihr Cluster zuzugreifen, gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservice, Container und Artefakte, und klicken Sie auf Kubernetes-Cluster (OKE).
Oder
Führen Sie den folgenden Befehl aus, um auf das Cluster zuzugreifen.
oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT
Aufgabe 3: Kubernetes-Secrets auf der primären Site einrichten
-
Erstellen Sie einen Namespace.
kubectl create ns mushop
-
Fügen Sie das Secret für das Oracle Autonomous Database-Admin-Kennwort hinzu.
kubectl create secret generic oadb-admin \ --namespace mushop \ --from-literal=oadb_admin_pw=${DB_PASSWORD}
-
Fügen Sie das Oracle Autonomous Database-Verbindungs-Secret hinzu.
kubectl create secret generic oadb-connection \ --namespace mushop \ --from-literal=oadb_wallet_pw=${WALLET_PW} \ --from-literal=oadb_service=${DB_SERVICE_NAME}
-
Fügen Sie das primäre Wallet Secret hinzu.
kubectl create secret generic oadb-wallet \ --namespace mushop --from-file=/tmp/wallet_primary
Aufgabe 4: MuShop-Anwendung einrichten
Hinweis: Die Anwendung wird nur in der primären Region (
ap-sydney-1
) bereitgestellt.
-
Repository klonen.
git clone git@github.com:naikvenu/fsdr-demo.git
-
Wechseln Sie zum Diagrammordner.
cd fsdr-demo/helm-chart/
-
Aktualisieren Sie die Diagrammabhängigkeiten.
helm dependency update ./setup
-
Installieren und richten Sie das Diagramm ein.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
Suchen Sie die
EXTERNAL-IP
-Adresse des Ingress-Controllers.PRIMARY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-
Installieren Sie die Anwendung im OKE-Cluster.
helm upgrade --install -f ./mushop/values-dr.yaml \ fsdrmushop mushop -n mushop
-
Greifen Sie mit der Ingress-IP auf die primäre MuShop-Anwendung zu.
kubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
-
Um die Anwendung zu prüfen, rufen Sie
http://<primary-site-ingress-ip-address>
auf, und stellen Sie sicher, dass alle MuShop-Katalogprodukte fehlerfrei aufgeführt sind.
Aufgabe 5: OKE-Cluster an der Standby Site einrichten
Hinweis: Da wir einen Warm Standby-Ansatz verwenden, müssen wir ein OKE-Cluster erstellen und einige grundlegende Dinge wie den Ingress-Controller ausführen. Die folgenden Schritte helfen Ihnen dabei.
-
Um auf das Cluster auf der Standbysite zuzugreifen, gehen Sie zur OCI-Konsole, navigieren Sie zu Entwicklerservice, Container und Artefakte, und klicken Sie auf Kubernetes-Cluster (OKE).
Oder
Führen Sie den folgenden Befehl aus, um auf das Cluster auf der Standbysite zuzugreifen.
oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT
-
Repository klonen.
git clone git@github.com:naikvenu/fsdr-demo.git
Oder
git clone https://github.com/naikvenu/fsdr-demo
-
Wechseln Sie zum Ordner "Charts".
cd fsdr-demo/helm-chart/
-
Aktualisieren Sie die Diagrammabhängigkeiten.
helm dependency update ./setup
-
Installieren und richten Sie die Diagramme ein. Dies ist erforderlich, um einen Ingress-Controller (OCI Load Balancer) für den Zugriff auf die Anwendung bereitzustellen.
Hinweis: Dieser Schritt stellt nur einen Ingress-Controller (OCI Load Balancer) und nicht die vollständige Anwendung bereit.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
Suchen Sie die
EXTERNAL-IP
-Adresse des Ingress-Controllers.STANDBY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-
Erstellen Sie einen MuShop-Namespace.
kubectl create namespace mushop
-
Erstellen Sie ein Secret für das Wallet.
kubectl create secret generic oadb-wallet \ --namespace mushop --from-file=/tmp/wallet_standby
Hinweis: Wir verwenden ein Standby-Wallet.
Aufgabe 6: DNS-Zonen einrichten (Optional)
Gehen Sie in der primären Region zur OCI-Konsole, navigieren Sie zu Networking, DNS-Management, Zonen, und klicken Sie auf Zone erstellen.
Configuration:
The Zone type : Primary
‘A’ record: “mushop”
Der Zonenname muss mit Ihrem gekauften Domainnamen übereinstimmen. Geben Sie die Nameserver ein, die Ihrer Domain hinzugefügt werden sollen.
Die Anwendung ist unter https://mushop.<your-domain>.com
zugänglich.
Aufgabe 7: Health Checks erstellen (Optional)
Health Checks sind erforderlich, um OCI-DNS-Trafficsteuerungs-Policys einzurichten.
Führen Sie den folgenden Befehl aus, um Health Checks zu erstellen.
oci health-checks http-monitor create --compartment-id ${COMPARTMENT_ID} --display-name fsdr-test --interval-in-seconds 30 --targets '[“${PRIMARY_EXTERNAL_IP}”]' --protocol http --path "/" --port 80
Oder
Gehen Sie zur OCI-Konsole, navigieren Sie zu Observability and Management, Monitoring, Healthchecks, klicken Sie auf Health Check erstellen, und geben Sie die folgenden Informationen ein.
- Name: Geben Sie
FSDR-APP-HEALTHCHECK
ein. - Ziele: Geben Sie die IPs von primären und Standby-Load Balancern ein.
- Protokoll: Wählen Sie http aus.
- Port: Geben Sie "80" ein.
- Zielpfad: Geben Sie
/
ein. - Methode: Wählen Sie GET aus.
- Timeout: Geben Sie 30 ein.
- Intervall: Geben Sie 30 Sekunden ein.
Aufgabe 8: Steuerungs-Policy für Trafficmanagement konfigurieren (Optional)
Gehen Sie zur OCI-Konsole, navigieren Sie zu Networking, DNS-Management, Steuerungs-Policys für Trafficmanagement, klicken Sie auf Steuerungs-Policy für Trafficmanagement erstellen, und geben Sie die folgenden Informationen ein.
- Name: Geben Sie
FSDR-POLICY
ein. - TTL: Geben Sie 60 Sekunden ein.
- Pool 1:
- Name: Geben Sie
Primary
ein. - Typ: Wählen Sie A aus.
- Daten: Geben Sie die IP des primären Load Balancers ein.
- Name: Geben Sie
- Pool 2:
- Name: Geben Sie
Standby
ein. - Typ: Wählen Sie A aus.
- Rdata: Geben Sie die IP des Standby-Load Balancers ein.
- Name: Geben Sie
- Poolpriorität auswählen:
- Pool1
- Pool2
- Hängen Sie den in Aufgabe 7 erstellten Health Check an.
Aufgabe 9: OCI Full Stack DR einrichten
-
Erstellen Sie ein DRPG in beiden Regionen. Gehen Sie zur OCI-Konsole, navigieren Sie zu Migration und Disaster Recovery, und klicken Sie auf DR-Schutzgruppen. Beispiel:
primary-drpg-sydney
undstandby-drpg-melbourne
. -
Ordnen Sie die DRPGs zu. Gehen Sie zur OCI-Konsole, navigieren Sie zu Migration und Disaster Recovery, DR-Schutzgruppen, und klicken Sie auf Verknüpfen.
-
Fügen Sie dem DRPG (Region Sydney) Ressourcen hinzu. Gehen Sie zur OCI-Konsole, navigieren Sie zu Migration und Disaster Recovery, DR-Schutzgruppen, Mitglieder, und klicken Sie auf Mitglied hinzufügen.
-
Fügen Sie das OKE-Cluster und Oracle Autonomous Database hinzu.
-
Fügen Sie Ressourcen zum DRPG (Region Melbourne) hinzu - OKE-Cluster und Oracle Autonomous Database.
-
Erstellen Sie einen DR-Plan in der Standby-Region (Melbourne). Gehen Sie zur OCI-Konsole, navigieren Sie zu Migration und Disaster Recovery, DR-Schutzgruppen, Pläne, und klicken Sie auf Plan erstellen.
Die folgende Abbildung zeigt einen DR-Plan, der das Recovery für einen gesamten Anwendungsstack orchestriert, der zusammen mit OKE weitere Services enthalten kann.
Wie Sie aus dem Bild sehen können, haben wir integrierte Schritte für OKE. Der OCI Full Stack DR-Service führt ein intern entwickeltes Backuptool aus. Dieses Tool erstellt in regelmäßigen Abständen die Backups des Clusters von Deployments, Replikatsets, Pods, CronJobs, Daemon-Sets usw.
Die Backups werden im OCI Object Storage-Bucket gespeichert, den wir in der Member-Eigenschaft angegeben haben.
-
OKE - Backup und Bereinigung stoppen (primär): Dadurch werden die Backups gestoppt, und alle genannten Ressourcen im OKE-Cluster werden beendet.
-
OKE - Wiederherstellen (Standby): Mit dem Backup wird das letzte Backup im DR OKE-Cluster wiederhergestellt, sodass alle Ressourcen im OKE-Cluster erstellt werden.
-
OKE - Reverse Backup planen (Standby): Legen Sie das Reverse Backup für den Switchback-Plan fest.
Wenn Sie PersistentVolume (PV) und PersistentVolumeClaim (PVC) verwenden, müssen Sie regionsübergreifende Volume-Gruppen (Blockspeicher) und regionsübergreifende FSS-Replikation (Dateispeicher) konfigurieren und diese als Elemente in dem DRPG hinzufügen. Dadurch werden zusätzliche Plangruppen wie für OKE und Oracle Autonomous Database erstellt.
-
-
Switchover ausführen. Dieser Schritt muss von der Standby Site (Melbourne) ausgeführt werden.
Gehen Sie zur OCI-Konsole, navigieren Sie zu Migration und Disaster Recovery, DR-Schutzgruppen, und klicken Sie auf DR-Plan ausführen.
Aufgabe 10: Anwendung testen und validieren
Greifen Sie von der Standby-Region aus auf die Anwendung zu, und stellen Sie sicher, dass alles funktioniert. Die Anwendung muss unter https://mushop.domain.com
zugänglich sein oder die Adresse http://standbyloadbalancerIP.com
verwenden.
Stellen Sie sicher, dass Sie auf die Katalogartikel zugreifen können, und geben Sie an, dass die Standbydatenbank voll funktionsfähig ist.
Hinweis: In diesem Tutorial haben wir die Schritte zum Einschließen von SSL-Zertifikaten in OCI Load Balancer und zur Verwendung von OCI Web Application Firewall ausgeschlossen. Diese beiden Komponenten können Produktionsumgebungen hinzugefügt werden.
Nächste Schritte
Sie haben gesehen, wie eine auf Microservices basierende E-Commerce-Anwendung, die auf der OCI Kubernetes Engine bereitgestellt wird, mit dem OCI Full Stack DR-Service konfiguriert werden kann, um die Disaster Recovery in einem warmen Standby-Modus zu ermöglichen. Wir haben gezeigt, wie diese Anwendung ohne manuelle Eingriffe nahtlos ausfallen kann. Weitere Informationen finden Sie in der Dokumentation zu OCI Full Stack DR im Abschnitt Zugehörige Links.
Verwandte Links
Danksagungen
-
Autor - Venugopal Naik (Principal Cloud Architect)
-
Mitwirkende – Raphael Teixeira (Hauptmitglied des technischen Personals für FSDR), Suraj Ramesh (Hauptproduktmanager für MAA)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Automate a Switchover and Failover Plan for a Demo Application Deployed on OCI Kubernetes Engine with OCI Full Stack Disaster Recovery
G23611-01
December 2024