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 d'ordre général et traite de certaines fonctionnalités de Compute Engine, qui permettent de limiter les temps d'arrêt des instances et de prévenir les défaillances inattendues des 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 soit interrompu ou que l'expérience de vos utilisateurs 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 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é 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 limiter les défaillances d'instance, il est recommandé de concevoir votre application sur le service Compute Engine pour résister aux pannes, aux interruptions du 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 gérer une migration à chaud ou redémarrer afin d'éviter la migration, consultez la page Définir les règles de disponibilité d'une instance.

Pour en savoir plus sur cette fonctionnalité, consultez la page 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 se présente sous l'une des formes suivantes :

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

où :

  • [INSTANCE_NAME] est le nom de l'instance.
  • [ZONE] est la zone où se situe 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 Déterminer un nom DNS interne pour une machine virtuelle.

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 plusieurs instances de VM si une instance 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, génère à nouveau 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 en savoir plus, consultez la page Distribuer des instances à l'aide de groupes d'instances gérés régionaux.

Utiliser l'équilibrage de charge

Google Cloud 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 à l'emplacement le plus proche du client. L'équilibrage de charge interrégional assure une redondance. Ainsi, si une région est inaccessible, le trafic est automatiquement redirigé vers une autre région. Votre service reste alors 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.

De plus, 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 page Présentation de l'équilibrage de charge et la documentation sur 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, il peut être utile de passer par des scripts de démarrage au lieu d'utiliser des images personnalisées. Les scripts de démarrage s'exécutent chaque fois que l'instance est redémarrée normalement 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 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 d'une instance vers Cloud Storage, procédez comme suit :

  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 l'avez déjà utilisé et que votre instance est configurée pour utiliser un compte de service avec un champ d'application Cloud Storage, vous pouvez ignorer cette étape et l'étape suivante.

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

  4. Copiez vos données dans Cloud Storage à l'aide 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 en savoir plus, consultez la page Transférer des fichiers vers des instances.

Étapes suivantes