Note :

Ajuster automatiquement un groupe d'instances Oracle Cloud Infrastructure en fonction des demandes HTTP de l'équilibreur de charge OCI

Présentation

Dans ce tutoriel, nous verrons comment ajuster automatiquement un groupe 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.

Surveillance OCI : Utilisez le service de surveillance OCI pour surveiller activement et passivement les ressources en nuage à l'aide des fonctions de mesures et d'alarmes. Le service de surveillance pour OCI utilise des mesures pour surveiller les ressources et des alarmes pour vous aviser lorsque ces mesures déclenchent les alarmes spécifiées.

Avis OCI : Lorsqu'un événement se produit avec vos ressources dans OCI, vous pouvez obtenir des messages lisibles par l'utilisateur au moyen de points d'extrémité pris en charge, y compris les courriels et les messages texte (SMS) à l'aide d'alarmes, de règles d'événement et de connecteurs. Vous pouvez également automatiser les tâches au moyen de points d'extrémité HTTPS personnalisés et du service des fonctions pour OCI.

Service des fonctions pour OCI : Le service des fonctions pour OCI est une plate-forme Functions-as-a-Service, sur demande, entièrement gérée, multilocataire et hautement évolutive. Elle repose sur OCI de niveau entreprise et utilise le moteur à code source libre Fn Project. Utilisez le service des fonctions pour OCI (parfois appelé fonctions, et anciennement appelé Oracle Functions) lorsque vous voulez vous concentrer sur l'écriture de code pour répondre à des besoins d'affaires.

Architecture de haut niveau

T3_1

Note :

Objectifs

Préalables

Tâche 1 : Configurer des groupes dynamiques

Allez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.

Nom du groupe dynamique : MyFunctions.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Tâche 2 : Créer des politiques

Allez à Politiques et créez les politiques suivantes.

Nom de la politique : 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 un registre de conteneurs pour OCI

  1. Allez à Services de développement, cliquez sur Registre de conteneurs et créez un référentiel privé pour l'image Fn.

    Nom du référentiel : lab/fn-autoscale-instance-pool.

    T3_1

  2. Vérifiez les référentiels et notez l'espace de noms.

    T3_1

  3. Ouvrez l'interpréteur de commandes de terminal où 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 Brésil - Est (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
    

    T3_3

Tâche 4 : Créer le service des fonctions pour OCI Python pour ajuster automatiquement le groupe d'instances

Note : Assurez-vous d'avoir sélectionné votre sous-réseau privé, le même sous-réseau que celui du groupe de flux.

  1. Allez à la console OCI et cliquez sur Services de développement. Sous Fonctions, cliquez sur Applications et sur Créer une application.

    T9_1

  2. Créez quelques configurations pour configurer les tailles d'ajustement.

    Note : Ces variables de configuration sont utilisées pour déterminer les valeurs que la fonction utilisera pour augmenter et réduire le groupe d'instances.

    Nom de la clé secrète Valeur
    INSTANCE_POOL_TARGET_SIZE Définir la valeur de la nouvelle taille de groupe d'instances
    INSTANCE_POOL_DESIRED_SIZE Définir la taille normale du groupe d'instances

    Pour ce tutoriel, nous utilisons un groupe d'instances de 1 instance et une mise à l'échelle vers 2.

    T4_2

  3. Allez à l'interpréteur de commandes de terminal où Docker, l'interface de ligne de commande OCI et l'interface de ligne de commande Fn Project sont installés et exécutez les commandes suivantes pour initialiser la fonction.

    Note : Si vous avez suivi les tâches, votre commande de connexion Docker a déjà été exécutée maintenant, sinon, continuez avec le journal Docker à la tâche 3.3.

    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
    

    Note : Dans ce tutoriel, nous utilisons la région Brésil - Est (Sao Paulo). Si vous utilisez une autre région, vous devez modifier les emplacements api-url et registry.

    T4_3

    La commande init créera une fonction Hello World sur func.py. Nous remplacerons ce code.

  4. Obtenez l'exemple de code de fonction Python à partir d'ici : func.py et remplacez la valeur func.py locale créée lors de la commande init de la fonction.

    # 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
    

    T9_1

  5. Créez le nouveau code et déployez la fonction.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Tâche 5 : Créer les avis OCI

  1. Allez à la console OCI et cliquez sur Services de développement. Sous Service d'intégration d'applications, sélectionnez Service d'avis et cliquez sur Créer un sujet.

    Nom : AutoScaleTopic.

    T5_1

  2. Cliquez sur Abonnements pour créer un nouvel abonnement et sélectionnez la fonction créée dans la tâche 4.

    T5_2

