Note :

Automatiser un plan de permutation et de basculement pour une application de démonstration déployée sur OCI Kubernetes Engine avec la récupération après sinistre de pile complète OCI

Présentation

Ce tutoriel présente un cas d'utilisation d'Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) avec une application de démonstration de commerce électronique déployée sur une grappe Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE).

Au moment d'écrire ce tutoriel, la récupération après sinistre de pile complète pour OCI a annoncé une disponibilité limitée pour OKE. Dans une version limitée, nous pouvons essayer la récupération après sinistre de pile complète OCI sur des applications basées sur OKE telles que MuShop, une application de démonstration basée sur des microservices qui utilise divers autres services Oracle Cloud Infrastructure (OCI) en tant qu'une seule application.

Nous utiliserons une approche de secours à chaud : un modèle de reprise après sinistre dans lequel certains ou tous les composants d'application sont pré-déployés dans une région de secours pour permettre une transition plus rapide de reprise après sinistre. Bien que ce modèle implique des coûts d'exploitation plus élevés, il fournit un objectif de temps de récupération inférieur (ODR).

La récupération après sinistre de pile complète pour OCI orchestre la transition des calculs, des bases de données et des applications entre les régions OCI du monde entier en un seul clic. Les clients peuvent automatiser les étapes nécessaires à la récupération d'un ou de plusieurs systèmes d'affaires sans repenser ou réorganiser l'infrastructure, les bases de données ou les applications existantes sans avoir besoin de serveurs de gestion ou de conversion spécialisés.

Architecture de déploiement

Architecture de déploiement OKE

Note : La région principale est Sydney et la région RS est Melbourne.

Objectifs

Préalables

Tâche 1 : Installer et configurer Oracle Autonomous Database

  1. Créez la base de données Oracle Autonomous Database principale.

    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. Extraire l'OCID principal d'Oracle Autonomous Database.

    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. Créez la récupération après sinistre de secours et activez Oracle Data Guard inter-région.

    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. Téléchargez et extrayez le portefeuille de la base de données autonome à partir d'Oracle Autonomous Database principale.

    oci db autonomous-database generate-wallet --autonomous-database-id ${DB_ID}\
    --password ${WALLET_PW} --file ${WALLET_ZIP} --region $PRIMARY_REGION
    
  5. Décompressez le portefeuille à l'emplacement principal.

    unzip ${WALLET_ZIP} -d /tmp/wallet_primary
    

    Note :

    • Gardez ce portefeuille à portée de main car nous devrons l'ajouter en tant que clé secrète OKE ultérieurement.
    • Le portefeuille doit être téléchargé séparément pour les régions principale et de secours, car les entrées DNS tnsnames.ora sont différentes.
  6. Extrayez l'OCID d'Oracle Autonomous Database de secours.

    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. Téléchargez et extrayez le portefeuille de la base de données autonome à partir d'Oracle Autonomous Database de secours.

    oci db autonomous-database generate-wallet --autonomous-database-id \
    ${STANDBY_DB_ID} --password ${WALLET_PW} \
    --file ${STANDBY_WALLET_ZIP} --region $STANDBY_REGION
    
  8. Décompressez le portefeuille de secours.

    unzip ${STANDBY_WALLET_ZIP} -d /tmp/wallet_standby
    

Tâche 2 : Créer une grappe OKE

Créez une grappe OKE sur les sites principal et de reprise après sinistre. Pour plus d'informations, voir Créer une grappe avec Oracle Cloud Infrastructure Container Engine for Kubernetes.

Nous avons utilisé l'option Création rapide pour créer des grappes avec les informations suivantes :

Pour accéder à votre grappe, allez à la console OCI, naviguez jusqu'à Service de développement, Conteneur et artefacts, puis cliquez sur Grappes Kubernetes (OKE).

Ou

Exécutez la commande suivante pour accéder à votre grappe.

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

