Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
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
Note : La région principale est Sydney et la région RS est Melbourne.
Objectifs
-
Selon l'architecture, nous créerons un groupe de protection RS (DRPG) nommé
Mushop-Syd
dans la région principale de Sydney. -
La passerelle DRPG principale contient une collection de différentes ressources OCI qui composent une application et qui doivent être traitées comme un groupe combiné lors de l'exécution d'opérations de récupération après sinistre. Nous avons ajouté OKE et Oracle Autonomous Database Serverless (Autonomous Database Serverless) à la passerelle DRPG principale. Ce tutoriel indique également les étapes à suivre pour déployer l'application MuShop et toutes les autres ressources nécessaires au déploiement.
-
Un DRPG similaire est créé dans la région de Melbourne de secours. OKE et Autonomous Database Serverless (en mode de secours) sont ajoutés à la passerelle DRPG. Les équilibreurs de charge ne font pas partie de la passerelle DRPG, mais s'exécutent indépendamment sur les deux sites, comme indiqué dans l'architecture de déploiement.
-
Une association est formée entre les deux DRPG.
-
Dans la passerelle DRPG de secours (Melbourne), un plan DR est créé. Ce plan représente un flux de travail RS (séquence d'étapes).
-
Exécutez un plan RS. Une permutation de rôles est exécutée, qui planifie une transition des services de la passerelle DRPG principale vers la passerelle DRPG de secours. Les plans de permutation effectuent les transitions de manière ordonnée en arrêtant la pile d'applications dans la région principale, puis en l'activant dans la région de secours. Par conséquent, un plan de permutation exige que les composants de la pile d'applications et les autres services OCI requis soient disponibles dans les deux régions.
Préalables
-
Privilèges d'administrateur ou configuration des politiques Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) requises pour la récupération après sinistre de pile complète OCI. Pour plus d'informations, voir Configuration des politiques de gestion des identités et des accès (IAM) pour utiliser la récupération après sinistre de pile complète OCI et Politiques pour la récupération après sinistre de pile complète OCI.
-
Configuration de l'environnement :
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
Ajoutez les lignes suivantes à un fichier nommé
env
et sourcez-le.source env
Note :
- Pour plus d'informations sur les critères de mot de passe pour Autonomous Database Serverless, voir À propos des mots de passe d'utilisateur sur Autonomous Database.
- Le nom sans serveur Autonomous Database ne peut contenir que des caractères alphanumériques.
- Remplacez
DB_PASSWORD
etWALLET_PW
dans les variables d'environnement ci-dessus.
Tâche 1 : Installer et configurer Oracle Autonomous Database
-
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}
-
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)
-
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
-
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
-
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.
-
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)
-
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
-
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 :
- Nom de la grappe : Entrez
primary-syd-oke-demo-cluster
(Sydney) etstandby-mel-oke-demo-cluster
(Melbourne). - Point d'extrémité d'API Kubernetes : Sélectionnez Public.
- Type de noeud : Sélectionnez Géré.
- Sélectionnez Travailleurs privés.
- Forme : Sélectionnez VM Standard E3 Flex (4 OCPU, 64 Go de mémoire).
- Sélectionnez Oracle Linux 8.
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
-
Créez un espace de noms.
kubectl create ns mushop
-
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}
-
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}
-
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
).
-
Clonez le référentiel.
git clone git@github.com:naikvenu/fsdr-demo.git
-
Allez au dossier du graphique.
cd fsdr-demo/helm-chart/
-
Mettez à jour les dépendances du graphique.
helm dependency update ./setup
-
Installez et configurez le graphique.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
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}')
-
Installez l'application sur la grappe OKE.
helm upgrade --install -f ./mushop/values-dr.yaml \ fsdrmushop mushop -n mushop
-
Accédez à l'application MuShop principale à l'aide de l'adresse IP entrante.
kubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
-
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.
-
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
-
Clonez le référentiel.
git clone git@github.com:naikvenu/fsdr-demo.git
Ou
git clone https://github.com/naikvenu/fsdr-demo
-
Accédez au dossier Graphiques.
cd fsdr-demo/helm-chart/
-
Mettez à jour les dépendances du graphique.
helm dependency update ./setup
-
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
-
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}')
-
Créez un espace de noms MuShop.
kubectl create namespace mushop
-
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.
- Nom : Entrez
FSDR-APP-HEALTHCHECK
. - Cibles : Entrez les adresses IP des équilibreurs de charge principal et de secours.
- Protocole : Sélectionnez http.
- Port : Entrez 80.
- Chemin cible : Entrez
/
. - Méthode : Sélectionnez GET.
- Temporisation : Entrez 30.
- Intervalle : Entrez 30 secondes.
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.
- Nom : Entrez
FSDR-POLICY
. - TTL : Entrez 60 secondes.
- Groupe 1 :
- Nom : Entrez
Primary
. - Type : Sélectionnez A.
- Rdata : Entrez l'adresse IP de l'équilibreur de charge principal.
- Nom : Entrez
- Groupe 2 :
- Nom : Entrez
Standby
. - Type : Sélectionnez A.
- Données : Entrez l'adresse IP de l'équilibreur de charge de secours.
- Nom : Entrez
- Sélectionner la priorité du groupe :
- Pool1
- Pool2
- Joignez la vérification d'état créée à la tâche 7.
Tâche 9 : Configurer la récupération après sinistre de pile complète OCI
-
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
etstandby-drpg-melbourne
. -
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.
-
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.
-
Ajoutez la grappe OKE et Oracle Autonomous Database.
-
Ajouter des ressources à la passerelle DRPG (région Melbourne) - Grappe OKE et Oracle Autonomous Database.
-
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.
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.
-
-
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.
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.
Liens connexes
-
Récupération après sinistre de pile complète pour Oracle Cloud Infrastructure (OCI)
-
Documentation de récupération après sinistre de pile complète OCI
Confirmation
-
Auteur - Venugopal Naik (architecte en nuage principal)
-
Contributeurs - Raphael Teixeira (Membre principal du personnel technique pour FSDR), Suraj Ramesh (Gestionnaire principal de produit pour MAA)
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.
Automate a Switchover and Failover Plan for a Demo Application Deployed on OCI Kubernetes Engine with OCI Full Stack Disaster Recovery
G23613-01
December 2024