Gestisci la capacità dei nodi utilizzando Terraform
Questa pagina descrive come espandere o ridurre la capacità del cluster nella soluzione VMware su Google Cloud aggiungendo o eliminando nodi ESXi bare metal da un cluster esistente utilizzando i moduli di automazione Terraform end-to-end (E2E).
Espandi la capacità del cluster
Per espandere un cluster esistente da X nodi a X + N nodi, utilizza lo stesso
workspace e lo stesso file di stato (terraform.tfstate) di Terraform che hai utilizzato durante
il deployment iniziale del cluster.
I passaggi seguenti mostrano come aggiungere un quinto nodo (vcf-mgmt-sample-node-5) a un cluster di gestione a quattro nodi (in base alla configurazione di esempio nel file e2e-terraform/sample_management_cluster.tfvars):
Aggiorna il file delle definizioni delle variabili (
management_cluster.tfvars): aggiorna le variabili di configurazione nel filemanagement_cluster.tfvarscome segue:- Imposta la variabile
deployment_modesu"node_addition". - Aggiorna la variabile
number_of_nodesda4a5. - Aggiungi
"vcf-mgmt-sample-node-5"all'elenconode_namesse hai specificato esplicitamentenode_namesdurante la creazione del cluster. Lascia vuoto l'elenconode_namesse non l'hai specificato inizialmente. - Aggiungi i nuovi indirizzi IPv4 agli elenchi
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valueseadditional_dynamic_nicsse hai specificato esplicitamente queste variabili durante la creazione del cluster. Se hai lasciato vuoti questi elenchi per l'allocazione automatica, non aggiornarli. - Aggiorna l'elenco
availability_domains(ad esempio[1, 2, 3, 4, 5]) se hai specificato esplicitamente questa variabile durante la creazione del cluster. Se lo hai lasciato vuoto, non aggiornarlo.
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]- Imposta la variabile
Genera e applica il piano di esecuzione di Terraform:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplanCollega i nuovi nodi ai gruppi di endpoint di rete (NEG): recupera ed esegui i comandi
gcloud compute network-endpoint-groups updategenerati dall'output Terraformneg_attachment_commandsper collegare le nuove istanze ai NEG di gestione e 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'
Prima di eseguire i comandi, sostituisci quanto segue:
ZONE: la zona Google Cloud in cui si trova il cluster.PROJECT_ID: l'ID del progetto Google Cloud target.
Comportamento previsto
Quando applichi la configurazione node_addition, Terraform esegue le seguenti operazioni non invasive:
- Esegue il provisioning solo della nuova istanza ESXi bare metal (
vcf-mgmt-sample-node-5) e prenota gli indirizzi IPv4 interni associati. - Genera l'output
neg_attachment_commandsin modo da poter collegare le nuove istanze ai NEG di gestione e NSX a livello di zona esistenti. - Registra i record Cloud DNS di inoltro (
A) e inversi (PTR) per il nuovo nodo. - Lascia inalterati tutti i nodi, i bilanciatori del carico e le configurazioni di rete in esecuzione esistenti.
Passaggi successivi
Dopo aver espanso la capacità del cluster, completa i seguenti passaggi:
- Esegui lo script del toolkit (
python3 -m vcf_deployer.main --config config.json) come descritto in Prepara i nodi ed esegui il deployment di VCF utilizzando il toolkit per reimpostare la password iniziale di ESXirootsu ogni nuovo host e inizializzare i nuovi nodi ESXi per l'aggiunta al cluster. Ometti l'oggettovcf_deployment_confignel fileconfig.json. - Esegui il provisioning e aggiungi il nodo preparato al tuo cluster VMware Cloud Foundation (VCF) 9.x utilizzando l'interfaccia utente o le API di VMware.
Riduci la capacità del cluster
Per ridurre un cluster esistente da X nodi a X - N nodi, utilizza lo stesso
workspace e lo stesso file di stato (terraform.tfstate) di Terraform che hai utilizzato durante
il deployment iniziale del cluster.
I passaggi seguenti mostrano come eliminare il terzo nodo (vcf-mgmt-sample-node-3) dal cluster di gestione a cinque nodi descritto in Espandi la capacità del cluster:
Rimuovi il nodo dal cluster VCF: rimuovi l'host ESXi di destinazione dal cluster VCF 9.x e dismettilo utilizzando VMware SDDC Manager. Per saperne di più, consulta la documentazione relativa alla dismissione degli host in VMware Cloud Foundation.
Se applicabile, disattiva la protezione da eliminazione sul nodo: Terraform non può eliminare un'istanza con la protezione da eliminazione abilitata. Se la protezione da eliminazione non è abilitata sui nodi che vuoi eliminare, salta questo passaggio. In caso contrario, disattiva la protezione da eliminazione su ogni nodo che vuoi eliminare:
gcloud compute instances update vcf-mgmt-sample-node-3 \ --zone='ZONE' \ --project='PROJECT_ID' \ --no-deletion-protection
Prima di eseguire il comando, sostituisci quanto segue:
ZONE: la zona Google Cloud in cui si trova il cluster.PROJECT_ID: l'ID del progetto Google Cloud target.
Per disattivare la protezione da eliminazione utilizzando la console Google Cloud , consulta Disattiva ed elimina i nodi.
Aggiorna il file delle definizioni delle variabili (
management_cluster.tfvars): aggiorna le variabili di configurazione nel filemanagement_cluster.tfvarscome segue:- Imposta la variabile
deployment_modesu"node_deletion". - Aggiorna la variabile
number_of_nodesda5a4. - Specifica l'elenco
node_namescon i nomi dei nodi rimanenti e rimuovi"vcf-mgmt-sample-node-3"dall'elenco. - Rimuovi gli indirizzi IPv4 del nodo eliminato dagli elenchi
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valueseadditional_dynamic_nicsse hai specificato esplicitamente queste variabili durante la creazione del cluster. - Specifica l'elenco
availability_domainscon il dominio di disponibilità di ogni nodo rimanente (ad esempio,[1, 2, 4, 5]).
In modalità
node_deletion, devi sempre specificare esplicitamente gli elenchinode_nameseavailability_domains, anche se non li hai specificati durante la creazione del cluster o qualsiasi operazione Terraform precedente sul cluster (ad esempio, se i nomi dei nodi sono stati generati automaticamente). La specifica di questi elenchi garantisce che Terraform elimini solo il nodo previsto. Assicurati che ogni voce corrisponda al nome e al dominio di disponibilità del nodo rimanente corrispondente.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]- Imposta la variabile
Genera e applica il piano di esecuzione di Terraform: esamina l'output del piano per verificare che Terraform elimini solo le risorse del nodo che vuoi eliminare, quindi applica il piano:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplan
Comportamento previsto
Quando applichi la configurazione node_deletion, Terraform esegue le seguenti operazioni:
- Elimina solo l'istanza ESXi bare metal di destinazione (
vcf-mgmt-sample-node-3) e il relativo disco di avvio. - Rimuove l'istanza eliminata dai NEG di gestione e NSX a livello di zona.
- Rilascia gli indirizzi IPv4 interni prenotati del nodo eliminato.
- Elimina i record Cloud DNS di inoltro (
A) e inversi (PTR) del nodo eliminato. - Lascia inalterati tutti i nodi, i bilanciatori del carico e le configurazioni di rete rimanenti.