Hinweis:

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

OKE-Deployment-Architektur

Hinweis: Die primäre Region ist Sydney, und die DR-Region ist Melbourne.

Ziele

Voraussetzungen

Aufgabe 1: Oracle Autonomous Database installieren und einrichten

  1. 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}
    
  2. 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)
    
  3. 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
    
  4. 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
    
  5. 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.
  6. 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)
    
  7. 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
    
  8. 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:

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

  1. Erstellen Sie einen Namespace.

    kubectl create ns mushop
    
  2. 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}
    
  3. 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}
    
  4. 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.

  1. Repository klonen.

    git clone git@github.com:naikvenu/fsdr-demo.git
    
  2. Wechseln Sie zum Diagrammordner.

    cd fsdr-demo/helm-chart/
    
  3. Aktualisieren Sie die Diagrammabhängigkeiten.

    helm dependency update ./setup
    
  4. Installieren und richten Sie das Diagramm ein.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  5. 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}')
    
  6. Installieren Sie die Anwendung im OKE-Cluster.

    helm upgrade --install -f ./mushop/values-dr.yaml \
       fsdrmushop mushop -n mushop
    
  7. Greifen Sie mit der Ingress-IP auf die primäre MuShop-Anwendung zu.

    kubectl get svc mushop-utils-ingress-nginx-controller \
       --namespace mushop-utilities
    
  8. 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.

  1. 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
    
  2. Repository klonen.

    git clone git@github.com:naikvenu/fsdr-demo.git
    

    Oder

    git clone  https://github.com/naikvenu/fsdr-demo
    
  3. Wechseln Sie zum Ordner "Charts".

    cd fsdr-demo/helm-chart/
    
  4. Aktualisieren Sie die Diagrammabhängigkeiten.

    helm dependency update ./setup
    
  5. 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
    
  6. 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}')
    
  7. Erstellen Sie einen MuShop-Namespace.

    kubectl create namespace mushop
    
  8. 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.

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.

Aufgabe 9: OCI Full Stack DR einrichten

  1. 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 und standby-drpg-melbourne.

  2. 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.

  3. 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.

  4. Fügen Sie das OKE-Cluster und Oracle Autonomous Database hinzu.

    DRPG-Mitglieder

  5. Fügen Sie Ressourcen zum DRPG (Region Melbourne) hinzu - OKE-Cluster und Oracle Autonomous Database.

    DRPG-Mitglieder

  6. 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.

    DRPG-Mitglieder

    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.

  7. 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.

DRPG-Mitglieder

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.

Danksagungen

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.