Tâche 6 : Créer la définition d'alarme à augmenter (ajuster la taille du groupe d'instances à la valeur cible)

  1. Allez à la console OCI et cliquez sur Observabilité et gestion. Sous Service de surveillance, sélectionnez Définition d'alarmes et cliquez sur Créer une alarme.

    Note : Les seuils et l'intervalle de cette alarme sont définis pour le tutoriel. Vous pouvez les personnaliser en fonction de vos besoins, selon votre application.

    Nom de l'alarme : instance_pool_scale_OUT.

  2. Entrez les informations suivantes pour définir l'alarme.

    1. 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.
    2. Dans la section Dimensions Mesure, entrez les informations suivantes.

      • Première dimension de mesure :

        • Nom de dimension : resourceID.
        • Valeur de dimension : Sélectionnez l'OCID de votre équilibreur de charge.
      • Deuxième dimension métrique :

        • Nom de dimension : backendSetName.
        • Valeur de dimension : Sélectionnez votre nom backendSet.

      T6_1

    3. Dans la section Règle de déclenchement 1, entrez les informations suivantes.

      • Opérateur : greater than.
      • Valeur : 30.
      • Corps de l'alarme : Le nombre de connexions est supérieur aux attentes. Lancez le processus d'ajustement.

      T6_1

  3. Entrez les informations suivantes pour définir les avis d'alarme.

    1. Dans la section Destination, entrez les informations suivantes.

      • Service de destination : Sélectionnez Avis.
      • compartiment : Sélectionnez votre compartiment.
      • Sujet : Sélectionnez un sujet.
    2. Dans la section Format de message, sélectionnez Envoyer des messages JSON Pretty (texte brut avec sauts de ligne) et, à des fins de test, sélectionnez Répéter l'avis? avec 1 minute de fréquence d'avis.

    T6_1

  4. Cliquez sur Options avancées et ajoutez un nouveau marqueur.

    Note : Il s'agit d'un marquage obligatoire pour définir le type d'ajustement, entrant ou sortant.

    Espace de noms de marqueur : Sélectionnez Aucun (appliquer un marqueur à structure libre).
    Clé de marqueur : autoscaling_type. Valeur : out.

    T6_1

Tâche 7 : Créer la définition d'alarme pour la redimensionner (ajuster la taille du groupe d'instances à la taille souhaitée)

  1. Allez à la console OCI et cliquez sur Observabilité et gestion. Sous Service de surveillance, sélectionnez Définition d'alarmes et cliquez sur Créer une alarme.

    Note : Les seuils et l'intervalle de cette alarme sont définis pour le tutoriel. Vous pouvez les personnaliser en fonction de vos besoins, selon votre application.

    Nom de l'alarme : instance_pool_scale_IN.

  2. Entrez les informations suivantes pour définir l'alarme.

    1. 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.
    2. Dans la section Dimensions Mesure, entrez les informations suivantes.

      • Première dimension de mesure :

        • Nom de dimension : resourceID.
        • Valeur de dimension : Sélectionnez l'OCID de votre équilibreur de charge.
      • Deuxième dimension métrique :

        • Nom de dimension : backendSetName.
        • Valeur de dimension : Sélectionnez votre nom backendSet.
    3. Dans la section Règle de déclenchement 1, entrez les informations suivantes.

      • Opérateur : less than.
      • Valeur : 30.
      • Corps de l'alarme : Le nombre de connexions revient à la valeur acceptable, en appelant l'augmentation pour ramener le nombre d'instances à la valeur souhaitée.

      T7_1

  3. Entrez les informations suivantes pour définir les avis d'alarme.

    1. Dans la section Destination, entrez les informations suivantes.

      • Service de destination : Sélectionnez Avis.
      • compartiment : Sélectionnez votre compartiment.
      • Sujet : Sélectionnez un sujet.
    2. Dans la section Format de message, sélectionnez Envoyer des messages JSON Pretty (texte brut avec saut de ligne).

  4. Cliquez sur Options avancées et ajoutez un nouveau marqueur.

    Note : Il s'agit d'un marquage obligatoire pour définir le type d'ajustement, entrant ou sortant.

    Espace de noms de marqueur : Sélectionnez Aucun (appliquer un marqueur à structure libre).
    Clé de marqueur : autoscaling_type. Valeur : in.

    T7_1

Tâche 8 : Créer un chargement et vérifier le fonctionnement de l'alarme

  1. Obtenez votre adresse IP LoadBalancer et exécutez plusieurs appels à votre application sur le port 80. Ouvrez la console de l'interpréteur de commandes et exécutez le code suivant pour appeler votre é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 du chargement d'application simple.

    T8_1

    Note : Il s'agit d'un simple serveur Web HTTP Apache pour démontrer le scénario.

  2. Vérifiez la taille et le statut réels de votre groupe d'instances. Pour ce tutoriel, nous avons un groupe d'instances de taille 1.

    T8_1

  3. Ouvrez la définition de l'alarme pour voir les mesures et vérifier si l'alarme va se déclencher.

    T8_1

    T8_1

  4. Au bout de quelques minutes, selon l'intervalle de mesure, la fonction d'augmentation est déclenchée.

    Ouvrez les groupes d'instances et vérifiez que l'état est Ajustement et que le nombre d'instances cibles est 2.

    T8_1

    Après le processus d'ajustement, vous pouvez voir que la taille du groupe d'instances est 2.

    T8_1

  5. Arrêtez le script de l'interpréteur de commandes et attendez que l'alarme de la transition d'augmentation soit de nouveau réglée à OK, puis observez l'alarme pour l'augmentation. Attendez quelques minutes jusqu'à ce que les deux alarmes soient mises à jour et observez quand l'alarme sera déclenchée.

    T8_1

    Maintenant, l'alarme de mise à l'échelle est en état de feu.

    T8_1

    Notez que HttpRequests est passé à un nombre inférieur au seuil de 30.

    T8_1

    L'augmentation du groupe d'instances a commencé.

    T8_1

    Notez que la taille du groupe d'instances revient à la valeur désirée de 1.

    T8_1

Remerciements

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur 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.