Autoscaling
Cette page explique le fonctionnement de l'autoscaling. Avant de lire cette page, vous devez avoir consulté les articles Présentation de Bigtable et Instances, clusters et nœuds.
Dans Bigtable, les instances sont des conteneurs pour les clusters, qui sont des ressources spécifiques à l'emplacement qui traitent les requêtes. Chaque cluster possède un ou plusieurs nœuds, qui correspondent à des ressources de calcul permettant de gérer vos données. Lorsque vous créez un cluster dans une instance, vous devez choisir l'allocation manuelle des nœuds ou l'autoscaling.
Avec l'allocation manuelle de nœuds, le nombre de nœuds dans le cluster reste constant jusqu'à ce que vous le modifiiez. Lorsque l'autoscaling est activé, Bigtable surveille en permanence le cluster et ajuste automatiquement le nombre de nœuds dans le cluster si nécessaire. L'autoscaling fonctionne sur les clusters HDD et SSD, dans toutes les régions Bigtable.
Vous pouvez configurer l'autoscaling dans Google Cloud Console à l'aide de gcloud
ou de la bibliothèque cliente Cloud Bigtable pour Java.
Quand utiliser l'autoscaling
Dans la plupart des cas, nous vous recommandons d'activer l'autoscaling. L'autoscaling présente les avantages suivants:
- Coûts : l'autoscaling peut vous aider à optimiser les coûts, car Bigtable réduit le nombre de nœuds de votre cluster autant que possible. Cela peut vous aider à éviter le surprovisionnement.
- Performances : l'autoscaling permet à Bigtable d'ajouter automatiquement des nœuds à un cluster lorsqu'une charge de travail change ou lorsque les besoins en stockage de données augmentent. Cela permet de maintenir les objectifs de performances des charges de travail en garantissant que le cluster dispose de suffisamment de nœuds pour répondre aux exigences d'utilisation et de stockage cibles du processeur.
- Automatisation : l'autoscaling réduit la complexité de gestion. Vous n'avez pas besoin de surveiller et de faire évoluer le cluster manuellement, ni d'écrire une application pour effectuer ces tâches, car le service Bigtable les gère pour vous.
L'autoscaling seul peut ne pas fonctionner correctement pour les types de charges de travail suivants, car même si Bigtable ajoute rapidement des nœuds lorsque le trafic augmente, l'équilibrage des nœuds supplémentaires peut prendre du temps.
- Trafic intensif
- Charges de travail par lot soudaines
Si vos pics d'utilisation sont prévisibles ou régulièrement planifiés, vous pouvez utiliser l'autoscaling et ajuster les paramètres avant l'utilisation intensive prévue. Pour en savoir plus, consultez la section Délai pendant le rééquilibrage des nœuds.
Fonctionnement de l'autoscaling
L'autoscaling est le processus de scaling automatique ou de modification de la taille d'un cluster en ajoutant ou en supprimant des nœuds. Lorsque vous activez l'autoscaling, Bigtable ajuste automatiquement la taille de votre cluster. Lorsque la charge de travail ou les besoins de stockage de votre cluster fluctuent, Bigtable évolue à la hausse, en ajoutant des nœuds au cluster ou effectue un scaling à la baisse en supprimant les nœuds du cluster.
L'autoscaling Bigtable détermine le nombre de nœuds requis, en fonction des facteurs suivants :
- Objectif d'utilisation du CPU
- Objectif d'utilisation du stockage
- Nombre minimal de nœuds
- Nombre maximal de nœuds
Chaque dimension de scaling génère un nombre de nœuds recommandé, et Bigtable utilise automatiquement le plus élevé. Cela signifie, par exemple, que si votre cluster a besoin de 10 nœuds pour atteindre votre objectif d'utilisation du stockage, mais de 12 nœuds pour atteindre votre objectif d'utilisation du processeur, Bigtable le redimensionne à 12 nœuds.
À mesure que le nombre de nœuds évolue, Bigtable optimise en permanence le stockage, en rééquilibrant les données entre les nœuds, afin d'assurer une répartition uniforme du trafic et de ne pas surcharger les nœuds.
Une fois qu'un cluster est mis à l'échelle, Bigtable rééquilibre automatiquement les nœuds de votre cluster pour optimiser les performances. Toutes les requêtes continuent d'atteindre le cluster pendant le scaling et le rééquilibrage. Pour en savoir plus, consultez la section Limites de scaling.
Si un cluster a évolué jusqu'à son nombre maximal de nœuds et que la cible d'utilisation du processeur est dépassée, les requêtes peuvent avoir une latence élevée ou échouer. Si un cluster a atteint un nombre maximal de nœuds et que la limite d'utilisation du stockage est dépassée, les requêtes d'écriture échouent. Pour en savoir plus sur les limites de stockage, consultez la section Stockage par nœud.
Lorsqu'un nœud est ajouté à un petit cluster, tel qu'un cluster à un seul nœud, vous pouvez observer une augmentation temporaire de la latence pendant le rééquilibrage du cluster. En effet, le nœud supplémentaire double proportionnellement la taille du cluster. De même, si la taille d'un cluster passe de deux à un nœud, une latence peut se produire.
Lorsqu'un cluster est réduit, les nœuds sont supprimés plus lentement que lors d'un scaling à la hausse, afin d'éviter tout impact sur la latence. Pour en savoir plus, consultez la section Limites de scaling.
Paramètres d'autoscaling
Lorsque vous créez ou modifiez un cluster et que vous choisissez l'autoscaling, vous définissez les valeurs de la cible d'utilisation du processeur, du nombre minimal de nœuds et du nombre maximal de nœuds. Vous pouvez configurer l'objectif d'utilisation du stockage ou le conserver par défaut, qui est de 50% (2,5 To pour le disque SSD et 8 To pour le disque dur HDD).
Parameter | Description |
---|---|
Objectif d'utilisation du CPU |
Pourcentage de la capacité du processeur du cluster. Peut aller de 10 % à 80 %. Lorsque l'utilisation du processeur d'un cluster dépasse la cible que vous avez définie, Bigtable ajoute immédiatement des nœuds au cluster. Lorsque l'utilisation du processeur est nettement inférieure à la cible, Bigtable supprime les nœuds. Pour obtenir des conseils, consultez la section Déterminer l'objectif d'utilisation du processeur. |
Nombre minimal de nœuds |
Nombre minimal de nœuds vers lesquels Bigtable effectuera le scaling à la baisse du cluster. Cette valeur doit être supérieure à zéro et ne peut pas être inférieure à 10 % de la valeur que vous avez définie pour le nombre maximal de nœuds. Par exemple, si le nombre maximal de nœuds est de 40, le nombre minimal de nœuds doit être au moins égal à 4. La limite de 10 % est une limite stricte. Pour en savoir plus, consultez la section Déterminer le nombre minimal de nœuds. |
Nombre maximal de nœuds |
Nombre maximal de nœuds que vous souhaitez autoriser à faire évoluer le cluster. Cette valeur doit être supérieure à zéro, et supérieure ou égale au nombre minimal de nœuds. Cette valeur ne peut pas dépasser 10 fois le nombre que vous avez choisi pour le nombre minimal de nœuds. Dix fois l'exigence est une limite stricte. Pour en savoir plus, consultez la section Déterminer le nombre maximal de nœuds. |
Objectif d'utilisation du stockage |
Nombre maximal de téraoctets par nœud que vous pouvez stocker avant que Bigtable ne procède au scaling à la hausse. Cet objectif garantit que vous disposez toujours de suffisamment de nœuds pour gérer les fluctuations de la quantité de données que vous stockez. Pour obtenir des conseils, consultez la section Déterminer l'objectif d'utilisation du stockage. |
Configurer l'autoscaling
Cette section explique comment choisir vos paramètres d'autoscaling. Après avoir défini vos valeurs initiales, surveillez votre cluster et ajustez les valeurs si nécessaire.
Déterminer l'objectif d'utilisation du processeur
Basez l'objectif d'utilisation du processeur sur votre charge de travail unique. La cible optimale pour votre cluster dépend des exigences de latence et de débit de votre charge de travail. Pour en savoir plus, consultez la section Planifier la capacité Bigtable.
En général, si vous constatez une latence inacceptable, vous devez réduire la cible d'utilisation du processeur.
Déterminer l'objectif d'utilisation du stockage
Si votre application est sensible à la latence, maintenez l'utilisation du stockage en dessous de 60%. Si votre application n'est pas sensible à la latence, vous pouvez choisir une cible d'utilisation du stockage de 70% ou plus. Pour en savoir plus, consultez la section Planifier la capacité Bigtable.
Pour l'autoscaling, l'utilisation du stockage est exprimée sous forme de nombre d'octets de stockage par nœud plutôt que sous forme de pourcentage. La cible d'utilisation du stockage est spécifiée par nœud, mais elle est appliquée à l'ensemble du cluster. Les limites de capacité pour les nœuds sont de 5 To par nœud pour le stockage SSD et de 16 To par nœud pour le stockage HDD.
Le tableau suivant indique les montants cibles pour les pourcentages cibles typiques d'utilisation du stockage. La console Google Cloud accepte la valeur en To par nœud, et gcloud CLI, l'API et les bibliothèques clientes Cloud Bigtable acceptent une valeur entière en Gio par nœud.
Pourcentage | SSD | HDD |
---|---|---|
80% | 4 To ou 4 096 Gio | 12,8 To ou 13 107 Gio |
70 % | 3,5 To ou 3 584 Gio | 11,2 To ou 11 468 Gio |
60 % | 3 To ou 3 072 Gio | 9,6 To ou 9 830 Gio |
50% | 2,5 To ou 2 560 Gio | 8 To ou 8 192 Gio |
Déterminer le nombre maximal de nœuds
La valeur que vous choisissez comme nombre maximal de nœuds doit correspondre au nombre de nœuds dont le cluster a besoin pour gérer le trafic le plus dense de votre charge de travail, même si vous ne prévoyez pas d'atteindre ce volume la plupart du temps. Bigtable ne fait jamais évoluer plus que le nombre de nœuds dont il a besoin. Vous pouvez également considérer ce nombre comme le nombre maximal de nœuds que vous êtes prêt à payer. Consultez la section Paramètres d'autoscaling pour en savoir plus sur les valeurs acceptées.
Le nombre maximal doit autoriser à la fois l'objectif d'utilisation du processeur que vous avez défini et le seuil d'utilisation du stockage défini par Bigtable.
Si vous passez d'une allocation manuelle à une mise à l'échelle automatique, recherchez le nombre le plus élevé de nœuds reçus par le cluster au cours du mois passé. Ce maximum doit être au moins égal à ce nombre.
Si vous activez l'autoscaling pour un nouveau cluster dans une instance existante, utilisez les métriques des autres clusters de l'instance comme guide.
Si vous avez une nouvelle charge de travail et que vous ne savez pas comment elle va se développer, vous pouvez estimer le nombre de nœuds dont vous aurez besoin pour atteindre l'objectif d'utilisation du stockage intégré, puis ajuster le nombre plus tard.
Pour obtenir ce nombre, estimez la quantité de données que vous prévoyez de stocker sur le cluster, puis divisez ce nombre par la cible d'utilisation du stockage correspondant au type de stockage que vous utilisez.
Par exemple, si vous stockez 10 To sur un cluster SSD, vous pouvez diviser 10 To par 2,5 To, qui est l'objectif d'utilisation du stockage défini par défaut pour les clusters SSD utilisant l'autoscaling. Le résultat est 4, ce qui signifie que 4 est le nombre de nœuds pouvant gérer cette quantité de données, et le maximum doit être un nombre supérieur à ce nombre.
En utilisant la même formule, les exemples suivants montrent le nombre de nœuds dont vous pourriez avoir besoin pour certains exemples de volumes de stockage :
Stockage SSD par cluster | Plus petit nombre maximal de nœuds |
---|---|
25 To | 10 |
35 To | 14 |
50 To | 20 |
Une fois votre cluster opérationnel avec l'autoscaling activé, procédez comme suit : surveiller le cluster et assurez-vous que la valeur que vous choisissez pour le nombre maximal de nœuds est au moins égale à recommended number of nodes for CPU target
et recommended number of nodes for storage target
.
Déterminer le nombre minimal de nœuds
Vous pouvez définir une valeur minimale sur 1 pour vous assurer que Bigtable peut effectuer un scaling à la baisse jusqu'à la taille la plus petite et la plus rentable possible. Le cluster ne devient jamais trop petit, car Bigtable empêche automatiquement le nombre de nœuds de passer en dessous du minimum requis pour maintenir les cibles d'utilisation du processeur et du stockage. Consultez la section Paramètres d'autoscaling pour en savoir plus sur les valeurs acceptées.
Toutefois, dans de nombreux cas, vous devez définir cette valeur sur plusieurs valeurs. Choisissez un nombre plus élevé ou augmentez le nombre minimal de nœuds pour les situations suivantes :
- Vous avez un événement à venir, tel que le Cyber Monday, lorsque vous prévoyez une augmentation temporaire de votre trafic, et que vous souhaitez vous assurer que vous disposez de suffisamment de capacité.
- Votre application envoie du trafic. Lorsque de nouveaux nœuds sont ajoutés, Bigtable rééquilibre automatiquement les nouveaux nœuds. Étant donné que ce processus peut prendre plusieurs minutes, il est souvent préférable d'adopter une approche prudente et de choisir une valeur minimale plus élevée pour que votre cluster puisse s'adapter facilement aux pics.
- Vous augmentez le nombre maximal de nœuds. Ce minimum doit toujours être égal à 10 % ou moins du nombre maximal de nœuds. Par exemple, si vous définissez la valeur maximale sur 30, vous devez définir la valeur minimale sur au moins 3.
Si vous augmentez la valeur du nombre minimal de nœuds d'un cluster, Bigtable tente immédiatement de procéder au scaling du cluster au nouveau minimum. Les contraintes standards s'appliquent. Cependant, si une zone ne dispose plus de nœuds, aucun nœud supplémentaire n'est provisionné pour atteindre le minimum configuré. Bigtable continue d'essayer d'ajouter des nœuds et crée une entrée de journal d'audit pour chaque tentative ayant échoué jusqu'à ce que le nouveau nombre minimal de nœuds soit atteint. Bigtable ne modifie pas la valeur configurée dans cette situation. Par conséquent, vous pouvez constater que le nombre de nœuds du cluster est inférieur au minimum jusqu'à la fin du scaling.
Ajuster vos paramètres
Surveillez votre utilisation des nœuds et ajustez vos paramètres si nécessaire, en particulier après avoir activé l'autoscaling pour la première fois.
Compte de réplication
Dans une instance qui utilise la réplication, les paramètres d'autoscaling et l'activité de chaque cluster sont complètement indépendants de ceux des autres clusters de l'instance. Vous devez configurer le mode de scaling pour chaque cluster d'une instance.
En général, pour les instances répliquées, vous devez activer l'autoscaling pour chaque cluster de l'instance. La configuration de l'autoscaling est souvent la même pour tous les clusters de l'instance, mais elle peut être différente en fonction des cas d'utilisation, de la charge de travail et des performances de chaque cluster.
Étant donné que les clusters d'une instance dupliquée effectuent des tâches supplémentaires pour gérer la réplication, vous devez choisir un nombre maximal de nœuds plus élevé que pour une instance à cluster unique. Pour en savoir plus, consultez la page Réplication et performances.
Contrôle des accès
Pour configurer l'autoscaling, vous devez être un compte principal doté des autorisations create
et update
pour le cluster et l'instance que vous configurez.
Surveillance
Bigtable fournit plusieurs métriques qui vous permettent de comprendre le fonctionnement de l'autoscaling de Bigtable lorsqu'il évolue à la hausse ou à la baisse pour répondre aux exigences de la charge de travail. Les métriques peuvent également vous aider à déterminer si vos paramètres sont optimaux pour répondre aux exigences de charge de travail et de coût de votre entreprise. Par exemple, si vous constatez que le nombre de nœuds d'un cluster est souvent proche du nombre maximal de nœuds, vous pouvez envisager d'augmenter cette valeur maximale. Pour en savoir plus sur la surveillance de vos ressources Bigtable, consultez la page Surveiller une instance.
Les métriques suivantes s'affichent dans les graphiques sur la page de présentation du cluster dans la console Google Cloud. Vous pouvez également afficher ces métriques à l'aide de Cloud Monitoring.
bigtable.googleapis.com/cluster/autoscaling/min_node_count
bigtable.googleapis.com/cluster/autoscaling/max_node_count
bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_cpu
bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_storage
Logging
Bigtable émet un journal d'audit des événements système chaque fois qu'il procède au scaling d'un cluster. L'entrée de journal est semblable à ceci :
Grew from 9 to 10 nodes to maintain CPU utilization at 60%.
Vous pouvez afficher les journaux des événements système de l'autoscaling sur la page de présentation du cluster Bigtable dans la console Google Cloud. Vous pouvez également les consulter à l'aide de l'explorateur de journaux :
Accédez à l'explorateur de journaux :
Accéder à l'explorateur de journaux
Sélectionnez le projet Google Cloud approprié.
Dans le champ Requête, saisissez ce qui suit :
resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com" resource.labels.method="AutoscaleCluster"
Cliquez sur Run query.
Le volet Résultats de la requête affiche les journaux de la dernière heure.
Pour en savoir plus sur l'affichage des journaux, consultez la page Cloud Logging.