Concevoir des systèmes résilients


Ce document décrit les bonnes pratiques à adopter pour concevoir des systèmes résilients 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 Compute Engine.

Un système résilient 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.

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 calcul. La liste suivante contient certains types de scénarios de défaillance que vous pouvez atténuer:

  • 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. Vous pouvez limiter ces événements en utilisant des disques persistants et des scripts de démarrage pour enregistrer vos données et relancer les logiciels après le redémarrage de la VM.

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

    À un moment donné, vous pouvez rencontrer une défaillance imprévue et un redémarrage d'une VM unique. À la différence d'une défaillance imprévue d'une VM unique, Compute Engine redémarre automatiquement votre VM en cas de défaillance. Afin de minimiser l'impact de tels événements, sauvegardez vos données, utilisez Hyperdisk ou disque persistant, 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 dans plusieurs zones.

Conseils pour concevoir des systèmes résilients

Pour limiter les défaillances des instances de calcul, concevez votre application de manière à être résiliente aux défaillances, aux interruptions de réseau et aux catastrophes inattendues. Un système résilient gère efficacement les défaillances, par exemple en redirigeant le trafic d'une instance inaccessible 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 résilient, capable de résister aux défaillances.

Utiliser la migration à chaud

Google Cloud 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 l'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 calcul.

La migration à chaud est une technologie conçue pour déplacer vos instances en cours d'exécution depuis des systèmes devant subir une opération de maintenance. Compute Engine effectue cette opération automatiquement pour les types d'instances compatibles.

Au cours d'une migration à chaud, votre instance peut connaître une brève baisse de performance. Pour les instances qui nécessitent des performances constantes et maximales, vous pouvez configurer les instances pour qu'elles soient redémarrées sur un autre hôte au lieu de subir une migration à chaud. Si vous choisissez cette option, Compute Engine arrête l'instance et la redémarre sur un hôte qui n'est pas impliqué dans un événement de maintenance. L'arrêt et le redémarrage de l'instance sont adaptés aux applications globales qui sont également conçues pour gérer les échecs ou les redémarrages d'instances.

Pour configurer vos instances pour la migration à chaud ou pour les redémarrer au lieu de les migrer, consultez la section Définir la stratégie de maintenance de l'hôte pour une instance.

Distribuer vos instances

Créez des instances réparties sur plusieurs zones et régions de manière à disposer d'instances de calcul de secours à utiliser en cas de perturbations dans l'une des zones ou régions hébergeant l'une de vos instances. Si vous créez 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

Définissez le type DNS interne par défaut pour votre projet ou votre organisation sur le DNS zonal. Dans vos applications, utilisez des noms DNS zonaux lorsque vous accédez à d'autres instances Compute. 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 DNS global est moins résilient en raison de défaillances d'un point unique. Le DNS zonal réduit les risques de pannes interrégionales. Le DNS zonal ne nécessite pas l'unicité des noms d'instance dans toutes les régions d'un projet, ce qui permet d'accélérer la création d'instance.

Pour vérifier si une instance utilise des noms DNS zonaux ou globaux, consultez la section Déterminer le nom DNS interne d'une VM.

Si votre projet utilise des noms DNS globaux, vous pouvez passer aux noms DNS zonaux. Pour en savoir plus, consultez la section Utiliser le DNS zonal pour votre type DNS interne.

Créer des groupes de VM

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

Les groupes d'instances gérés (MIG) 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 de VM à la hausse ou à la baisse en fonction de signaux spécifiques. L'autoréparation vérifie l'état des VM et, si nécessaire, recrée automatiquement les VM non opérationnelles.

Les MIG sont également disponibles pour les régions. Vous pouvez ainsi créer un groupe de VM réparties sur plusieurs zones au sein d'une même région. Pour en savoir plus, consultez la section Créer et gérer des MIG 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 de calcul. Cloud Load Balancing vous permet d'effectuer les opérations suivantes :

  • Déployer votre application sur des VM situées dans plusieurs zones à l'aide de MIG régionaux. Vous pouvez ensuite configurer une règle de transfert permettant de répartir le trafic sur l'ensemble des VM 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 VM 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. De cette manière, votre service reste accessible via la même adresse IP externe.

  • Utilisez l'autoscaling pour ajouter ou supprimer automatiquement des VM dans un MIG en fonction de l'augmentation ou de la diminution de la charge.

De plus, Cloud Load Balancing assure une vérification de l'état des VM, ce qui permet de détecter et traiter les défaillances des VM.

Utilisez 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. Les scripts de démarrage et d'arrêt peuvent automatiser certaines tâches telles que l'installation de logiciels, l'exécution de mises à jour, la réalisation de sauvegardes et la journalisation des données.

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 redémarre normalement ou en raison de défaillances. Ils peuvent être utilisés pour installer des logiciels et des mises à jour. Vous pouvez également utiliser des scripts de démarrage pour vous assurer que les services sont correctement exécutés dans l'instance. Il est souvent plus facile de coder les modifications 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 s'exécutent lorsque votre instance s'arrête, intentionnellement ou non. Ils peuvent effectuer des tâches de dernière minute comme sauvegarder les données, enregistrer les journaux et fermer les connexions de manière adéquate 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 importer vos fichiers dans Cloud Storage, créer des instantanés de disques ou encore répliquer vos données vers un disque d'une autre zone à l'aide de la réplication synchrone ou vers une autre région à l'aide de la réplication asynchrone.