Gérer la capacité des nœuds à l'aide de Terraform
Cette page explique comment augmenter ou réduire la capacité d'un cluster dans la solution VMware sur Google Cloud en ajoutant des nœuds ESXi bare metal à un cluster existant ou en les supprimant de celui-ci, à l'aide des modules d'automatisation Terraform de bout en bout (E2E).
Augmenter la capacité du cluster
Pour étendre un cluster existant de X nœuds à X + N nœuds, utilisez le même espace de travail et le même fichier d'état Terraform (terraform.tfstate) que ceux utilisés lors du déploiement initial du cluster.
La procédure suivante montre comment ajouter un cinquième nœud (vcf-mgmt-sample-node-5) à un cluster d'administrateur à quatre nœuds (en fonction de l'exemple de configuration du fichier e2e-terraform/sample_management_cluster.tfvars) :
Mettez à jour votre fichier de définitions de variables (
management_cluster.tfvars) : Mettez à jour les variables de configuration dans votre fichiermanagement_cluster.tfvarscomme suit :- Définissez la variable
deployment_modesur"node_addition". - Remplacez la variable
number_of_nodes(4) par5. - Ajoutez
"vcf-mgmt-sample-node-5"à la listenode_namessi vous avez explicitement spécifiénode_nameslors de la création du cluster. Laissez la listenode_namesvide si vous ne l'avez pas spécifiée initialement. - Ajoutez de nouvelles adresses IPv4 aux listes
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valuesetadditional_dynamic_nicssi vous avez explicitement spécifié ces variables lors de la création du cluster. Si vous avez laissé ces listes vides pour l'allocation automatique, ne les mettez pas à jour. - Mettez à jour la liste
availability_domains(par exemple,[1, 2, 3, 4, 5]) si vous avez explicitement spécifié cette variable lors de la création du cluster. Si vous l'avez laissé vide, ne le modifiez pas.
deployment_mode = "node_addition" number_of_nodes = 5 node_names = [ "vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2", "vcf-mgmt-sample-node-3", "vcf-mgmt-sample-node-4", "vcf-mgmt-sample-node-5" # New node ] mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.5", "10.200.0.6", "10.200.0.7"] vsan_ip_values = ["10.200.1.3", "10.200.1.4", "10.200.1.5", "10.200.1.6", "10.200.1.7"] vmotion_ip_values = ["10.200.2.3", "10.200.2.4", "10.200.2.5", "10.200.2.6", "10.200.2.7"] nsx_tep_ip_values = ["10.200.3.3", "10.200.3.4", "10.200.3.5", "10.200.3.6", "10.200.3.7"] additional_dynamic_nics = [ { name = "additional-nic-1" subnet_name = "vcf-mgmt-sample-additional-subnet-1" vlan_id = 210 ip_address_type = "reserved_custom" ip_values = ["10.200.4.3", "10.200.4.4", "10.200.4.5", "10.200.4.6", "10.200.4.7"] } ] availability_domains = [1, 2, 3, 4, 5]- Définissez la variable
Générez et appliquez le plan d'exécution Terraform :
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplanAssociez les nouveaux nœuds aux groupes de points de terminaison du réseau (NEG) : récupérez et exécutez les commandes
gcloud compute network-endpoint-groups updategénérées à partir du résultat Terraformneg_attachment_commandspour associer les nouvelles instances aux NEG de gestion et NSX :# View attachment commands from Terraform outputs terraform output neg_attachment_commands # Run the generated commands to attach the new instance to the Management and NSX NEGs gcloud compute network-endpoint-groups update vcf-mgmt-sample-neg \ --zone='ZONE' \ --project='PROJECT_ID' \ --add-endpoint='instance=vcf-mgmt-sample-node-5' gcloud compute network-endpoint-groups update vcf-mgmt-sample-nsx-neg \ --zone='ZONE' \ --project='PROJECT_ID' \ --add-endpoint='instance=vcf-mgmt-sample-node-5'
Avant d'exécuter les commandes, remplacez les éléments suivants :
ZONE: zone Google Cloud dans laquelle se trouve le cluster.PROJECT_ID: ID de votre projet Google Cloud cible.
Comportement attendu
Lorsque vous appliquez la configuration node_addition, Terraform effectue les opérations non perturbatrices suivantes :
- Provisionne uniquement la nouvelle instance ESXi Bare Metal (
vcf-mgmt-sample-node-5) et réserve les adresses IPv4 internes associées. - Génère la sortie
neg_attachment_commandsafin que vous puissiez associer les nouvelles instances aux NEG zonaux de gestion et NSX existants. - Enregistre les enregistrements Cloud DNS de transfert (
A) et de transfert inverse (PTR) pour le nouveau nœud. - Laisse tous les nœuds, équilibreurs de charge et configurations réseau existants en cours d'exécution sans interruption.
Étapes suivantes
Après avoir augmenté la capacité du cluster, procédez comme suit :
- Exécutez le script du kit d'outils (
python3 -m vcf_deployer.main --config config.json) comme décrit dans Préparer les nœuds et déployer VCF à l'aide du kit d'outils pour réinitialiser le mot de passe ESXirootinitial sur chaque nouvel hôte et initialiser les nouveaux nœuds ESXi pour l'ajout de cluster. Omettez l'objetvcf_deployment_configdans le fichierconfig.json. - Mettez en service et ajoutez le nœud préparé à votre cluster VMware Cloud Foundation (VCF) 9.x à l'aide de l'UI ou des API VMware.
Réduire la capacité du cluster
Pour réduire un cluster existant de X nœuds à X - N nœuds, utilisez le même espace de travail Terraform et le même fichier d'état (terraform.tfstate) que ceux utilisés lors du déploiement initial du cluster.
Les étapes suivantes montrent comment supprimer le troisième nœud (vcf-mgmt-sample-node-3) du cluster de gestion à cinq nœuds décrit dans Augmenter la capacité du cluster :
Supprimer le nœud du cluster VCF : supprimez l'hôte ESXi cible de votre cluster VCF 9.x et mettez-le hors service à l'aide de VMware SDDC Manager. Pour en savoir plus, consultez Mettre hors service des hôtes dans la documentation VMware Cloud Foundation.
Le cas échéant, désactivez la protection contre la suppression sur le nœud : Terraform ne peut pas supprimer une instance pour laquelle la protection contre la suppression est activée. Si la protection contre la suppression n'est pas activée sur les nœuds que vous souhaitez supprimer, ignorez cette étape. Sinon, désactivez la protection contre la suppression sur chaque nœud que vous souhaitez supprimer :
gcloud compute instances update vcf-mgmt-sample-node-3 \ --zone='ZONE' \ --project='PROJECT_ID' \ --no-deletion-protection
Avant d'exécuter la commande, remplacez les éléments suivants :
ZONE: zone Google Cloud dans laquelle se trouve le cluster.PROJECT_ID: ID de votre projet Google Cloud cible.
Pour désactiver la protection contre la suppression à l'aide de la console Google Cloud , consultez Mettre hors service et supprimer des nœuds.
Mettez à jour votre fichier de définitions de variables (
management_cluster.tfvars) : Mettez à jour les variables de configuration dans votre fichiermanagement_cluster.tfvarscomme suit :- Définissez la variable
deployment_modesur"node_deletion". - Remplacez la variable
number_of_nodes(5) par4. - Spécifiez la liste
node_namesavec les noms des nœuds restants, puis supprimez"vcf-mgmt-sample-node-3"de la liste. - Supprimez les adresses IPv4 du nœud supprimé des listes
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valuesetadditional_dynamic_nicssi vous avez explicitement spécifié ces variables lors de la création du cluster. - Spécifiez la liste
availability_domainsavec le domaine de disponibilité de chaque nœud restant (par exemple,[1, 2, 4, 5]).
En mode
node_deletion, vous devez toujours spécifier explicitement les listesnode_namesetavailability_domains, même si vous ne les avez pas spécifiées lors de la création du cluster ou de toute opération Terraform antérieure sur le cluster (par exemple, si les noms de nœuds ont été générés automatiquement). La spécification de ces listes garantit que Terraform ne supprime que le nœud prévu. Assurez-vous que chaque entrée correspond au nom et au domaine de disponibilité du nœud restant correspondant.deployment_mode = "node_deletion" number_of_nodes = 4 # Always required in node_deletion mode node_names = [ "vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2", # "vcf-mgmt-sample-node-3" removed "vcf-mgmt-sample-node-4", "vcf-mgmt-sample-node-5" ] mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.6", "10.200.0.7"] vsan_ip_values = ["10.200.1.3", "10.200.1.4", "10.200.1.6", "10.200.1.7"] vmotion_ip_values = ["10.200.2.3", "10.200.2.4", "10.200.2.6", "10.200.2.7"] nsx_tep_ip_values = ["10.200.3.3", "10.200.3.4", "10.200.3.6", "10.200.3.7"] additional_dynamic_nics = [ { name = "additional-nic-1" subnet_name = "vcf-mgmt-sample-additional-subnet-1" vlan_id = 210 ip_address_type = "reserved_custom" ip_values = ["10.200.4.3", "10.200.4.4", "10.200.4.6", "10.200.4.7"] } ] # Always required in node_deletion mode availability_domains = [1, 2, 4, 5]- Définissez la variable
Générez et appliquez le plan d'exécution Terraform : examinez le résultat du plan pour vérifier que Terraform ne détruit que les ressources du nœud que vous souhaitez supprimer, puis appliquez le plan :
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplan
Comportement attendu
Lorsque vous appliquez la configuration node_deletion, Terraform effectue les opérations suivantes :
- Supprime uniquement l'instance ESXi bare metal ciblée (
vcf-mgmt-sample-node-3) et son disque de démarrage. - Supprime l'instance supprimée des NEG zonaux de gestion et NSX.
- Libère les adresses IPv4 internes réservées du nœud supprimé.
- Supprime les enregistrements Cloud DNS de transfert (
A) et inversés (PTR) du nœud supprimé. - Laisse tous les nœuds, équilibreurs de charge et configurations réseau restants sans interruption.