Gerenciar a capacidade do nó usando o Terraform
Nesta página, descrevemos como expandir ou reduzir a capacidade do cluster na solução VMware no Google Cloud adicionando ou excluindo nós ESXi bare metal de um cluster atual usando os módulos de automação do Terraform de ponta a ponta (E2E).
Ampliar a capacidade do cluster
Para expandir um cluster de X nós para X + N nós, use o mesmo
espaço de trabalho do Terraform e o arquivo de estado (terraform.tfstate) que você usou durante
a implantação inicial do cluster.
As etapas a seguir mostram como adicionar um quinto nó (vcf-mgmt-sample-node-5) a um
cluster de gerenciamento de quatro nós (com base na configuração de amostra no
arquivo e2e-terraform/sample_management_cluster.tfvars):
Atualize o arquivo de definições de variáveis (
management_cluster.tfvars): atualize as variáveis de configuração no arquivomanagement_cluster.tfvarsda seguinte maneira:- Defina a variável
deployment_modecomo"node_addition". - Atualize a variável
number_of_nodesde4para5. - Anexe
"vcf-mgmt-sample-node-5"à listanode_namesse você especificou explicitamentenode_namesdurante a criação do cluster. Deixe a listanode_namesvazia se você não a especificou inicialmente. - Anexe novos endereços IPv4 às listas
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valueseadditional_dynamic_nicsse você tiver especificado explicitamente essas variáveis durante a criação do cluster. Se você deixou essas listas vazias para alocação automática, não as atualize. - Atualize a lista
availability_domains(por exemplo,[1, 2, 3, 4, 5]) se você especificou explicitamente essa variável durante a criação do cluster. Se você o deixou em branco, não o atualize.
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]- Defina a variável
Gere e aplique o plano de execução do Terraform:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplanAnexe os novos nós aos grupos de endpoints de rede (NEGs): recupere e execute os comandos
gcloud compute network-endpoint-groups updategerados da saída do Terraformneg_attachment_commandspara anexar as novas instâncias ao gerenciamento e aos NEGs do 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'
Antes de executar os comandos, substitua o seguinte:
ZONE: a Google Cloud zona em que o cluster está localizado.PROJECT_ID: o ID do projeto de destino do Google Cloud .
Comportamento esperado
Quando você aplica a configuração node_addition, o Terraform executa as
seguintes operações sem interrupções:
- Provisiona apenas a nova instância de ESXi bare metal (
vcf-mgmt-sample-node-5) e reserva os endereços IPv4 internos associados. - Gera a saída
neg_attachment_commandspara que você possa anexar as novas instâncias aos NEGs zonais de gerenciamento e NSX atuais. - Registra registros DNS de encaminhamento (
A) e reverso (PTR) do Cloud DNS para o novo nó. - Deixa todos os nós em execução, balanceadores de carga e configurações de rede sem interrupções.
A seguir
Depois de expandir a capacidade do cluster, siga estas etapas:
- Execute o script do kit de ferramentas (
python3 -m vcf_deployer.main --config config.json), conforme descrito em Preparar nós e implantar o VCF usando o kit de ferramentas para redefinir a senha inicial do ESXirootem cada novo host e inicializar os novos nós do ESXi para adição de cluster. Omita o objetovcf_deployment_configno arquivoconfig.json. - Comissione e adicione o nó preparado ao cluster do VMware Cloud Foundation (VCF) 9.x usando a interface ou as APIs da VMware.
Reduzir a capacidade do cluster
Para reduzir um cluster de X nós para X - N nós, use o mesmo
espaço de trabalho do Terraform e o mesmo arquivo de estado (terraform.tfstate) que você usou durante
a implantação inicial do cluster.
As etapas a seguir mostram como excluir o terceiro nó (vcf-mgmt-sample-node-3)
do cluster de gerenciamento de cinco nós descrito em
Expandir a capacidade do cluster:
Remova o nó do cluster do VCF: remova o host ESXi de destino do cluster do VCF 9.x e desative-o usando o VMware SDDC Manager. Para mais informações, consulte Desativar hosts na documentação do VMware Cloud Foundation.
Se aplicável, desative a proteção contra exclusão no nó: o Terraform não pode excluir uma instância que tenha a proteção contra exclusão ativada. Se a proteção contra exclusão não estiver ativada nos nós que você quer excluir, pule esta etapa. Caso contrário, desative a proteção contra exclusão em cada nó que você quer excluir:
gcloud compute instances update vcf-mgmt-sample-node-3 \ --zone='ZONE' \ --project='PROJECT_ID' \ --no-deletion-protection
Antes de executar o comando, substitua o seguinte:
ZONE: a Google Cloud zona em que o cluster está localizado.PROJECT_ID: o ID do projeto de destino do Google Cloud .
Para desativar a proteção contra exclusão usando o console do Google Cloud , consulte Desativar e excluir nós.
Atualize o arquivo de definições de variáveis (
management_cluster.tfvars): atualize as variáveis de configuração no arquivomanagement_cluster.tfvarsda seguinte maneira:- Defina a variável
deployment_modecomo"node_deletion". - Atualize a variável
number_of_nodesde5para4. - Especifique a lista
node_namescom os nomes dos nós restantes e remova"vcf-mgmt-sample-node-3"da lista. - Remova os endereços IPv4 do nó excluído das listas
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valueseadditional_dynamic_nicsse você especificou explicitamente essas variáveis durante a criação do cluster. - Especifique a lista
availability_domainscom o domínio de disponibilidade de cada nó restante (por exemplo,[1, 2, 4, 5]).
No modo
node_deletion, é preciso sempre especificar explicitamente as listasnode_nameseavailability_domains, mesmo que você não as tenha especificado durante a criação do cluster ou qualquer operação anterior do Terraform no cluster (por exemplo, se os nomes dos nós foram gerados automaticamente). Especificar essas listas garante que o Terraform exclua apenas o nó pretendido. Verifique se cada entrada corresponde ao nome e ao domínio de disponibilidade do nó restante correspondente.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]- Defina a variável
Gere e aplique o plano de execução do Terraform: revise a saída do plano para verificar se o Terraform destrói apenas os recursos do nó que você quer excluir e, em seguida, aplique o plano:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplan
Comportamento esperado
Quando você aplica a configuração node_deletion, o Terraform executa as
seguintes operações:
- Exclui apenas a instância bare metal do ESXi de destino
(
vcf-mgmt-sample-node-3) e o disco de inicialização dela. - Remove a instância excluída dos NEGs zonais de gerenciamento e do NSX.
- Libera os endereços IPv4 internos reservados do nó excluído.
- Exclui os registros DNS de encaminhamento (
A) e reversos (PTR) do Cloud DNS do nó excluído. - Deixa todos os nós, balanceadores de carga e configurações de rede restantes sem interrupção.