Concevoir des systèmes robustes

Ce document décrit les bonnes pratiques à adopter pour concevoir des systèmes robustes sur Compute Engine. Il fournit des conseils généraux et présente certaines fonctionnalités de Compute Engine pouvant vous aider à limiter les temps d'arrêt de vos instances et à être prêt à intervenir en cas de défaillance imprévue de vos instances de machines virtuelles (VM).

Un système robuste est un système capable de résister à un certain nombre de pannes ou de perturbations sans que votre service ne soit interrompu ou que l'expérience de vos utilisateurs n'en soit affectée. Bien que Compute Engine s'efforce de prévenir de telles perturbations, certains événements restent imprévisibles et il est préférable de se préparer à ces éventualités.

Comprendre les types de défaillances

À un moment ou à un autre, des défaillances du système ou du matériel peuvent conduire à la perte d'une ou plusieurs de vos instances de VM. Voici une liste non exhaustive de défaillances possibles :

  • Défaillance imprévue d'une instance unique

    La défaillance imprévue d'une instance unique peut être due à une défaillance matérielle ou système. Afin de minimiser l'impact de tels événements, utilisez des disques persistants et des scripts de démarrage pour enregistrer vos données et relancer les logiciels après le redémarrage de l'instance.

  • Redémarrage imprévu d'une instance unique

    À un moment donné, vous rencontrerez une défaillance imprévue et un redémarrage d'une instance unique. À la différence d'une défaillance imprévue d'une instance unique, votre instance subit une défaillance et est automatiquement redémarrée par le service Google Compute Engine. Afin de minimiser l'impact de tels événements, sauvegardez vos données, utilisez des disques persistants et faites appel à des scripts de démarrage pour reconfigurer rapidement les logiciels.

  • Défaillance de zone ou de région

    Les défaillances de zone et de région sont des défaillances rares qui peuvent rendre inaccessibles ou défaillantes toutes vos instances situées dans une zone ou une région donnée.

    Afin de minimiser l'impact de ces défaillances, garantissez une diversité en matière de régions et de zones et mettez en œuvre l'équilibrage de charge. Il est également recommandé de sauvegarder vos données ou de répliquer vos disques persistants dans plusieurs zones.

Conseils pour concevoir des systèmes robustes

Pour minimiser les défaillances d'instances, il est recommandé de concevoir votre application sur le service Google Compute Engine pour résister aux pannes, aux interruptions de réseau et aux catastrophes inattendues. Un système robuste doit être capable de gérer correctement les défaillances, par exemple en redirigeant le trafic d'une instance en panne vers une instance active ou en automatisant les tâches lors du redémarrage.

Voici quelques conseils généraux pour vous aider à concevoir un système robuste, capable de résister aux défaillances.

Utiliser la migration à chaud

Google assure une maintenance régulière de son infrastructure en appliquant à ses systèmes les correctifs logiciels les plus récents, en effectuant des tests de routine et de la maintenance préventive, et en s'assurant de manière générale que notre infrastructure est aussi sécurisée, rapide et efficace que possible. Compute Engine utilise la migration à chaud pour garantir que cette maintenance de l'infrastructure reste par défaut transparente pour vos instances de machines virtuelles.

La migration à chaud est une technologie conçue par Google pour déplacer vos instances en cours d'exécution depuis des systèmes devant subir une opération de maintenance. Elle est réalisée automatiquement par Compute Engine.

Au cours d'une migration à chaud, votre instance peut connaître une brève baisse de performance. Vous avez également la possibilité de configurer vos instances de machines virtuelles pour qu'elles s'arrêtent et redémarrent afin d'éviter l'événement de maintenance. Cette option est adaptée aux instances exigeant des performances constantes et maximales, et lorsque votre application dans son ensemble est conçue pour gérer les défaillances ou les redémarrages des instances.

Pour configurer vos machines virtuelles pour soit gérer une migration à chaud, soit redémarrer afin d'éviter la migration, consultez la page Définir les options de planification des instances.

Pour plus d'informations sur cette fonctionnalité, consultez la documentation associée Migration à chaud.

Distribuer vos instances

Créez des instances réparties sur plusieurs zones et régions de manière à disposer d'instances de machines virtuelles de secours à utiliser en cas de perturbations dans l'une des zones ou régions hébergeant l'une de vos instances. Si vous hébergez toutes vos instances dans la même zone ou région, vous ne pourrez accéder à aucune de ces instances si cette zone ou cette région devient inaccessible.

Utiliser des noms DNS internes spécifiques à la zone

