Knotenkapazität mit Terraform verwalten

Auf dieser Seite wird beschrieben, wie Sie die Clusterkapazität in der VMware-Lösung in Google Cloud erweitern oder reduzieren, indem Sie einem vorhandenen Cluster mithilfe der End-to-End-Automatisierungsmodule (E2E) von Terraform Bare-Metal-ESXi-Knoten hinzufügen oder daraus löschen.

Clusterkapazität erweitern

Wenn Sie einen vorhandenen Cluster von X Knoten auf X + N Knoten erweitern möchten, verwenden Sie denselben Terraform-Arbeitsbereich und dieselbe Statusdatei (terraform.tfstate), die Sie bei der ersten Bereitstellung des Clusters verwendet haben.

In den folgenden Schritten wird gezeigt, wie Sie einem Verwaltungscluster mit vier Knoten (basierend auf der Beispielkonfiguration in der Datei e2e-terraform/sample_management_cluster.tfvars) einen fünften Knoten (vcf-mgmt-sample-node-5) hinzufügen:

  1. Datei mit Variablendefinitionen (management_cluster.tfvars) aktualisieren: Aktualisieren Sie die Konfigurationsvariablen in Ihrer management_cluster.tfvars-Datei so:

    • Legen Sie die Variable deployment_mode auf "node_addition" fest.
    • Aktualisieren Sie die Variable number_of_nodes von 4 auf 5.
    • Hängen Sie "vcf-mgmt-sample-node-5" an die Liste node_names an, wenn Sie node_names beim Erstellen des Clusters explizit angegeben haben. Lassen Sie die Liste node_names leer, wenn Sie sie nicht am Anfang angegeben haben.
    • Hängen Sie neue IPv4-Adressen an die Listen mgmt_nic_ip_values, vsan_ip_values, vmotion_ip_values, nsx_tep_ip_values und additional_dynamic_nics an, wenn Sie diese Variablen beim Erstellen des Clusters explizit angegeben haben. Wenn Sie diese Listen für die automatische Zuordnung leer gelassen haben, aktualisieren Sie sie nicht.
    • Aktualisieren Sie die Liste availability_domains (z. B. [1, 2, 3, 4, 5]), wenn Sie diese Variable beim Erstellen des Clusters explizit angegeben haben. Wenn Sie es leer gelassen haben, aktualisieren Sie es nicht.
    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]
    
  2. Terraform-Ausführungsplan generieren und anwenden:

    terraform plan -var-file='management_cluster.tfvars' -out=tfplan
    terraform apply tfplan
    
  3. Neue Knoten an die Netzwerk-Endpunktgruppen (NEGs) anhängen: Rufen Sie die generierten gcloud compute network-endpoint-groups update-Befehle aus der neg_attachment_commands-Terraform-Ausgabe ab und führen Sie sie aus, um die neuen Instanzen an die Verwaltungs- und NSX-NEGs anzuhängen:

    # 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'
    

    Ersetzen Sie vor dem Ausführen der Befehle Folgendes:

    • ZONE: Die Google Cloud Zone, in der sich der Cluster befindet.
    • PROJECT_ID: Die ID Ihres Zielprojekts in Google Cloud .

Erwartetes Verhalten

Wenn Sie die node_addition-Konfiguration anwenden, führt Terraform die folgenden unterbrechungsfreien Vorgänge aus:

  • Stellt nur die neue Bare-Metal-ESXi-Instanz (vcf-mgmt-sample-node-5) bereit und reserviert die zugehörigen internen IPv4-Adressen.
  • Generiert die Ausgabe neg_attachment_commands, damit Sie die neuen Instanzen an die vorhandenen zonalen Verwaltungs- und NSX-NEGs anhängen können.
  • Registriert Forward- (A) und Reverse-Cloud DNS-Einträge (PTR) für den neuen Knoten.
  • Alle vorhandenen laufenden Knoten, Load Balancer und Netzwerkkonfigurationen bleiben ununterbrochen.

Nächste Schritte

Führen Sie die folgenden Schritte aus, nachdem Sie die Clusterkapazität erweitert haben:

  1. Führen Sie das Toolkit-Skript (python3 -m vcf_deployer.main --config config.json) wie unter Knoten vorbereiten und VCF mit dem Toolkit bereitstellen beschrieben aus, um das ursprüngliche ESXi-root-Passwort auf jedem neuen Host zurückzusetzen und die neuen ESXi-Knoten für das Hinzufügen zum Cluster zu initialisieren. Lassen Sie das Objekt vcf_deployment_config in der Datei config.json weg.
  2. Nehmen Sie den vorbereiteten Knoten in Betrieb und fügen Sie ihn mithilfe der VMware-Benutzeroberfläche oder der APIs zu Ihrem VMware Cloud Foundation (VCF) 9.x-Cluster hinzu.