Tâche 3 : Configurer les clés secrètes Kubernetes sur le site principal

  1. Créez un espace de noms.

    kubectl create ns mushop
    
  2. Ajoutez la clé secrète du mot de passe de l'administrateur d'Oracle Autonomous Database.

    kubectl create secret generic oadb-admin \
          --namespace mushop \
          --from-literal=oadb_admin_pw=${DB_PASSWORD}
    
  3. Ajoutez la clé secrète de connexion à Oracle Autonomous Database.

    kubectl create secret generic oadb-connection \
          --namespace mushop \
          --from-literal=oadb_wallet_pw=${WALLET_PW} \
          --from-literal=oadb_service=${DB_SERVICE_NAME}
    
  4. Ajoutez la clé secrète du portefeuille principal.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_primary
    

Tâche 4 : Configurer l'application MuShop

Note : L'application est déployée uniquement dans la région principale (ap-sydney-1).

  1. Clonez le référentiel.

    git clone git@github.com:naikvenu/fsdr-demo.git
    
  2. Allez au dossier du graphique.

    cd fsdr-demo/helm-chart/
    
  3. Mettez à jour les dépendances du graphique.

    helm dependency update ./setup
    
  4. Installez et configurez le graphique.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  5. Localisez l'adresse EXTERNAL-IP du contrôleur de trafic entrant.

    PRIMARY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  6. Installez l'application sur la grappe OKE.

    helm upgrade --install -f ./mushop/values-dr.yaml \
       fsdrmushop mushop -n mushop
    
  7. Accédez à l'application MuShop principale à l'aide de l'adresse IP entrante.

    kubectl get svc mushop-utils-ingress-nginx-controller \
       --namespace mushop-utilities
    
  8. Pour vérifier l'application, accédez à http://<primary-site-ingress-ip-address> et assurez-vous de voir tous les produits du catalogue MuShop répertoriés sans erreur.

Tâche 5 : Configurer une grappe OKE sur le site de secours

Note : Comme nous utilisons une approche de secours à chaud, nous devons créer une grappe OKE et exécuter quelques éléments de base, tels que le contrôleur de trafic entrant. Les étapes suivantes vous aideront à le faire.

  1. Pour accéder à votre grappe sur le site de secours, allez à la console OCI, naviguez jusqu'au service de développement, au conteneur et artefacts, puis cliquez sur Grappes Kubernetes (OKE).

    Ou

    Exécutez la commande suivante pour accéder à votre grappe sur le site de secours.

    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. Clonez le référentiel.

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

    Ou

    git clone  https://github.com/naikvenu/fsdr-demo
    
  3. Accédez au dossier Graphiques.

    cd fsdr-demo/helm-chart/
    
  4. Mettez à jour les dépendances du graphique.

    helm dependency update ./setup
    
  5. Installez et configurez les graphiques. Cela est nécessaire pour déployer un contrôleur de trafic entrant (équilibreur de charge OCI) pour accéder à l'application.

    Note : Cette étape déploiera uniquement un contrôleur de trafic entrant (équilibreur de charge OCI) et non l'application complète.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  6. Localisez l'adresse EXTERNAL-IP du contrôleur de trafic entrant.

    STANDBY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  7. Créez un espace de noms MuShop.

    kubectl create namespace mushop
    
  8. Créez une clé secrète pour le portefeuille.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_standby
    

    Note : Nous utilisons un portefeuille de secours.

Tâche 6 : Configurer des zones DNS (Facultatif)

Dans la région principale, allez à la console OCI, naviguez jusqu'à Réseau, Gestion DNS, Zones, puis cliquez sur Créer une zone.

Configuration:
The Zone type : Primary
‘A’ record: “mushop”

Le nom de la zone doit correspondre à votre nom de domaine acheté. Entrez les serveurs de noms à ajouter à votre domaine.

L'application sera accessible à l'adresse https://mushop.<your-domain>.com.

Tâche 7 : Créer des vérifications d'état (facultatif)

Des vérifications d'état sont requises pour configurer les politiques de pilotage du trafic DNS pour OCI.

Exécutez la commande suivante pour créer des vérifications d'état.

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

Ou

Allez à la console OCI, naviguez jusqu'à Observabilité et gestion, Surveillance, Vérifications d'état, cliquez sur Créer une vérification d'état et entrez les informations suivantes.

Tâche 8 : Configurer la politique de pilotage pour la gestion du trafic (Facultatif)

Allez à la console OCI, naviguez jusqu'à Réseau, Gestion DNS, Politiques de pilotage pour la gestion du trafic, cliquez sur Créer une politique de pilotage pour la gestion du trafic et entrez les informations suivantes.

