Les Managed Instance Groups (MIGs) offrent une solution robuste et automatisée pour gérer un grand nombre d’instances de machines virtuelles, ce qui en fait un choix attractif pour l’autoscaling dynamique dans des environnements de calcul à haut débit. Ci-dessous, nous explorons les principales fonctionnalités des MIGs, leur applicabilité au cloud bursting avec IBM Spectrum Symphony, ainsi que les défis et limitations rencontrés.
Les instances gérées par les MIGs ont tendance à être plus fiables, car les MIGs peuvent automatiquement réparer les instances qui échouent aux contrôles de santé (par exemple, des instances non réactives ou qui plantent pendant leur charge de travail) tout en conservant leur état, y compris les disques attachés, les noms d’instances et les métadonnées. De plus, lorsqu’on utilise des Spot VMs, les MIGs permettent un suivi efficace et une extinction progressive des instances spot. Lorsque la capacité est rétablie, les MIGs recréent automatiquement les instances, ce qui élimine la nécessité de suivre et gérer manuellement ces ressources éphémères. Ainsi, ces groupes d’instances sont plus constamment disponibles et les applications exécutées via Symphony fonctionnent de manière plus fluide.
Il est beaucoup plus simple de créer des instances en masse avec les MIGs, car au final, il suffit de faire une seule requête de redimensionnement. Le MIG travaille ensuite pour atteindre sa taille cible en créant les machines nécessaires. Lors de la création manuelle en masse, il faut répéter les commandes de création, vérifier les instances créées et créer manuellement celles qui manqueraient. Il faut également taguer les machines selon le modèle d’instance. Avec les MIGs, nous avons un moyen naturel de suivre et regrouper ces instances. Pour certaines ressources, comme les GPU VMs, les MIGs offrent le moyen le plus rapide de les déployer en masse.
Bien que nous ayons une limite stricte sur le nombre d’instances par région, nous pouvons toujours utiliser plusieurs MIGs pour chaque modèle d’instance. L’utilisation de MIGs régionaux permet de répartir les instances sur plusieurs zones au sein d’une région, augmentant ainsi la résilience face aux pannes zonales. Cette configuration garantit que votre application reste disponible même si une zone rencontre des problèmes.
Bien que les MIGs prennent en charge plusieurs versions pour les mises à jour canari et les mises à jour progressives, elles sont limitées à deux versions. Cette restriction complique l’utilisation des MIGs pour déployer simultanément plusieurs modèles d’instances, comme requis pour le cloud bursting. De plus, lorsqu’on utilise deux versions, il faut spécifier un pourcentage d’instances à déployer pour chaque version, ce qui n’est pas idéal pour nos besoins. Une solution simple consiste à utiliser des MIGs séparés pour différents modèles d’instances, offrant un contrôle plus précis et permettant plus d’instances par modèle dans les quotas des MIGs.
Par ailleurs, les capacités d’autoscaling fournies par les MIGs ne nous sont d’aucune utilité. Les métriques d’autoscaling par défaut des MIGs se concentrent sur l’utilisation des ressources au niveau du groupe, ce qui ne correspond pas aux exigences de mise à l’échelle basées sur le task flow d’IBM Spectrum Symphony. En effet, nous nous attendons à ce que toutes les instances d’un MIG utilisent la majorité, voire la totalité, de leurs CPU. Sinon, il vaudrait mieux les détruire ! Il y a également la question de la propriété. En effet, le Host Factory ne serait pas informé des nouvelles ressources créées lors du scaling.
Enfin, les fonctionnalités de load balancing offertes par les MIGs ne sont pas nécessaires pour notre configuration, car le Service-Oriented Architecture Middleware (SOAM) de Symphony gère déjà la répartition des tâches et l’allocation des ressources. Cette redondance pourrait entraîner des inefficacités si elle n’est pas correctement gérée, mais heureusement, la plupart de ces fonctionnalités sont optionnelles, ce qui nous permet de les contourner.
Un progrès significatif dans l’offre de Google Cloud Platform est la fonctionnalité Instance Flexibility pour les Managed Instance Groups (MIGs). Cette capacité permet à un seul MIG de provisionner et gérer un mélange de différents types de machines, en se basant sur une spécification de modèle définie par l’utilisateur et une liste de choix de machines. Cela répond directement à une limitation clé des MIGs standard, qui nécessitaient des groupes séparés pour chaque modèle d’instance, offrant ainsi un moyen de consolider et simplifier la gestion de l’infrastructure dans les scénarios de cloud bursting impliquant des exigences VM diversifiées.
Au-delà de la simplification de la gestion, Instance Flexibility apporte un avantage crucial pour les charges de travail fréquemment déployées en cloud bursting : l’optimisation de l’utilisation des Spot VMs. Bien que très économiques, les Spot VMs comportent le risque inhérent de préemption – une terminaison brutale par GCP lorsque la capacité est nécessaire ailleurs. Dans des environnements de calcul complexes et à haut débit, tels que ceux gérés par IBM Spectrum Symphony, de telles préemptions peuvent entraîner :
Échecs de tâches : Le travail en cours sur l’instance préemptée est perdu.
Retards dans le workflow : Les dépendances entre tâches signifient que l’échec d’une seule peut provoquer des retards en cascade sur l’ensemble du flux de calcul.
Débit réduit : Les interruptions fréquentes diminuent la puissance de calcul globale disponible sur le long terme.
La fonctionnalité Instance Flexibility atténue directement ce problème grâce à un provisionnement conscient des préemptions. Lorsqu’elle est configurée pour utiliser des Spot VMs, elle ne se contente pas de choisir une instance Spot disponible dans la liste ; elle tente activement de provisionner des instances à partir des types de machines et des zones qui présentent, à ce moment-là, les taux de préemption prédits les plus faibles. Cette sélection proactive vise à maximiser le temps d’exécution des Spot VMs, réduisant ainsi les interruptions des tâches Symphony. C’est un avantage considérable pour l’efficacité observée d’un cluster de calcul, car ces interruptions ne sont pas si rares.
Cette optimisation intégrée a des implications notables lorsqu’on envisage l’intégration avec le Host Factory d’IBM Spectrum Symphony. Le Host Factory est traditionnellement responsable d’interpréter les besoins en ressources de Symphony et de provisionner les instances cloud appropriées. Si vous avez lu notre article sur le cloud bursting, vous comprendrez pourquoi cela renforce notre conclusion sur le contournement de ce composant : en tirant parti des MIGs flexibles, non seulement nous aurons une correspondance plus naturelle entre la demande du cluster et les événements de redimensionnement, mais nous pourrons également déléguer la sélection des instances à GCP, ce qui conduirait à un cluster plus efficace à grande échelle. Cependant, suivre cette approche représente une considération architecturale importante. Elle reste exploratoire, nécessitant une investigation approfondie, un effort de développement pour le requestor personnalisé et des tests rigoureux.
Il est également important de reconnaître les limites actuelles de la fonctionnalité Instance Flexibility :
Les MIGs sont une abstraction très légère proposée par Google Cloud Platform, sans coût supplémentaire. Vous ne payez que pour les ressources utilisées dans ou par le MIG. Nous avons créé nos modèles d’instances, les avons associés aux MIGs, et en réglant la taille cible à 0 dans notre configuration Terraform, nous pouvons gérer efficacement le scaling sans dépenses inutiles.
Les MIGs s’intègrent parfaitement avec Google Cloud Monitoring, offrant un point d’observation unique pour suivre les groupes d’instances. Cela inclut des informations spécifiques aux MIGs sur les tendances et prévisions d’utilisation CPU et mémoire. La surveillance des événements de création et d’échec est simplifiée en suivant une seule opération de redimensionnement et ses journaux associés, offrant une vue claire et consolidée de l’état des ressources et de la santé opérationnelle.
La possibilité de créer, redimensionner et détruire des instances en masse via des commandes centralisées simples, facilement suivies dans les journaux, fait des MIGs un choix efficace pour gérer des environnements dynamiques à grande échelle. Cette approche rationalisée réduit la charge opérationnelle habituellement associée à la gestion d’instances individuelles ou d’opérations en masse.