Haute disponibilité pour vos applications

Ce document fournit des conseils techniques et des bonnes pratiques pour concevoir et déployer des charges de travail disponibilité élevée (HA) dans plusieurs zones d'un univers Google Distributed Cloud (GDC) air-gapped. Ce guide décrit les principaux modèles d'architecture, les configurations de service et les considérations opérationnelles permettant de minimiser les temps d'arrêt et d'assurer la continuité de l'activité.

Les stratégies décrites dans ce document sont destinées aux professionnels techniques suivants :

  • Architectes cloud qui conçoivent des architectures d'infrastructure et d'application résilientes.

  • Ingénieurs DevOps et ingénieurs en fiabilité des sites qui implémentent des stratégies de déploiement, l'automatisation, la surveillance et la réponse aux incidents pour les charges de travail à haute disponibilité.

  • Développeurs d'applications qui créent des applications tolérantes aux pannes et qui s'intègrent aux modèles de haute disponibilité.

Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.

Importance de la haute disponibilité

Dans les systèmes distribués modernes, il est essentiel de planifier la haute disponibilité. Les temps d'arrêt peuvent entraîner des perturbations importantes de l'activité, des pertes de revenus et une mauvaise expérience utilisateur.

Pour les charges de travail exécutées dans des centres de données privés à l'aide de GDC, la disponibilité est souvent directement corrélée au succès opérationnel de base, en particulier pour les applications critiques ou sensibles à la latence. Il est essentiel de concevoir la haute disponibilité dès le départ pour créer des services résilients et fiables.

GDC fournit des capacités hyperscale dans votre environnement sous air gap avec plusieurs centres de données déconnectés, ou zones. La haute disponibilité de vos applications multizones dépend des services multizones, tels que l'équilibrage de charge et le stockage asynchrone. Pour en savoir plus sur les services importants à utiliser pour la haute disponibilité, consultez les sections Scalabilité et équilibrage de charge et Déploiement d'applications à haute disponibilité dans des zones avec stockage asynchrone de ce document.

Des capacités hyperscale, fournies localement

GDC étend l'infrastructure et les services Google Cloud à la périphérie et à vos centres de données. GDC fournit une solution matérielle et logicielle entièrement gérée, qui vous permet d'exécuter Google Kubernetes Engine (GKE) sur des clusters GDC et d'autres servicesGoogle Cloud plus près de l'endroit où vos données sont générées et utilisées.

Ce document se concentre sur les univers GDC configurés dans une topologie multizone. Dans cette configuration, un seul univers comprend plusieurs zones physiquement isolées au sein du même emplacement.

Ces zones disposent d'une infrastructure indépendante pour l'alimentation, le refroidissement et la mise en réseau, ce qui permet de se protéger contre les défaillances localisées de l'infrastructure physique. La connectivité réseau à faible latence et à bande passante élevée entre les zones permet la réplication des données et le basculement rapide, ce qui constitue la base pour la création d'applications à disponibilité élevée.

Évolutivité et équilibrage de charge

Au-delà de la redondance des composants de base, la gestion efficace du trafic et l'évolutivité fluide sont essentielles pour maintenir une haute disponibilité, en particulier avec des conditions de charge variables. GDC fournit plusieurs mécanismes pour l'équilibrage de charge et la gestion sophistiquée du trafic.

Équilibreur de charge externe pour le trafic nord-sud

Pour exposer vos applications à des utilisateurs ou des systèmes en dehors d'un cluster GKE sur GDC (trafic nord-sud), utilisez les fonctionnalités d'équilibrage de charge externe gérées de GDC. Le service d'équilibreur de charge externe (ELB) fournit ces fonctionnalités et s'intègre parfaitement à Kubernetes.