Si vous utilisez des noms DNS internes ou des noms d'instances pour communiquer avec des instances sur votre réseau interne Compute Engine, utilisez des noms DNS zonaux. Les serveurs DNS internes sont répartis sur toutes les zones. Vous pouvez donc vous fier aux noms DNS zonaux pour assurer la résolution, même en cas de défaillance sur d'autres sites. Le nom de domaine complet interne d'une instance possède la forme suivante :

  • Instances utilisant un DNS zonal : [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
  • Instances utilisant un DNS global : [INSTANCE_NAME].c.[PROJECT_ID].internal

où :

  • [INSTANCE_NAME] est le nom de l'instance.
  • [ZONE] est la zone où se trouve votre instance ;
  • [PROJECT_ID] est le projet auquel l'instance appartient.

Pour vérifier si une instance utilise des noms DNS zonaux ou globaux, consultez la section Afficher le nom DNS de l'instance.

Si votre projet utilise des noms DNS globaux, vous pouvez préparer vos applications à utiliser des noms DNS et des chemins de recherche zonaux. Pour plus d'informations, consultez la section Migrer vers des noms DNS zonaux.

Créer des groupes d'instances

Utilisez des groupes d'instances gérés pour créer des groupes d'instances homogènes permettant aux équilibreurs de charge de diriger le trafic vers différentes instances de VM si une VM individuelle n'est plus opérationnelle.

Les groupes d'instances gérés offrent également des fonctionnalités telles que l'autoscaling et l'autoréparation. L'autoscaling vous permet de gérer les pics de trafic en ajustant le nombre d'instances de VM à la hausse ou à la baisse en fonction de signaux spécifiques, tandis que l'autoréparation vérifie l'état des VM et, le cas échéant, re-génère automatiquement les instances non opérationnelles.

Les groupes d'instances gérés sont également disponibles pour les régions. Vous pouvez ainsi créer un groupe d'instances de VM réparties sur plusieurs zones au sein d'une même région. Pour plus d'informations, consultez la page Distribuer des instances à l'aide de groupes d'instances gérés régionaux.

Utiliser l'équilibrage de charge

Google Cloud Platform propose un service d'équilibrage de charge qui vous aide à gérer des périodes de trafic intense de manière à éviter la surcharge de vos instances. Avec le service d'équilibrage de charge, vous pouvez :

  • Déployer votre application sur des instances réparties sur plusieurs zones à l'aide de groupes d'instances gérés régionaux. Vous pouvez ensuite configurer une règle de transfert permettant de répartir le trafic sur l'ensemble des instances de machines virtuelles disponibles dans toutes les zones de la région. Chaque règle de transfert peut définir un point d'entrée dans votre application au moyen d'une adresse IP externe.

  • Déployer des instances sur plusieurs régions à l'aide de l'équilibrage de charge global. L'équilibrage de charge HTTP(S) permet au trafic d'entrer dans le système Google Cloud Platform à l'emplacement le plus proche du client. L'équilibrage de charge sur plusieurs régions assure la redondance, de sorte que si une région est inaccessible, le trafic est automatiquement redirigé vers une autre région. Ainsi, votre service reste accessible via la même adresse IP externe.

  • Vous servir de l'autoscaling pour ajouter ou supprimer automatiquement des instances d'un groupe d'instances géré en fonction de l'augmentation ou de la diminution de la charge.

En outre, le service d'équilibrage de charge assure également une vérification de l'état de la VM, ce qui permet de détecter et traiter les défaillances des instances.

Pour en savoir plus, consultez la présentation de l'équilibrage de charge et la documentation relative à l'équilibrage de charge.

Utiliser des scripts de démarrage et d'arrêt

Compute Engine propose des scripts de démarrage et d'arrêt qui s'exécutent respectivement lorsqu'une instance démarre ou s'arrête. Ces scripts peuvent automatiser certaines tâches telles que l'installation de logiciels, l'application de mises à jour, la réalisation de sauvegardes, la journalisation des données, et ainsi de suite, lorsque votre instance démarre ou s'arrête, que ce soit intentionnel ou non.

Les scripts de démarrage et d'arrêt sont un moyen précieux et efficace de gérer l'amorçage ou d'assurer un arrêt propre de vos instances. Pour configurer vos instances, plutôt que d'utiliser des images de système d'exploitation personnalisées, il peut être utile de passer par des scripts de démarrage. Les scripts de démarrage s'exécutent chaque fois que l'instance est redémarrée manuellement ou en raison de défaillances. Ils peuvent être utilisés pour installer des logiciels et des mises à jour, et pour garantir que les services sont correctement exécutés sur la VM. Il est plus facile de coder les modifications requises pour configurer une instance dans un script de démarrage, que d'essayer de déterminer quels fichiers ou octets ont été modifiés sur une image personnalisée.

Les scripts d'arrêt peuvent effectuer des tâches de dernière minute du type sauvegarde des données, enregistrement des journaux et fermeture adéquate des connexions avant l'arrêt effectif de l'instance.

Pour en savoir plus, consultez les pages Exécuter des scripts de démarrage et Exécuter des scripts d'arrêt.

Sauvegarder vos données

Sauvegardez vos données régulièrement et à plusieurs endroits. Vous pouvez sauvegarder vos fichiers dans Google Cloud Storage, créer des instantanés de disques persistants ou encore répliquer vos données vers un disque persistant situé dans une autre région ou zone.

Pour copier des fichiers depuis une instance vers Google Cloud Storage :

  1. Connectez-vous à votre instance :

    gcloud compute ssh example-instance
    
  2. Si vous n'avez jamais utilisé l'outil gsutil sur cette instance, configurez vos identifiants.

    gcloud init
    

    Si vous avez configuré votre instance pour utiliser un compte de service dont le champ d'application inclut Google Cloud Storage, vous pouvez ignorer cette étape ainsi que la prochaine.

  3. Suivez les instructions pour vous authentifier auprès de Google Cloud Storage.

  4. Copiez vos données vers Google Cloud Storage au moyen de la commande suivante :

    gsutil cp <file1> <file2> <file3> ...  gs://<your bucket>
    

Vous pouvez également utiliser l'outil gcloud compute pour copier des fichiers vers un ordinateur local. Pour plus d'informations, consultez la page Copier des fichiers vers ou à partir d'une instance.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine