Points de contrôle
Create GCS bucket
/ 10
Copy startup script and code to Cloud Storage bucket
/ 10
Deploy instances and configure network
/ 20
Create managed instance groups
/ 20
Create HTTP(S) load balancers
/ 10
Update the frontend instances
/ 10
Scaling GCE
/ 10
Update the website
/ 10
Hébergement d'une application Web sur Google Cloud à l'aide de Compute Engine
- GSP662
- Présentation
- Préparation
- Tâche 1 : Activer l'API Compute Engine
- Tâche 2 : Créer un bucket Cloud Storage
- Tâche 3 : Cloner le dépôt source
- Tâche 4 : Créer des instances Compute Engine
- Tâche 5 : Créer des groupes d'instances gérés
- Tâche 6 : Créer des équilibreurs de charge
- Tâche 7 : Procéder au scaling de Compute Engine
- Tâche 8 : Mettre à jour le site Web
- Félicitations !
GSP662
Présentation
Il existe de nombreuses façons de déployer des sites Web dans Google Cloud, et chacune d'elles offre des fonctionnalités, des capacités et des niveaux de contrôle différents. Compute Engine procure un haut niveau de contrôle sur l'infrastructure utilisée pour exécuter un site Web. Toutefois, ce composant nécessite aussi une gestion des opérations un peu plus conséquente que Google Kubernetes Engine (GKE), App Engine ou d'autres solutions. Avec Compute Engine, vous disposez d'un contrôle précis des différents aspects de l'infrastructure, comme les machines virtuelles, les équilibreurs de charge, etc.
Dans cet atelier, vous allez déployer un exemple d'application, le site Web d'e-commerce "Fancy Store", pour découvrir comment effectuer le déploiement et le scaling d'un site Web en toute facilité avec Compute Engine.
Points abordés
Dans cet atelier, vous allez apprendre à :
- créer des instances Compute Engine ;
- créer des modèles d'instance à partir d'instances sources ;
- créer des groupes d'instances gérés ;
- créer et tester des vérifications d'état pour les groupes d'instances gérés ;
- créer des équilibreurs de charge HTTP(S) ;
- créer des vérifications d'état pour les équilibreurs de charge ;
- utiliser un réseau de diffusion de contenu (CDN) pour la mise en cache.
À l'issue de l'atelier, vous disposerez d'instances dans des groupes d'instances gérés qui assureront l'autoréparation, l'équilibrage de charge, l'autoscaling et les mises à jour progressives de votre site Web.
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :
- Le bouton Ouvrir la console Google Cloud
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte. -
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}} Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}} Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés. -
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas à des essais gratuits.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Activer Cloud Shell
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
- Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
gcloud
est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
-
Cliquez sur Autoriser.
-
Vous devez à présent obtenir le résultat suivant :
Résultat :
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Définir votre région et votre zone
Certaines ressources Compute Engine sont hébergées dans des régions et des zones. Une région est un emplacement géographique spécifique où vous pouvez exécuter vos ressources. Chaque région se compose d'une ou plusieurs zones.
Exécutez les commandes gcloud suivantes dans la console Cloud pour définir la région et la zone par défaut de votre atelier :
Tâche 1 : Activer l'API Compute Engine
- Activez l'API Compute Engine en exécutant la commande suivante :
Tâche 2 : Créer un bucket Cloud Storage
Vous allez utiliser un bucket Cloud Storage pour héberger votre code compilé et vos scripts de démarrage.
- Dans Cloud Shell, exécutez la commande suivante pour créer un bucket Cloud Storage :
$DEVSHELL_PROJECT_ID
dans Cloud Shell permet de s'assurer que les noms des objets sont uniques. Étant donné que tous les ID de projet dans Google Cloud doivent être uniques, ajouter l'ID du projet devrait garantir l'unicité des autres noms.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 3 : Cloner le dépôt source
Vous allez baser votre site Web sur le site Web d'e-commerce Fancy Store existant, qui repose sur le dépôt monolith-to-microservices
.
Clonez le code source afin de pouvoir vous concentrer sur les différents aspects du déploiement sur Compute Engine. Dans la suite de cet atelier, vous modifierez légèrement le code pour expérimenter la simplicité du processus de mise à jour dans Compute Engine.
- Clonez le code source, puis accédez au répertoire
monolith-to-microservices
:
- Exécutez la compilation initiale du code pour permettre à l'application de s'exécuter localement :
L'exécution de ce script prend quelques minutes.
- Une fois cette opération terminée, vérifiez que Cloud Shell exécute une version NodeJS compatible à l'aide de la commande suivante :
- Ensuite, exécutez la commande suivante pour tester l'application, accéder au répertoire
microservices
et démarrer le serveur Web :
Vous devriez obtenir le résultat suivant :
- Prévisualisez votre application en cliquant sur l'icône Aperçu sur le Web, puis en sélectionnant Prévisualiser sur le port 8080.
Une nouvelle fenêtre présentant l'interface de Fancy Store s'affiche.
- Fermez cette fenêtre après avoir visualisé le site Web, puis appuyez sur CTRL+C dans la fenêtre de terminal pour arrêter le processus du serveur Web.
Tâche 4 : Créer des instances Compute Engine
Le moment est venu de commencer à déployer des instances Compute Engine.
Voici comment vous allez procéder :
- Créez un script de démarrage pour configurer les instances.
- Clonez le code source et importez-le dans Cloud Storage.
- Déployez une instance Compute Engine pour héberger les microservices backend.
- Reconfigurez le code de l'interface (frontend) pour qu'il utilise l'instance des microservices backend.
- Déployez une instance Compute Engine pour héberger le microservice frontend.
- Configurez le réseau pour autoriser la communication.
Créer le script de démarrage
Nous allons utiliser un script de démarrage pour indiquer à l'instance les opérations à effectuer à chaque démarrage. De cette manière, les instances sont automatiquement configurées.
- Dans Cloud Shell, exécutez la commande suivante pour créer un fichier nommé
startup-script.sh
:
- Cliquez sur Ouvrir l'éditeur dans le ruban Cloud Shell pour ouvrir l'éditeur de code.
-
Accédez au dossier
monolith-to-microservices
. -
Ajoutez le code suivant au fichier
startup-script.sh
. Vous modifierez ensuite une partie de ce code :
- Dans le fichier, recherchez le texte
[DEVSHELL_PROJECT_ID]
et remplacez-le par l'ID de votre projet :
La ligne de code dans startup-script.sh
doit maintenant être semblable à celle-ci :
-
Enregistrez le fichier
startup-script.sh
, mais ne le fermez pas pour le moment. -
Dans le coin inférieur droit de l'éditeur de code Cloud Shell, assurez-vous que l'option "End of Line Sequence" (Séquence de fin de ligne) est définie sur "LF" (Saut de ligne) et non sur "CRLF" (Retour chariot et saut de ligne).
- Si cette option est définie sur "CRLF" (Retour chariot et saut de ligne), cliquez sur CRLF, puis sélectionnez LF (Saut de ligne) dans la liste déroulante.
- Si elle est déjà définie sur LF, ne la modifiez pas.
-
Fermez le fichier
startup-script.sh
. -
Retournez au terminal Cloud Shell et exécutez la commande suivante pour copier le fichier
startup-script.sh
dans votre bucket :
Le fichier est à présent accessible à l'adresse suivante : https://storage.googleapis.com/[NOM_DU_BUCKET]/startup-script.sh
.
[NOM_DU_BUCKET] représente le nom du bucket Cloud Storage. Cet emplacement est uniquement visible par les utilisateurs autorisés et par les comptes de service par défaut. Il est donc inaccessible par l'intermédiaire d'un navigateur Web. Les instances Compute Engine y auront automatiquement accès via leur compte de service.
Le script de démarrage effectue les tâches suivantes :
- Il installe l'agent Logging qui collecte automatiquement les journaux de syslog.
- Il installe Node.js et Supervisor. Supervisor exécute l'application en tant que daemon.
- Il clone le code source de l'application à partir du bucket Cloud Storage et installe les dépendances.
- Il configure Supervisor pour exécuter l'application. Supervisor s'assure que l'application redémarre si elle se ferme de façon inattendue ou si elle est arrêtée par un administrateur ou par un processus. Il envoie également les fichiers "stdout" et "stderr" de l'application à syslog pour qu'ils soient collectés par l'agent Logging.
Copier le code dans le bucket Cloud Storage
Lorsque les instances démarrent, elles récupèrent le code du bucket Cloud Storage. Vous pouvez donc stocker certaines variables de configuration dans le fichier .env
du code.
- Copiez le code cloné dans votre bucket :
node_modules
sont supprimés pour que la copie puisse s'effectuer le plus rapidement et efficacement possible. Ces répertoires sont recréés sur les instances lorsqu'elles démarrent.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer l'instance backend
La première instance à déployer est l'instance backend qui doit héberger les microservices "Orders" (Commandes) et "Products" (Produits).
- Exécutez la commande suivante pour créer une instance
e2-standard-2
configurée pour utiliser le script de démarrage. Cette instance est dotée du tagbackend
, ce qui vous permettra de lui appliquer des règles de pare-feu spécifiques par la suite :
Configurer une connexion au backend
Avant de déployer l'interface de l'application, vous devez modifier la configuration pour qu'elle pointe vers le backend que vous venez de déployer.
- Exécutez la commande suivante pour récupérer l'adresse IP externe du backend, indiquée sous le libellé
EXTERNAL_IP
de l'instance backend :
Exemple de résultat :
-
Copiez l'adresse IP externe du backend.
-
Dans l'explorateur Cloud Shell, accédez à
monolith-to-microservices
>react-app
. -
Dans l'éditeur de code, sélectionnez View > Toggle Hidden Files (Afficher > Activer/Désactiver les fichiers cachés) pour voir le fichier
.env
.
L'étape suivante consiste à modifier le fichier .env
pour qu'il pointe vers l'adresse IP externe du backend. [ADRESSE_DU_BACKEND] représente l'adresse IP externe de l'instance backend déterminée au moyen de la commande gcloud
exécutée précédemment.
- Dans le fichier
.env
, remplacezlocalhost
par l'[ADRESSE_DU_BACKEND]
:
-
Enregistrez le fichier.
-
Dans Cloud Shell, exécutez la commande suivante pour recompiler
react-app
, ce qui mettra à jour le code de l'instance frontend :
- Ensuite, copiez le code d'application dans le bucket Cloud Storage :
Déployer l'instance frontend
Maintenant que le code est configuré, déployez l'instance frontend.
- Exécutez la commande suivante pour déployer l'instance
frontend
(la commande est semblable à celle utilisée pour l'instance backend). Cette instance est dotée du tagfrontend
pour les besoins du pare-feu :
Configurer le réseau
- Créez des règles de pare-feu afin d'autoriser l'accès au port 8080 pour le frontend, et aux ports 8081-8082 pour le backend. Ces commandes de pare-feu utilisent les tags attribués lors de la création des instances pour l'application :
Le site Web doit maintenant être totalement fonctionnel.
- Pour accéder à l'adresse IP externe du
frontend
, vous devez connaître cette adresse. Exécutez la commande suivante et recherchez l'adresse IP externe sous le libellé "EXTERNAL_IP" de l'instancefrontend
:
Exemple de résultat :
Le démarrage et la configuration de l'instance peuvent prendre quelques minutes.
-
Patientez trois minutes, puis ouvrez un nouvel onglet de navigateur et accédez au site Web en vous connectant à l'adresse
http://[ADRESSE_DU_FRONTEND]:8080
, où [ADRESSE_DU_FRONTEND] correspond à l'adresse IP externe de l'instance frontend déterminée ci-dessus (libellé "EXTERNAL_IP"). -
Essayez d'accéder aux pages Products (Produits) et Orders (Commandes), lesquelles doivent à présent fonctionner.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 5 : Créer des groupes d'instances gérés
Pour permettre le scaling de l'application, vous allez créer des groupes d'instances gérés qui utiliseront les instances frontend
et backend
en tant que modèles d'instance.
Un groupe d'instances géré (MIG) contient des instances identiques que vous pouvez gérer comme une seule entité dans une même zone. Les groupes d'instances gérés préservent la haute disponibilité de vos applications en s'assurant de manière proactive que vos instances restent disponibles, c'est-à-dire à l'état RUNNING (En cours d'exécution). Vous allez utiliser des groupes d'instances gérés pour vos instances frontend et backend afin d'assurer l'autoréparation, l'équilibrage de charge, l'autoscaling et les mises à jour progressives.
Créer un modèle d'instance à partir d'une instance source
Avant de créer un groupe d'instances géré, vous devez commencer par créer un modèle d'instance sur lequel reposera ce groupe. Les modèles d'instance vous permettent de définir le type de machine, l'image de disque de démarrage ou de conteneur, le réseau, ainsi que d'autres propriétés d'instance à utiliser lors de la création d'instances de VM. Vous pouvez utiliser des modèles d'instance aussi bien pour créer des instances dans un groupe d'instances géré que pour créer des instances individuelles.
Pour créer le modèle d'instance, utilisez les instances que vous avez créées précédemment.
- Commencez par arrêter les deux instances :
- Ensuite, créez le modèle d'instance à partir de chacune des instances sources :
- Vérifiez que les modèles d'instance ont été créés :
Exemple de résultat :
- Une fois les modèles d'instance créés, supprimez la VM
backend
pour économiser de l'espace de ressources :
- Saisissez Y lorsque vous y êtes invité.
Normalement, vous pouvez également supprimer la VM frontend
, mais vous allez l'utiliser pour mettre à jour le modèle d'instance dans la suite de l'atelier.
Créer un groupe d'instances géré
- Maintenant, créez deux groupes d'instances gérés, l'un pour le frontend, et l'autre pour le backend :
Ces groupes d'instances gérés utiliseront les modèles d'instance et sont configurés pour démarrer deux instances chacun. Les instances sont automatiquement nommées d'après la valeur spécifiée pour l'élément base-instance-name
, complétée par des caractères aléatoires.
- Dans le cas de votre application, le microservice
frontend
s'exécute sur le port 8080, tandis que le microservicebackend
s'exécute sur le port 8081 pourorders
(commandes) et sur le port 8082 pour "products" (produits) :
Étant donné qu'il s'agit de ports non standards, vous spécifiez des ports nommés pour les identifier. Les ports nommés sont des métadonnées de paire clé-valeur qui représentent le nom du service et le port sur lequel le service s'exécute. Les ports nommés peuvent être attribués à un groupe d'instances. Dans ce cas, le service est disponible sur toutes les instances du groupe. Ces informations sont utilisées par le service d'équilibrage de charge HTTP que nous configurerons par la suite.
Configurer l'autoréparation
Pour améliorer la disponibilité de l'application proprement dite et pour vérifier qu'elle répond, configurez une règle d'autoréparation pour les groupes d'instances gérés.
Une règle d'autoréparation repose sur une vérification de l'état basée sur l'application pour s'assurer qu'une application répond comme prévu. Vérifier la réactivité d'une application constitue une méthode plus précise que simplement s'assurer qu'une instance présente l'état RUNNING (En cours d'exécution), qui est le comportement par défaut.
- Créez une vérification d'état qui répare l'instance si elle renvoie la valeur "unhealthy" (non opérationnelle) trois fois de suite pour les instances
frontend
etbackend
:
- Créez une règle de pare-feu pour autoriser les vérifications d'état à se connecter aux microservices sur les ports 8080-8081 :
- Appliquez les vérifications d'état à leurs services respectifs :
- Poursuivez l'atelier pour laisser le temps à l'autoréparation de surveiller les instances du groupe. Vous simulerez une défaillance à la fin de l'atelier pour tester l'autoréparation.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 6 : Créer des équilibreurs de charge
Pour compléter vos groupes d'instances gérés, utilisez des équilibreurs de charge HTTP(S) afin d'acheminer le trafic vers les microservices frontend et backend, et servez-vous de mappages pour envoyer le trafic aux services de backend appropriés en fonction des règles de chemin d'accès. Cela expose une seule adresse IP à équilibrage de charge pour la totalité des services.
Pour en savoir plus sur les options d'équilibrage de charge sur Google Cloud, consultez le guide Présentation de Cloud Load Balancing.
Créer un équilibreur de charge HTTP(S)
Google Cloud offre de nombreux types d'équilibreurs de charge. Dans cet atelier, vous utilisez un équilibreur de charge HTTP(S) pour votre trafic. Un équilibreur de charge HTTP est structuré de la manière suivante :
- Une règle de transfert dirige les requêtes entrantes vers un proxy HTTP cible.
- Le proxy HTTP cible analyse chaque requête par rapport à un mappage d'URL afin de déterminer le service de backend approprié pour la requête.
- Le service de backend dirige chaque requête vers un backend adapté en fonction de la capacité de diffusion, de la zone et de l'état des instances des backends qui lui sont associés. L'état de chaque instance backend est contrôlé à l'aide d'une vérification d'état HTTP. Si le service de backend est configuré pour utiliser une vérification d'état HTTPS ou HTTP/2, la requête est chiffrée pour être acheminée vers l'instance backend.
- Les sessions entre l'équilibreur de charge et l'instance peuvent utiliser le protocole HTTP, HTTPS ou HTTP/2. Si vous utilisez HTTPS ou HTTP/2, chaque instance des services de backend doit posséder un certificat SSL.
- Créez des vérifications d'état qui serviront à déterminer les instances capables d'acheminer le trafic pour chaque service :
- Créez les services de backend qui constituent la cible du trafic à équilibrage de charge. Les services de backend utiliseront les vérifications d'état et les ports nommés que vous avez créés :
- Ajoutez les services de backend de l'équilibreur de charge :
- Créez un mappage d'URL. Le mappage d'URL définit les URL à diriger vers des services de backend spécifiques :
- Créez un outil de mise en correspondance des chemins d'accès pour autoriser le routage à partir des chemins d'accès
/api/orders
et/api/products
vers leurs services respectifs :
- Créez le proxy lié au mappage d'URL :
- Créez une règle de transfert globale qui associe une adresse IP publique et un port au proxy :
Cliquez sur Vérifier ma progression pour valider l'objectif.
Mettre à jour la configuration
Maintenant que vous disposez d'une nouvelle adresse IP statique, modifiez le code du frontend
pour qu'il pointe vers cette nouvelle adresse, et non plus vers l'adresse éphémère utilisée précédemment qui pointait vers l'instance backend
.
- Dans Cloud Shell, accédez au dossier
react-app
qui héberge le fichier.env
contenant la configuration :
- Recherchez l'adresse IP de l'équilibreur de charge :
Exemple de résultat :
- Revenez dans l'éditeur Cloud Shell et modifiez de nouveau le fichier
.env
pour qu'il pointe vers l'adresse IP publique de l'équilibreur de charge. [IP_D'ÉQUILIBREUR] représente l'adresse IP externe de l'instance backend déterminée ci-dessus.
-
Enregistrez le fichier.
-
Recompilez
react-app
, ce qui mettra à jour le code du frontend :
- Copiez le code d'application dans votre bucket :
Mettre à jour les instances frontend
Maintenant que le code et la configuration ont été modifiés, vous voulez que les instances frontend du groupe d'instances géré récupèrent le nouveau code.
Étant donné que vos instances récupèrent le code au démarrage, vous pouvez exécuter une commande de redémarrage progressif :
--max-unavailable
. En l'absence de ce paramètre, la commande conserve une instance opérationnelle pendant que les autres instances redémarrent afin d'assurer la disponibilité. Pour accélérer le test, vous demandez le remplacement immédiat de toutes les instances.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tester le site Web
- Après avoir exécuté la commande
rolling-action replace
, attendez trois minutes le temps que les instances soient traitées, puis vérifiez l'état du groupe d'instances géré. Exécutez la commande suivante pour vérifier que le service est répertorié avec l'état HEALTHY (Opérationnel) :
- Attendez que les deux services soient indiqués avec l'état HEALTHY (Opérationnel).
Exemple de résultat :
Si aucune des instances ne présente l'état HEALTHY (Opérationnelle) après un petit moment, il existe un problème avec la configuration des instances frontend, car l'accès à ces instances sur le port 8080 ne fonctionne pas. Vérifiez ce point en accédant aux instances directement sur le port 8080.
- Une fois que les deux éléments sont répertoriés avec l'état HEALTHY (Opérationnel), quittez la commande
watch
en appuyant sur CTRL+C.
gcloud compute forwarding-rules list --global
Tâche 7 : Procéder au scaling de Compute Engine
Jusqu'à présent, vous avez créé deux groupes d'instances gérés comportant chacun deux instances. Cette configuration est totalement fonctionnelle, mais se révèle statique, quelle que soit la charge. Maintenant, vous allez créer une règle d'autoscaling basée sur l'utilisation pour procéder au scaling automatique de chaque groupe d'instances géré.
Redimensionner automatiquement selon l'utilisation
- Pour créer la règle d'autoscaling, exécutez la commande suivante :
Ces commandes créent sur les groupes d'instances gérés un autoscaler qui ajoute automatiquement des instances lorsque l'utilisation de l'équilibreur de charge est supérieure à 60 %, et qui supprime des instances quand cette utilisation est inférieure à 60 %.
Activer le réseau de diffusion de contenu (CDN)
Une autre fonctionnalité pouvant faciliter le scaling consiste à activer un service de réseau de diffusion de contenu afin d'assurer la mise en cache pour l'instance frontend.
- Exécutez la commande suivante sur le service de frontend :
Lorsqu'un utilisateur demande un contenu à l'équilibreur de charge HTTP(S), la requête aboutit à un service Google Front End (GFE), qui commence par rechercher une réponse à la requête dans le cache Cloud CDN. Si le GFE trouve une réponse mise en cache, il l'envoie à l'utilisateur. C'est ce que l'on appelle un succès de cache (hit).
Si le GFE ne trouve aucune réponse à la requête dans le cache, il adresse une requête directement au backend. S'il reçoit une réponse pouvant être mise en cache, le GFE la stocke dans le cache Cloud CDN, qui pourra alors servir pour les requêtes ultérieures.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Tâche 8 : Mettre à jour le site Web
Mettre à jour le modèle d'instance
Les modèles d'instance existants ne sont pas modifiables. Toutefois, étant donné que vos instances sont sans état et que l'intégralité de la configuration est effectuée via le script de démarrage, il vous suffit de modifier le modèle d'instance si vous voulez changer ses paramètres. Dans cette section, vous allez effectuer une modification simple en vue d'utiliser un type de machine plus performant, puis vous déploierez cette modification.
Voici comment vous allez procéder :
-
Mettez à jour l'instance
frontend
, qui constitue la base du modèle d'instance. Lors de la mise à jour, placez un fichier dans la version modifiée de l'image du modèle d'instance, puis mettez à jour le modèle d'instance, déployez le nouveau modèle et vérifiez l'existence du fichier sur les instances du groupe d'instances géré. -
Remplacez le type de machine
e2-standard-2
de votre modèle d'instance pare2-small
.
- Exécutez la commande suivante pour modifier le type de machine de l'instance frontend :
- Créez le modèle d'instance :
- Déployez le modèle d'instance modifié sur le groupe d'instances géré :
- Attendez trois minutes, puis exécutez la commande suivante pour surveiller l'état de la mise à jour :
Cette opération prend quelques instants.
Une fois qu'au moins l'une des instances présente l'état suivant :
- STATUS (État) : RUNNING (En cours d'exécution)
- ACTION : None (Aucune)
- INSTANCE_TEMPLATE (Modèle_d'instance) : nouveau nom de modèle (fancy-fe-new)
-
Copiez le nom de l'une des machines répertoriées pour l'utiliser dans la commande suivante.
-
Appuyez sur CTRL+C pour quitter le processus
watch
. -
Pour vérifier si la machine virtuelle utilise le nouveau type de machine (e2-small), exécutez la commande suivante, où [NOM_DE_VM] est l'instance que vous venez de créer :
Exemple de résultat attendu :
Apporter des modifications au site Web
Scénario : votre équipe marketing vous a demandé de modifier la page d'accueil de votre site. Elle estime en effet que cette page doit fournir plus d'informations sur votre entreprise et sur les produits qu'elle commercialise.
Tâche : ajoutez du texte à la page d'accueil pour répondre aux attentes de l'équipe marketing. L'un des développeurs a déjà spécifié les modifications souhaitées dans le fichier index.js.new
. Il vous suffit donc de copier le contenu de ce fichier dans le fichier index.js
pour répercuter ces modifications. Suivez les instructions ci-dessous pour apporter les changements appropriés.
- Exécutez ces commandes pour créer une copie du fichier mis à jour sous le nom de fichier correct :
- Affichez le contenu du fichier pour vérifier les modifications :
Le code obtenu doit se présenter comme suit :
Vous avez mis à jour les composants React, mais vous devez compiler l'application React pour générer les fichiers statiques.
- Exécutez la commande suivante pour compiler l'application React et la copier dans le répertoire public "monolith" :
- Ensuite, retransférez ce code vers le bucket :
Déployer les modifications à l'aide de remplacements progressifs
- Maintenant, forcez le remplacement de toutes les instances pour récupérer la mise à jour :
Remarque : Dans cet exemple de remplacement progressif, vous indiquez spécifiquement que toutes les machines peuvent être remplacées immédiatement par l'intermédiaire du paramètre --max-unavailable
. En l'absence de ce paramètre, la commande conserve une instance opérationnelle pendant le remplacement des autres instances. Pour accélérer le test, vous demandez le remplacement immédiat de toutes les instances. Dans un environnement de production, conserver un tampon permet de poursuivre la diffusion du site Web pendant la mise à jour.
Cliquez sur Vérifier ma progression pour valider l'objectif.
- Après avoir exécuté la commande
rolling-action replace
, attendez trois minutes le temps que les instances soient traitées, puis vérifiez l'état du groupe d'instances géré. Exécutez la commande suivante pour vérifier que le service est répertorié avec l'état HEALTHY (Opérationnel) :
- Attendez quelques instants que les deux services s'affichent avec l'état HEALTHY (Opérationnel).
Exemple de résultat :
-
Une fois que les éléments sont répertoriés avec l'état HEALTHY (Opérationnel), quittez la commande
watch
en appuyant sur CTRL+C. -
Accédez au site Web via
http://[IP_D'ÉQUILIBREUR]
, où [IP_D'ÉQUILIBREUR] correspond à l'adresse IP spécifiée pour l'équilibreur de charge dans le résultat de la commande suivante :
Les nouvelles modifications du site Web doivent maintenant être visibles.
Simuler une défaillance
Pour vous assurer que la vérification d'état fonctionne, connectez-vous à une instance et arrêtez les services.
- Pour rechercher un nom d'instance, exécutez la commande suivante :
- Copiez un nom d'instance, puis exécutez la commande suivante pour accéder à l'instance à l'aide du protocole Secure Shell, où "NOM_D'INSTANCE" désigne l'une des instances de la liste :
-
Appuyez sur la touche "Y" pour confirmer, puis appuyez deux fois sur Entrée pour ne pas utiliser de mot de passe.
-
Dans l'instance, utilisez
supervisorctl
pour arrêter l'application :
- Quittez l'instance :
- Surveillez les opérations de réparation :
Cette opération prend quelques minutes.
Recherchez l'exemple de résultat suivant :
Le groupe d'instances géré a recréé l'instance pour la réparer.
- Vous pouvez également surveiller la réparation via la console en accédant au menu de navigation > Compute Engine > Instances de VM.
Félicitations !
Vous avez assuré le déploiement, le scaling et la mise à jour de votre site Web sur Compute Engine. Vous savez maintenant utiliser Compute Engine, les groupes d'instances gérés, les équilibreurs de charge et les vérifications d'état.
Étapes suivantes et informations supplémentaires
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 26 avril 2024
Dernier test de l'atelier : 15 décembre 2023
Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.