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 de machines virtuelles (VM).
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 VM. La liste suivante contient certains types de scénarios de défaillance que vous pouvez atténuer :
Défaillance imprévue d'une VM unique
La défaillance imprévue d'une VM 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 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 VM, 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 résilients
Pour limiter les défaillances de VM, 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 VM inaccessible vers une VM 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 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 VM.
La migration à chaud est une technologie conçue pour déplacer vos VM 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 VM peut connaître une brève baisse de performance. Pour les VM qui nécessitent des performances constantes et maximales, vous pouvez utiliser une configuration dans laquelle elles s'arrêtent et redémarrent sur un hôte non impliqué dans un événement de maintenance. Cette option est adaptée aux applications globales qui sont également conçues pour gérer les échecs ou les redémarrages de VM.
Pour configurer vos VM pour la migration à chaud ou pour les redémarrer au lieu de les migrer, consultez la section Définir les règles de disponibilité d'une instance.
Distribuer vos VM
Créez des VM réparties sur plusieurs zones et régions de manière à disposer de VM de secours à utiliser en cas de perturbations dans l'une des zones ou régions hébergeant l'une de vos VM. Si vous hébergez toutes vos VM dans la même zone ou région, vous ne pourrez accéder à aucune de ces VM 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 VM. 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 de VM dans toutes les régions d'un projet, ce qui permet d'accélérer la création de VM.
Pour vérifier si une VM utilise des noms DNS zonaux ou globaux, consultez la section Déterminer le nom DNS interne d'une instance de VM.
Si votre projet utilise des noms DNS globaux, vous pouvez passer aux noms DNS zonaux. Pour plus d'informations, consultez la section Migrer vers des noms DNS zonaux.
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 VM. 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.
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 VM 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 VM. Pour configurer vos VM, 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 la VM redémarre ou se relance 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 sur la VM. Il est souvent plus facile de coder les modifications pour configurer une VM 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 VM 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 la VM.
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 persistants, ou encore répliquer vos données vers un disque persistant situé dans une autre région ou zone.