Lorsque vous exécutez une pile d'applications sur des ressources distribuées dans le cloud, le trafic réseau doit être efficacement acheminé vers les ressources disponibles sur plusieurs emplacements. Cette partie du guide de fiabilité de l'infrastructure Google Cloud décrit les techniques de gestion du trafic et de la charge que vous pouvez utiliser pour améliorer la fiabilité de vos charges de travail dans le cloud.
Planification des capacités
Pour vous assurer que votre application déployée dans Google Cloud dispose des ressources d'infrastructure appropriées, vous devez estimer la capacité requise et gérer la capacité déployée. Cette section fournit des conseils pour vous aider à planifier et à gérer la capacité.
Prévoir la charge de l'application
Lorsque vous prévoyez la charge, tenez compte de facteurs tels que le nombre d'utilisateurs et le taux auquel l'application peut recevoir des requêtes. Dans vos prévisions, tenez compte de l'historique des tendances de charge, des variations saisonnières, des pics de charge lors d'événements spéciaux et de la croissance générée par des changements commerciaux tels que l'expansion vers de nouvelles zones géographiques.
Estimer les besoins en capacité
En fonction de l'architecture de votre déploiement et des objectifs de performance et de fiabilité de votre application, estimez la quantité de ressources Google Cloud nécessaires pour gérer la charge attendue. Par exemple, si vous envisagez d'utiliser des groupes d'instances gérés (MIG) Compute Engine, décidez de la taille de chaque MIG, du type de machine de la VM, et du nombre, du type et de la taille des disques persistants. Vous pouvez utiliser le simulateur de coût Google Cloud pour estimer le coût des ressources Google Cloud.
Planifier une redondance adéquate
Lorsque vous estimez les besoins en capacité, fournissez une redondance adéquate pour chaque composant de la pile d'applications. Par exemple, pour obtenir une redondance N+1, chaque composant de la pile d'applications doit comporter au moins un composant redondant au-delà du minimum requis pour gérer la charge prévue.
Effectuer une analyse comparative de l'application
Exécutez des tests de charge pour déterminer l'efficacité des ressources de votre application. L'efficacité des ressources est la relation entre la charge de l'application et les ressources telles que le processeur et la mémoire consommées par l'application. L'efficacité des ressources d'une application peut se dégrader lorsque la charge est extrêmement élevée et peut évoluer au fil du temps. Effectuez les tests de charge pour les conditions de charge normales et maximales, puis répétez les tests d'analyse comparative à intervalles réguliers.
Gérer les quotas
Les quotas des services Google Cloud sont limités par projet, ce qui vous permet de contrôler la consommation de ressources cloud. Les quotas sont de deux types : les quotas de ressources sont les ressources maximales que vous pouvez créer, comme le nombre de clusters Google Kubernetes Engine (GKE) régionaux dans une région. Les quotas de débit limitent le nombre de requêtes API pouvant être envoyées à un service au cours d'une période spécifique. Les quotas peuvent être zonaux, régionaux ou mondiaux. Examinez les quotas de ressources et les quotas de débit d'API actuels pour les services que vous prévoyez d'utiliser dans vos projets. Assurez-vous que les quotas sont suffisants pour la capacité dont vous avez besoin. Si nécessaire, vous pouvez demander une augmentation de quota.
Réserver de la capacité de calcul
Pour vous assurer que la capacité des ressources Compute Engine est disponible en cas de besoin, vous pouvez créer des réservations. Une réservation garantit la capacité dans une zone spécifique pour un nombre spécifié de VM d'un type de machine que vous choisissez. Une réservation peut être spécifique à un projet ou partagée entre plusieurs projets. Pour en savoir plus sur les réservations, y compris la facturation, consultez la section Réservations de ressources zonales Compute Engine.
Surveiller l'utilisation et réévaluer régulièrement les exigences
Après avoir déployé les ressources nécessaires, surveillez l'utilisation de la capacité. Vous pouvez trouver des possibilités d'optimiser les coûts en supprimant les ressources inactives. Réévaluez régulièrement les exigences de capacité, et prenez en compte les modifications apportées au comportement de l'application, aux objectifs de performances et de fiabilité, à la charge utilisateur et au budget informatique.
Autoscaling
Lorsque vous exécutez une application sur des ressources réparties sur plusieurs emplacements, l'application reste disponible pendant les pannes de l'un des emplacements. De plus, la redondance permet de garantir que les utilisateurs bénéficient d'un comportement d'application cohérent. Par exemple, en cas de pic de la charge, les ressources redondantes garantissent que l'application continue de fonctionner à un niveau prévisible. Cependant, lorsque la charge sur l'application est faible, la redondance peut entraîner une utilisation inefficace des ressources cloud.
Par exemple, le composant de panier d'une application d'e-commerce peut avoir besoin de traiter des paiements pour 99,9 % des commandes dans les 200 millisecondes après la confirmation de la commande. Pour répondre à cette exigence pendant les périodes de pics de charge, vous pouvez provisionner une capacité de calcul et de stockage redondante. Toutefois, lorsque la charge sur l'application est faible, une partie de la capacité provisionnée peut rester inutilisée ou sous-utilisée. Pour supprimer les ressources inutilisées, vous devez surveiller l'utilisation et ajuster la capacité. L'autoscaling vous aide à gérer la capacité cloud et à maintenir le niveau de disponibilité requis sans les coûts opérationnels liés à la gestion des ressources redondantes. Lorsque la charge de votre application augmente, l'autoscaling permet d'améliorer la disponibilité de l'application en provisionnant automatiquement des ressources supplémentaires. Pendant les périodes de faible charge, l'autoscaling supprime les ressources inutilisées et permet de réduire les coûts.
Certains services Google Cloud, tels que Compute Engine, vous permettent de configurer l'autoscaling pour les ressources que vous provisionnez. Les services gérés tels que Cloud Run peuvent faire évoluer automatiquement la capacité sans que vous ayez à configurer quoi que ce soit. Vous trouverez ci-dessous des exemples de services Google Cloud compatibles avec l'autoscaling. Cette liste n'est pas exhaustive.
- Compute Engine : les MIG vous permettent de faire évoluer automatiquement les applications sans état déployées sur les VM Compute Engine afin de faire correspondre la capacité à la charge actuelle. Pour en savoir plus, consultez la page Effectuer l'autoscaling des groupes d'instances.
- GKE : vous pouvez configurer des clusters GKE pour redimensionner automatiquement les pools de nœuds en fonction de la charge actuelle. Pour en savoir plus, consultez la section Autoscaler de cluster. Pour les clusters GKE que vous provisionnez en mode Autopilot, GKE assure le scaling automatique des nœuds et des charges de travail en fonction du trafic.
- Cloud Run : les services que vous provisionnez dans Cloud Run évoluent automatiquement vers le nombre d'instances de conteneur nécessaires pour gérer la charge actuelle. Lorsque l'application ne présente aucune charge, le service s'adapte automatiquement au nombre d'instances de conteneur à zéro. Pour en savoir plus, consultez la section À propos de l'autoscaling des instances de conteneur.
- Fonctions Cloud Run : chaque requête envoyée à une fonction est attribuée à une instance de cette fonction. Si le volume de requêtes entrantes dépasse le nombre d'instances de fonction existantes, Cloud Run Functions démarre automatiquement les nouvelles instances de la fonction. Pour plus d'informations, consultez la section Environnements d'exécution des fonctions Cloud Run.
- Bigtable : lorsque vous créez un cluster dans une instance Bigtable, vous pouvez le configurer pour qu'il s'adapte automatiquement. Bigtable surveille la charge du processeur et du stockage, et ajuste le nombre de nœuds du cluster afin de maintenir les taux d'utilisation cible que vous spécifiez. Pour en savoir plus, consultez la page Autoscaling Bigtable.
- Dataproc sans serveur : lorsque vous envoyez une charge de travail par lot Apache Spark, Dataproc sans serveur effectue un scaling dynamique des ressources de la charge de travail, telles que le nombre d'exécuteurs, de façon à l'exécuter efficacement. Pour en savoir plus, consultez la page Autoscaling Dataproc sans serveur pour Spark.
Équilibrage de charge
L'équilibrage de charge contribue à améliorer la fiabilité des applications en acheminant le trafic vers les ressources disponibles uniquement et en veillant à ce que les ressources individuelles ne soient pas surchargées.
Tenez compte des recommandations de conception suivantes liées à la fiabilité lorsque vous choisissez et configurez des équilibreurs de charge pour votre déploiement cloud.
Équilibrer la charge du trafic interne
Configurez l'équilibrage de charge pour le trafic entre les niveaux de la pile d'applications, et pas uniquement pour le trafic entre les clients externes et l'application. Par exemple, dans une pile d'applications Web à trois niveaux, vous pouvez utiliser un équilibreur de charge interne pour une communication fiable entre les niveaux Web et d'application.
Choisir un type d'équilibreur de charge approprié
Pour équilibrer la charge du trafic externe vers une application distribuée sur plusieurs régions, vous pouvez utiliser un équilibreur de charge global ou plusieurs équilibreurs de charge régionaux. Pour en savoir plus, consultez la page Avantages et risques de l'équilibrage de charge global pour les déploiements multirégionaux.
Si les backends se trouvent dans une seule région et que vous n'avez pas besoin des fonctionnalités d'équilibrage de charge global, vous pouvez utiliser un équilibreur de charge régional, résilient aux pannes zonales.
Lorsque vous choisissez le type d'équilibreur de charge, tenez compte d'autres facteurs en plus de la disponibilité, tels que le contrôle géographique de la terminaison TLS, les performances, les coûts et le type de trafic. Pour en savoir plus, consultez la page Choisir un équilibreur de charge.
Configurer les vérifications d'état
L'autoscaling permet de vous assurer que vos applications disposent de ressources d'infrastructure suffisantes pour gérer la charge actuelle. Cependant, même lorsqu'il existe suffisamment de ressources d'infrastructure, une application ou des parties d'une application peut ne pas être réactive. Par exemple, toutes les VM qui hébergent votre application peuvent être à l'état RUNNING
. Toutefois, le logiciel d'application déployé sur certaines VM peut avoir planté.
Les vérifications d'état pour l'équilibrage de charge permettent de s'assurer que les équilibreurs de charge acheminent le trafic des applications uniquement vers les backends réactifs. Si vos backends sont des MIG, envisagez de configurer une couche supplémentaire de vérifications d'état pour autoréparer les VM qui ne sont pas disponibles. Lorsque l'autoréparation est configurée pour un MIG, les VM indisponibles sont supprimées de manière proactive et de nouvelles VM sont créées.
Limitation de débit
Votre application peut parfois subir une augmentation rapide ou soutenue de la charge. Si l'application n'est pas conçue pour gérer une charge accrue, l'application ou les ressources qu'elle utilise peuvent échouer, ce qui la rend indisponible. La charge accrue peut être due à des requêtes malveillantes, telles que des attaques par déni de service distribué (DDoS) basées sur le réseau. Un pic de charge peut également être dû à d'autres raisons, telles que des erreurs de configuration dans le logiciel client. Pour vous assurer que votre application peut gérer une charge excessive, envisagez d'appliquer des mécanismes de limitation du débit appropriés. Par exemple, vous pouvez définir des quotas pour le nombre de requêtes API qu'un service Google Cloud peut recevoir.
Les techniques de limitation du débit peuvent également vous aider à optimiser le coût de votre infrastructure cloud. Par exemple, en définissant des quotas au niveau du projet pour des ressources spécifiques, vous pouvez limiter la facturation que le projet peut occasionner pour ces ressources.
Niveau de service réseau
Les niveaux de service réseau de Google Cloud vous permettent d'optimiser la connectivité entre les systèmes sur Internet et vos charges de travail Google Cloud. Pour les applications qui diffusent dans le monde entier et disposent de backends dans plusieurs régions, choisissez le niveau Premium. Le trafic provenant d'Internet entre dans le réseau Google hautes performances au point de présence (POP) le plus proche du système émetteur. Au sein du réseau Google, le trafic est acheminé du POP d'entrée vers la ressource Google Cloud appropriée, telle qu'une VM Compute Engine. Le trafic sortant est envoyé via le réseau Google, sortant au niveau du POP le plus proche de la destination. Cette méthode de routage permet d'améliorer la détection de la disponibilité des utilisateurs en réduisant le nombre de sauts de réseau entre les utilisateurs et les POP les plus proches de ceux-ci.