Voici les principales caractéristiques du service ELB qui assurent la haute disponibilité et l'évolutivité :

  • Service géré : s'exécute en tant que service spécifique à GDC et est conçu pour offrir une haute disponibilité et une résilience dans un environnement isolé.

  • Accès externe : provisionne des adresses IP externes stables à partir de pools gérés par GDC, ce qui fournit un point d'entrée cohérent pour les clients externes.

  • Intégration de l'équilibreur de charge à Kubernetes : provisionne et configure automatiquement l'équilibreur de charge lorsque vous créez un Service Kubernetes de type: LoadBalancer sans annotations internes spécifiques.

  • Connaissance des zones : distribue le trafic entrant entre les pods d'application opérationnels s'exécutant dans toutes les zones disponibles de l'univers GDC. L'ELB s'appuie sur les vérifications d'aptitude des pods pour déterminer l'état du backend.

  • Évolutivité : gère la distribution du trafic externe à mesure que votre application évolue horizontalement sur les nœuds et les zones.

Pour assurer la haute disponibilité du trafic entrant externe afin que les requêtes des clients soient automatiquement redirigées des zones ou instances défaillantes, nous vous recommandons d'utiliser un équilibreur de charge externe.

Pour en savoir plus, consultez Configurer des équilibreurs de charge externes.

Équilibreur de charge interne pour le trafic est-ouest

Pour la communication entre les services s'exécutant dans le même cluster GKE sur GDC (trafic est-ouest), GDC fournit un équilibreur de charge interne (ILB). Un équilibreur de charge interne est essentiel pour dissocier les services internes et fournir des chemins de communication internes qui sont également disponibilité élevée et évolutifs.

Voici les principales caractéristiques du service ILB qui offre haute disponibilité et évolutivité :

  • Accès interne : provisionne une adresse IP interne stable accessible uniquement depuis le réseau GDC, comme les nœuds de cluster ou d'autres services internes.

  • Intégration de l'équilibreur de charge à Kubernetes : provisionne l'équilibrage de charge en créant un Service Kubernetes de type: LoadBalancer avec une annotation spécifique pour indiquer qu'il doit être interne. Par exemple, networking.gke.io/load-balancer-type: "Internal".

  • Connaissance des zones : répartit le trafic entre les pods de backend opérationnels, identifiés par des sondes de disponibilité, situés dans toutes les zones disponibles. Cette distribution permet d'éviter les échecs de communication interne si une zone rencontre des problèmes.

  • Découverte et découplage des services : fournit une adresse IP interne et un nom DNS stables grâce à l'intégration de kube-dns et CoreDNS. Les services peuvent se découvrir et communiquer entre eux, ce qui évite aux clients de connaître les adresses IP des pods individuels.

  • Scalabilité : facilite la mise à l'échelle des services de backend internes en répartissant le trafic sur toutes les répliques opérationnelles disponibles.

L'utilisation d'un équilibreur de charge interne pour la communication interne entre services permet au flux de trafic interne de résister aux défaillances de zone et offre un scaling efficace, en complément de la haute disponibilité fournie par l'équilibreur de charge externe et la distribution de calcul sous-jacente. Cette stratégie est souvent utilisée pour les applications à plusieurs niveaux où les API de frontend doivent communiquer avec les API ou les bases de données de backend au sein du cluster Kubernetes.

Pour en savoir plus, consultez Configurer des équilibreurs de charge internes.

Déploiement d'applications à haute disponibilité entre plusieurs zones avec stockage asynchrone

GDC vous permet d'exécuter l'infrastructure et les applications plus près de vos sources de données. Pour déployer des applications à haute disponibilité avec une source de données résiliente, implémentez la réplication asynchrone du stockage pour la persistance des données et la reprise après sinistre.

Les zones représentent des domaines de défaillance distincts au sein d'un même univers. En distribuant les composants d'application et en répliquant les données sur plusieurs zones, vous améliorez considérablement la résilience face aux défaillances matérielles ou aux événements de maintenance localisés.

Pour en savoir plus, consultez Protection des données avec le stockage multizone.

Étapes suivantes