Clusterkapazität reduzieren

Wenn Sie einen vorhandenen Cluster von X Knoten auf X – N Knoten reduzieren möchten, verwenden Sie denselben Terraform-Arbeitsbereich und dieselbe Statusdatei (terraform.tfstate), die Sie bei der ersten Bereitstellung des Clusters verwendet haben.

In den folgenden Schritten wird gezeigt, wie Sie den dritten Knoten (vcf-mgmt-sample-node-3) aus dem Verwaltungscluster mit fünf Knoten löschen, der unter Clusterkapazität erweitern beschrieben wird:

  1. Knoten aus dem VCF-Cluster entfernen: Entfernen Sie den Ziel-ESXi-Host aus Ihrem VCF 9.x-Cluster und nehmen Sie ihn mit VMware SDDC Manager außer Betrieb. Weitere Informationen finden Sie unter Hosts in der VMware Cloud Foundation-Dokumentation außer Betrieb nehmen.

  2. Deaktivieren Sie gegebenenfalls den Löschschutz für den Knoten: Terraform kann keine Instanz löschen, für die der Löschschutz aktiviert ist. Wenn der Löschschutz für die Knoten, die Sie löschen möchten, nicht aktiviert ist, überspringen Sie diesen Schritt. Andernfalls deaktivieren Sie den Löschschutz für jeden Knoten, den Sie löschen möchten:

    gcloud compute instances update vcf-mgmt-sample-node-3 \
       --zone='ZONE' \
       --project='PROJECT_ID' \
       --no-deletion-protection
    

    Ersetzen Sie vor dem Ausführen des Befehls Folgendes:

    • ZONE: Die Google Cloud Zone, in der sich der Cluster befindet.
    • PROJECT_ID: Die ID Ihres Zielprojekts in Google Cloud .

    Wenn Sie den Löschschutz stattdessen über die Google Cloud Console deaktivieren möchten, finden Sie weitere Informationen unter Knoten außer Betrieb nehmen und löschen.

  3. Datei mit Variablendefinitionen (management_cluster.tfvars) aktualisieren: Aktualisieren Sie die Konfigurationsvariablen in Ihrer management_cluster.tfvars-Datei so:

    • Legen Sie die Variable deployment_mode auf "node_deletion" fest.
    • Aktualisieren Sie die Variable number_of_nodes von 5 auf 4.
    • Geben Sie die Liste node_names mit den Namen der verbleibenden Knoten an und entfernen Sie "vcf-mgmt-sample-node-3" aus der Liste.
    • Entfernen Sie die IPv4-Adressen des gelöschten Knotens aus den Listen mgmt_nic_ip_values, vsan_ip_values, vmotion_ip_values, nsx_tep_ip_values und additional_dynamic_nics, wenn Sie diese Variablen beim Erstellen des Clusters explizit angegeben haben.
    • Geben Sie die availability_domains-Liste mit der Verfügbarkeitsdomain jedes verbleibenden Knotens an (z. B. [1, 2, 4, 5]).

    Im Modus node_deletion müssen Sie die Listen node_names und availability_domains immer explizit angeben, auch wenn Sie sie bei der Clustererstellung oder einem früheren Terraform-Vorgang im Cluster nicht angegeben haben (z. B. wenn die Knotennamen automatisch generiert wurden). Durch die Angabe dieser Listen wird sichergestellt, dass Terraform nur den gewünschten Knoten löscht. Achten Sie darauf, dass jeder Eintrag mit dem Namen und der Verfügbarkeitsdomain des entsprechenden verbleibenden Knotens übereinstimmt.

    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]
    
  4. Terraform-Ausführungsplan generieren und anwenden: Prüfen Sie die Planausgabe, um sicherzustellen, dass Terraform nur die Ressourcen des Knotens löscht, den Sie löschen möchten, und wenden Sie dann den Plan an:

    terraform plan -var-file='management_cluster.tfvars' -out=tfplan
    terraform apply tfplan
    

Erwartetes Verhalten

Wenn Sie die node_deletion-Konfiguration anwenden, führt Terraform die folgenden Vorgänge aus:

  • Löscht nur die Ziel-Bare-Metal-ESXi-Instanz (vcf-mgmt-sample-node-3) und ihr Bootlaufwerk.
  • Entfernt die gelöschte Instanz aus den Verwaltungs- und NSX-zonalen NEGs.
  • Gibt die reservierten internen IPv4-Adressen des gelöschten Knotens frei.
  • Löscht die Forward- (A) und Reverse- (PTR) Cloud DNS-Einträge des gelöschten Knotens.
  • Alle verbleibenden Knoten, Load Balancer und Netzwerkkonfigurationen bleiben unberührt.