Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Redimensionnement automatique d'un pool d'instances Oracle Cloud Infrastructure en fonction des demandes HTTP de l'équilibreur de charge OCI
Introduction
Dans ce tutoriel, nous verrons comment redimensionner automatiquement un pool d'instances Oracle Cloud Infrastructure (OCI) en fonction du nombre de demandes HTTP reçues par l'équilibreur de charge OCI. Nous aborderons trois sujets principaux.
- Mesures d'alarme OCI Monitoring : surveillez votre équilibreur de charge et configurez des alarmes en fonction des mesures de demande HTTP.
- Service OCI Notifications : envoyez des notifications lorsqu'une alarme est déclenchée.
- Fonctions OCI : créez et utilisez des fonctions pour ajuster la taille de votre pool d'instances en fonction des notifications reçues.
OCI Monitoring : utilisez le service OCI Monitoring pour surveiller activement et passivement les ressources cloud à l'aide des fonctionnalités de mesures et d'alarmes. Le service OCI Monitoring utilise des mesures pour surveiller les ressources et les alarmes afin de vous avertir lorsque ces mesures répondent aux déclencheurs spécifiés par les alarmes.
Notifications OCI : lorsqu'un événement se produit avec vos ressources dans OCI, vous pouvez obtenir des messages lisibles par l'utilisateur via des adresses prises en charge, notamment des courriels et des messages texte (SMS) à l'aide d'alarmes, de règles d'événement et de connecteurs. Vous pouvez également automatiser les tâches par le biais d'adresses HTTPS personnalisées et d'OCI Functions.
OCI Functions : OCI Functions est une plate-forme Fonctions en tant que service entièrement gérée, colocative, hautement évolutive et à la demande. Elle repose sur OCI de niveau entreprise et sur le moteur open source du projet Fn. Utilisez OCI Functions (parfois abrégé en Functions et anciennement appelé Oracle Functions) lorsque vous voulez écrire du code pour répondre aux besoins de votre entreprise.
Architecture globale
Remarque :
Ce tutoriel est conçu uniquement à des fins éducatives et d'étude. Il fournit un environnement permettant aux apprenants d'expérimenter et d'acquérir une expérience pratique dans un cadre contrôlé. Il est important de noter que les configurations et pratiques de sécurité utilisées dans ce tutoriel peuvent ne pas convenir à des scénarios réels.
Les considérations de sécurité pour les applications réelles sont souvent beaucoup plus complexes et dynamiques. Par conséquent, avant de mettre en œuvre l'une des techniques ou configurations présentées ici dans un environnement de production, il est essentiel de procéder à une évaluation et à un examen complets de la sécurité. Cet examen doit porter sur tous les aspects de la sécurité, y compris le contrôle d'accès, le cryptage, la surveillance et la conformité, afin de garantir que le système s'aligne sur les politiques et les normes de sécurité de l'organisation.
La sécurité doit toujours être une priorité absolue lors du passage d'un environnement de laboratoire à un déploiement réel.
Objectifs
-
Configurez un mécanisme de redimensionnement automatique pour un pool d'instances OCI. Ce mécanisme de redimensionnement automatique est basé sur le nombre de demandes HTTP reçues par l'équilibreur de charge OCI. Vous allez apprendre à :
-
Surveiller les mesures de demande HTTP : configurez OCI Monitoring pour suivre les mesures de demande HTTP à partir de l'équilibreur de charge.
-
Créer et configurer des alarmes : définissez et configurez des alarmes qui se déclenchent en fonction de seuils de demande HTTP spécifiques.
-
Configurer des notifications d'événement : définissez des notifications d'événement pour vous alerter lorsqu'une alarme est déclenchée.
-
Implémenter OCI Functions : créez et déployez des fonctions pour ajuster automatiquement la taille de votre pool d'instances en réponse aux alarmes déclenchées.
-
Prérequis
-
Environnement OCI
-
Compte Oracle avec droits d'accès administrateur.
-
Un compartiment pour créer vos ressources.
Remarque : notez le nom et l'ID du compartiment.
-
VCN avec un sous-réseau privé. Pour plus d'informations, reportez-vous à Création d'un réseau cloud virtuel.
-
Equilibreur de charge OCI attaché au pool d'instances avec un élément backendSet pointant vers les instances du pool. Pour plus d'informations, reportez-vous à Création d'un équilibreur de charge.
-
Pool d'instances avec au moins 1 instance disposant d'une application HTTP simple exécutée sur le port
80
. Pour plus d'informations, reportez-vous à Utilisation de configurations d'instance et de pools d'instances.
-
-
Environnement de l'ordinateur local
-
Instance de calcul Oracle Linux sur le sous-réseau privé. Ceci est important pour accéder aux ressources sur le sous-réseau privé, telles qu'OCI Streaming et OCI Functions qui seront déployées au cours de ce tutoriel.
-
Hôte OCI Bastion permettant de se connecter à l'instance de calcul Oracle Linux et d'effectuer les tâches du tutoriel. Pour plus d'informations, reportez-vous à Présentation de Bastion.
-
Configurez l'interface de ligne de commande Oracle Cloud Infrastructure locale. Pour plus d'informations, reportez-vous à la section Installing the CLI.
-
Docker local pour pouvoir créer des images, si vous utilisez Oracle Linux, reportez-vous à Docker : installation de Docker sur Oracle Linux 8 (OL8).
-
Interface de ligne de commande FN locale pour pouvoir déployer votre fonction vers OCI. Pour plus d'informations, reportez-vous à la section Installing the Fn Project CLI.
-
Tâche 1 : configurer des groupes dynamiques
Accédez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.
Nom de groupe dynamique : MyFunctions
.
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
Tâche 2 : créer des stratégies
Accédez à Stratégies et créez les stratégies suivantes.
Nom de la stratégie : FunctionsPolicies
.
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage compute-management-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage load-balancers in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read metrics in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read alarms in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-pools in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Tâche 3 : créer OCI Container Registry
-
Accédez à Services de développeur, cliquez sur Registre de conteneur et créez un référentiel privé pour l'image Fn.
Nom du référentiel :
lab/fn-autoscale-instance-pool
. -
Vérifiez les référentiels et notez l'espace de noms.
-
Ouvrez le shell de terminal sur lequel vous avez installé l'interface de ligne de commande OCI et Docker, puis connectez-vous au registre. Vérifiez l'URL correcte pour votre région. Dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo) où l'URL du registre est
gru.ocir.io
.docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
Tâche 4 : création des fonctions OCI Python pour redimensionner automatiquement le pool d'instances
Remarque : assurez-vous d'avoir sélectionné votre sous-réseau privé, le même sous-réseau que celui du pool de flux de données.
-
Accédez à la console OCI et cliquez sur Services de développeur. Sous Fonctions, cliquez sur Application, puis sur Créer une application.
-
Créez quelques configurations pour configurer les tailles de mise à l'échelle.
Remarque : ces variables de configuration sont utilisées pour déterminer les valeurs que la fonction utilisera pour réduire et augmenter le pool d'instances.
Nom de clé secrète Value INSTANCE_POOL_TARGET_SIZE Définir la valeur de la nouvelle taille de pool d'instances INSTANCE_POOL_DESIRED_SIZE Définir la taille standard du pool d'instances Pour ce tutoriel, nous utilisons un pool d'instances de 1 instance et un redimensionnement vers
2
. -
Accédez au shell de terminal sur lequel Docker, l'interface de ligne de commande OCI et l'interface de ligne de commande du projet Fn sont installés et exécutez les commandes suivantes pour initialiser la fonction.
Remarque : si vous avez suivi les tâches, la commande de connexion Docker a déjà été exécutée à ce stade. Sinon, passez à la tâche 3.3 de connexion Docker.
mkdir lab cd lab fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab fn init --runtime python fn-autoscale-instance-pool cd fn-autoscale-instance-pool ls -lrt
Remarque : dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo). Si vous utilisez une autre région, vous devez modifier les emplacements
api-url
etregistry
.La commande
init
crée une fonction Hello World surfunc.py
. Nous allons écraser ce code. -
Obtenez l'exemple de code de fonction Python ici : func.py et écrasez le fichier
func.py
local créé lors de la commande de fonctioninit
.# Copy the function code from this lab and save it on /tmp/func.py in your shell machine ls -lrt /tmp/func.py # Overwrite the func.py with tha lab's code cp /tmp/func.py func.py # Add the OCI package on the requirements.txt file, this will be needed to work with OCI. echo -e "\noci" >> requirements.txt # Check if requirements.txt has two lines cat requirements.txt
-
Créez le nouveau code et déployez la fonction.
ls -lrt fn deploy --app MyApp
Tâche 5 : création des notifications OCI
-
Accédez à la console OCI et cliquez sur Services de développeur. Sous Intégration d'application, sélectionnez Notifications et cliquez sur Créer un sujet.
Nom :
AutoScaleTopic
. -
Cliquez sur Abonnements pour créer un abonnement et sélectionner la fonction créée dans la tâche 4.
Tâche 6 : créer la définition d'alarme à redimensionner (ajuster la taille du pool d'instances à la valeur cible)
-
Accédez à la console OCI et cliquez sur Observation et gestion. Sous Surveillance, sélectionnez Définitions d'alarme et cliquez sur Créer une alarme.
Remarque : les seuils, l'intervalle sur cette alarme est défini pour le tutoriel, que vous pouvez personnaliser selon vos propres besoins en fonction de votre application.
Nom d'alarme :
instance_pool_scale_OUT
. -
Saisissez les informations suivantes pour définir l'alarme.
-
Dans la section Description de la mesure, entrez les informations suivantes.
- Espace de noms de mesure :
oci_lbaas
. - Nom de mesure :
HttpRequests
. - Intervalle :
1 minute
. - Statistique :
Max
.
- Espace de noms de mesure :
-
Dans la section Dimensions de mesure, entrez les informations suivantes.
-
Première dimension de mesure :
- Nom de dimension :
resourceID
. - Valeur de dimension : sélectionnez l'OCID de l'équilibreur de charge.
- Nom de dimension :
-
Deuxième dimension de mesure :
- Nom de dimension :
backendSetName
. - Valeur de dimension : sélectionnez le nom backendSet.
- Nom de dimension :
-
-
Dans la section Règle de déclencheur 1, entrez les informations suivantes.
- Opérateur :
greater than
. - Valeur :
30
. - Corps de l'alarme : le nombre de connexions est plus élevé que prévu. Lancez le processus de redimensionnement.
- Opérateur :
-
-
Entrez les informations suivantes pour définir les notifications d'alarme.
-
Dans la section Destination, saisissez les informations suivantes.
- Service de destination : sélectionnez Notifications.
- Compartiment : sélectionnez votre compartiment.
- Thème : sélectionnez le sujet.
-
Dans la section Format de message, sélectionnez Envoyer des messages JSON jolis (texte brut avec saut de ligne) et, à des fins de test, sélectionnez Répéter la notification ? avec 1 minute de fréquence de notification.
-
-
Cliquez sur Options avancées et ajoutez une nouvelle balise.
Remarque : Il s'agit d'un balisage obligatoire pour définir le type de redimensionnement, entrant ou sortant.
Espace de noms de balise : sélectionnez Aucun (appliquer une balise à format libre).
Clé de balise :autoscaling_type
. Valeur :out
.
Tâche 7 : créer la définition d'alarme à réajuster (ajuster la taille du pool d'instances à la taille souhaitée)
-
Accédez à la console OCI et cliquez sur Observation et gestion. Sous Surveillance, sélectionnez Définitions d'alarme et cliquez sur Créer une alarme.
Remarque : les seuils, l'intervalle sur cette alarme est défini pour le tutoriel, que vous pouvez personnaliser selon vos propres besoins en fonction de votre application.
Nom d'alarme :
instance_pool_scale_IN
. -
Saisissez les informations suivantes pour définir l'alarme.
-
Dans la section Description de la mesure, entrez les informations suivantes.
- Espace de noms de mesure :
oci_lbaas
. - Nom de mesure :
HttpRequests
. - Intervalle :
1 minute
. - Statistique :
Max
.
- Espace de noms de mesure :
-
Dans la section Dimensions de mesure, entrez les informations suivantes.
-
Première dimension de mesure :
- Nom de dimension :
resourceID
. - Valeur de dimension : sélectionnez l'OCID de l'équilibreur de charge.
- Nom de dimension :
-
Deuxième dimension de mesure :
- Nom de dimension :
backendSetName
. - Valeur de dimension : sélectionnez le nom backendSet.
- Nom de dimension :
-
-
Dans la section Règle de déclencheur 1, entrez les informations suivantes.
- Opérateur :
less than
. - Valeur :
30
. - Corps de l'alarme : le nombre de connexions revient à la valeur acceptable, appelant une réduction pour réduire le nombre d'instances à la valeur souhaitée.
- Opérateur :
-
-
Entrez les informations suivantes pour définir les notifications d'alarme.
-
Dans la section Destination, saisissez les informations suivantes.
- Service de destination : sélectionnez Notifications.
- Compartiment : sélectionnez votre compartiment.
- Thème : sélectionnez le sujet.
-
Dans la section Format de message, sélectionnez Envoyer des messages JSON lisibles (texte brut avec des sauts de ligne).
-
-
Cliquez sur Options avancées et ajoutez une nouvelle balise.
Remarque : Il s'agit d'un balisage obligatoire pour définir le type de redimensionnement, entrant ou sortant.
Espace de noms de balise : sélectionnez Aucun (appliquer une balise à format libre).
Clé de balise :autoscaling_type
. Valeur :in
.
Tâche 8 : Créer une charge et vérifier le fonctionnement de l'alarme
-
Obtenez votre adresse IP LoadBalancer et exécutez plusieurs appels vers votre application sur le port
80
. Ouvrez la console shell et exécutez le code suivant pour appeler l'équilibreur de charge.i=1 while true do echo "Request $i" curl http://your-ip-here ((i++)) echo "" # Prints a newline for better readability between requests done
Sortie de la charge d'application simple.
Remarque : il s'agit d'un serveur Web HTTP Apache simple pour illustrer le scénario.
-
Vérifiez la taille et le statut réels du pool d'instances. Pour ce tutoriel, nous disposons d'un pool d'instances de taille
1
. -
Ouvrez la définition d'alarme pour visualiser les mesures et vérifier si l'alarme se déclenche.
-
Après quelques minutes, en fonction de l'intervalle de mesure, la fonction d'augmentation est déclenchée.
Ouvrez les pools d'instances et vérifiez que l'état est Redimensionnement et que le nombre d'instances cible est
2
.Après le processus de redimensionnement, vous pouvez voir que la taille du pool d'instances est
2
. -
Arrêtez le script shell et attendez que l'alarme de la transition d'augmentation redevienne OK, puis observez l'alarme pour la réduction. Attendez quelques minutes jusqu'à ce que les deux alarmes soient mises à jour et observez à quel moment l'alarme pour le redimensionnement se déclenche.
Maintenant, l'alarme scale-in est en état de feu.
Notez que HttpRequests est tombé à un nombre inférieur au seuil de
30
.Le redimensionnement du pool d'instances a démarré.
La taille du pool d'instances revient à la valeur souhaitée de
1
.
Liens connexes
Remerciements
- Auteur - Joao Tarla (Ingénieur solutions Oracle LAD A-Team)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Autoscale an Oracle Cloud Infrastructure Instance Pool based on OCI Load Balancer HTTP Requests
F99757-01
May 2024