Tâche 9 : Configurer la récupération après sinistre de pile complète OCI

  1. Créez une passerelle DRPG dans les deux régions. Allez à la console OCI, naviguez jusqu'à Migration et récupération après sinistre et cliquez sur Groupes de protection RS. Par exemple, primary-drpg-sydney et standby-drpg-melbourne.

  2. Associez les passerelles DRPG. Allez à la console OCI, naviguez jusqu'à Migration et récupération après sinistre, Groupes de protection RS, puis cliquez sur Associer.

  3. Ajoutez des ressources à la passerelle DRPG (région Sydney). Allez à la console OCI, naviguez jusqu'à Migration et récupération après sinistre, Groupes de protection RS, Membres, puis cliquez sur Ajouter un membre.

  4. Ajoutez la grappe OKE et Oracle Autonomous Database.

    Membres DRPG

  5. Ajouter des ressources à la passerelle DRPG (région Melbourne) - Grappe OKE et Oracle Autonomous Database.

    Membres DRPG

  6. Créez un plan RS dans la région de secours (Melbourne). Allez à la console OCI, naviguez jusqu'à Migration et récupération après sinistre, Groupes de protection RS, Plans, puis cliquez sur Créer un plan.

    Membres DRPG

    L'illustration suivante présente un plan RS qui orchestre la récupération pour une pile d'applications entière, qui peut inclure d'autres services avec OKE.

    Comme vous pouvez le voir dans l'image, nous avons des étapes intégrées pour OKE. Le service de récupération après sinistre de pile complète OCI exécute un outil de sauvegarde développé en interne. Cet outil effectue périodiquement les sauvegardes de la grappe des déploiements, des jeux de répliques, des pods, CronJobs, des jeux de démons, etc.

    Les sauvegardes seront stockées dans le seau de stockage d'objets OCI que nous avons spécifié dans la propriété de membre.

    • OKE - Arrêter la sauvegarde et le nettoyage (principal) : Cela arrête les sauvegardes et met fin à toutes les ressources mentionnées dans la grappe OKE.

    • OKE - Restaurer (de secours) : À l'aide de la sauvegarde, elle restaure la dernière sauvegarde dans la grappe DR OKE. Vous aurez donc toutes les ressources créées dans la grappe OKE.

    • OKE - Programmer une sauvegarde inverse (de secours) : Définissez la sauvegarde inverse pour le plan de permutation.

    Si vous utilisez PersistentVolume (PV) et PersistentVolumeClaim (PVC), vous devez configurer des groupes de volumes inter-région (stockage par blocs) et la réplication FSS inter-région (stockage de fichiers) et les ajouter en tant que membres dans la passerelle DRPG. Cela créera des groupes de plans supplémentaires, comme ce que nous avons vu pour OKE et Oracle Autonomous Database.

  7. Effectuer une permutation. Cette étape doit être effectuée à partir du site de secours (Melbourne).

    Allez à la console OCI, naviguez jusqu'à Migration et récupération après sinistre, Groupes de protection RS, puis cliquez sur Exécuter le plan RS.

Tâche 10 : Tester et valider l'application

Accédez à l'application à partir de la région de secours et assurez-vous que tout fonctionne. L'application doit être accessible à l'adresse https://mushop.domain.com ou utiliser l'adresse http://standbyloadbalancerIP.com.

Assurez-vous de pouvoir accéder aux éléments du catalogue, ce qui indique que la base de données de secours est entièrement opérationnelle.

Membres DRPG

Note : Dans ce tutoriel, nous avons exclu les étapes permettant d'inclure des certificats SSL dans l'équilibreur de charge OCI et d'utiliser le pare-feu d'application Web OCI. Ces deux composants peuvent être ajoutés aux environnements de production.

Étapes suivantes

Vous avez vu comment une application de commerce électronique basée sur des microservices, déployée sur OCI Kubernetes Engine, peut être configurée avec le service de récupération après sinistre de pile complète OCI pour activer la récupération après sinistre en mode de secours à chaud. Nous avons montré comment cette application peut basculer en toute transparence sans aucune intervention manuelle. Pour plus d'informations, consultez la documentation sur la récupération après sinistre de pile complète OCI dans la section Liens connexes.

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.