Spanner Omni-Bereitstellung verwalten

In diesem Dokument wird erläutert, wie Sie eine Spanner Omni-Bereitstellung verwalten. Die Wartung einer Spanner Omni-Bereitstellung umfasst regelmäßige Systemdiagnosen, die Außerbetriebnahme fehlerhafter Elemente und den Austausch von Serverknoten oder fehlerhaften Festplatten, um die Clusterstabilität und ‑konsistenz zu gewährleisten. Durch die Verwaltung des Datenbankzustands werden Ihre Datenbanken vor ungeplanten Ausfällen geschützt und die Redundanz der zugrunde liegenden Paxos-Konsensgruppe wird aufrechterhalten.

Durch Wartungsarbeiten können Sie:

  • Hochverfügbarkeit sicherstellen: Stellen Sie fehlerhafte VMs oder Pods neu bereit, um die Redundanz des Datenbankservers aufrechtzuerhalten. So können Sie Ihre Anwendungen auch bei Hardwarefehlern weiter ausführen.

  • Datensicherheit und ‑integrität schützen: Deaktivieren Sie Knoten mit fehlerhaften Festplatten, um zu verhindern, dass sich Speicherfehler auf andere Teile der Datenbank ausbreiten. So wird auch verhindert, dass auf getrennten Servern widersprüchliche Aktualisierungen aufgezeichnet werden.

Hinweis

Bevor Sie Wartungsarbeiten an Ihrer Kubernetes-Bereitstellung durchführen, müssen Sie Folgendes tun:

Server ersetzen

Möglicherweise müssen Sie einen Server in Ihrer Bereitstellung ersetzen, um System- oder Speicherfehler zu beheben.

Root-Server ersetzen

Wenn Sie einen Root-Server ersetzen möchten, wählen Sie den Tab für Ihre Umgebung aus:

Kubernetes

So ersetzen Sie einen Stammserver in einem Kubernetes-Deployment: Das Hinzufügen weiterer Stammserver zu einer vorhandenen Kubernetes-Bereitstellung wird nicht unterstützt. Sie können jedoch vorhandene Stammserver ersetzen, um nicht behebbare Fehler zu beheben.

  1. Löschen Sie den Server, den Sie ersetzen möchten:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • SERVER_ENDPOINT: Der Server-Pod-Endpunkt, der gelöscht werden soll, im Format SERVER.pod.NAMESPACE:PORT, z. B. spanner-a-1.pod.spanner-ns:15000. Wenn Sie die Serverendpunkte in Ihrer Bereitstellung aufrufen möchten, listen Sie die Bereitstellungsserver mit dem Befehl spanner deployment servers list --zone=ZONE auf.
    • ZONE: Die Zone, die den Server enthält, z. B. us-central1-a.

    Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.

    So verfolgen Sie den Fortschritt des Löschvorgangs:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Warten Sie, bis der Befehl einen NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.

  2. Löschen Sie den Anspruch auf nichtflüchtiges Volume (PersistentVolumeClaim, PVC) für den Pod, auf dem der Server gehostet wird:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Ersetzen Sie Folgendes:

    • DATA_VOLUME_NAME: Der Name des Daten-Volumes, z. B. data-volume-spanner-a-1. Um den Namen des Datenvolumes zu finden, listen Sie die PVCs in Ihrem Namespace auf, indem Sie kubectl get pvc -n NAMESPACE ausführen.
    • NAMESPACE: Der Namespace der Bereitstellung, z. B. spanner-ns.
  3. Löschen Sie den Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Ersetzen Sie POD_NAME durch den Namen des Server-Pods, den Sie löschen möchten, z. B. spanner-a-1.

    Kubernetes startet automatisch einen neuen Server in einem Ersatz-Pod und hängt einen neuen PVC an.

  4. Fügen Sie der Bereitstellung den neuen Server hinzu:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Prüfen Sie, ob die Argumente mit dem neuen Pod-Endpunkt und der neuen Zone übereinstimmen, z. B. mit spanner-a-1.pod.spanner-ns:15000 als Endpunkt und us-central1-a als Zone.

VM

So ersetzen Sie einen Stammserver in einem VM-Deployment:

  1. Löschen Sie den Server, den Sie ersetzen möchten:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • SERVER_ENDPOINT: Die Server-IP-Adresse oder der Hostname und Port, z. B. spanner-vm-1.example.com:15000. Um die Serverendpunkte zu finden, listen Sie die Bereitstellungsserver auf, indem Sie spanner deployment servers list --zone=ZONE ausführen.
    • ZONE: Die Zone, die den Server enthält, z. B. us-central1-a.

    Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.

    So verfolgen Sie den Fortschritt des Löschvorgangs:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Warten Sie, bis der Befehl einen NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.

  2. Stellen Sie den Server mit sauberem Speicher neu bereit, wie unter Bereitstellung für Spanner Omni auf VMs erstellen beschrieben:

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    Ersetzen Sie Folgendes:

    • HOSTNAME: Der auflösbare FQDN oder Hostname der neuen VM, z. B. spanner-vm-1.example.com.
    • ZONE: Die Zielzone, z. B. us-central1-a.
    • BASE_DIR: Der Pfad, in dem Daten gespeichert werden, z. B. ./span-dir.
  3. Fügen Sie der Bereitstellung den neuen Server hinzu:

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    Prüfen Sie, ob die Argumente mit den Parametern des neuen Servers übereinstimmen, z. B. mit spanner-vm-1.example.com:15000 als Endpunkt und us-central1-a als Zone.

Nicht-Root-Server ersetzen

Wenn Sie einen Nicht-Root-Server ersetzen möchten, wählen Sie den Tab für Ihre Umgebung aus:

Kubernetes

So ersetzen Sie einen Nicht-Root-Server in einem Kubernetes-Deployment:

  1. Löschen Sie den Server, den Sie ersetzen möchten:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • SERVER_ENDPOINT: Der Server-Pod-Endpunkt, der gelöscht werden soll, im Format SERVER.pod.NAMESPACE:PORT, z. B. spanner-a-4.pod.spanner-ns:15000. Wenn Sie die Serverendpunkte in Ihrer Bereitstellung aufrufen möchten, listen Sie die Bereitstellungsserver mit dem Befehl spanner deployment servers list --zone=ZONE auf.
    • ZONE: Die Zone, die den Server enthält, z. B. us-central1-a.

    Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.

    So verfolgen Sie den Fortschritt des Löschvorgangs:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Warten Sie, bis der Befehl einen NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.

  2. Löschen Sie den Anspruch auf nichtflüchtiges Volume (PersistentVolumeClaim, PVC) für den Pod, auf dem der Server gehostet wird:

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

    Ersetzen Sie Folgendes:

    • DATA_VOLUME_NAME: Der Name des Daten-Volumes, z. B. data-volume-spanner-a-4. Um den Namen des Datenvolumes zu finden, listen Sie die PVCs in Ihrem Namespace auf, indem Sie kubectl get pvc -n NAMESPACE ausführen.
    • NAMESPACE: Der Namespace der Bereitstellung, z. B. spanner-ns.
  3. Löschen Sie den Pod:

    kubectl delete pod POD_NAME -n NAMESPACE
    

    Ersetzen Sie POD_NAME durch den Namen des Server-Pods, den Sie löschen möchten, z. B. spanner-a-4.

    Kubernetes startet automatisch einen neuen Server in einem Ersatz-Pod und hängt einen neuen PVC an. Spanner Omni registriert den neuen Nicht-Root-Server automatisch in der Bereitstellung.

VM

So ersetzen Sie einen Nicht-Root-Server in einer VM-Bereitstellung:

  1. Löschen Sie den Server, den Sie ersetzen möchten:

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • SERVER_ENDPOINT: Die Server-IP-Adresse oder der Hostname und Port, z. B. spanner-vm-4.example.com:15000. Um die Serverendpunkte zu finden, listen Sie die Bereitstellungsserver auf, indem Sie spanner deployment servers list --zone=ZONE ausführen.
    • ZONE: Die Zone, die den Server enthält, z. B. us-central1-a.

    Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.

    So verfolgen Sie den Fortschritt des Löschvorgangs:

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    Warten Sie, bis der Befehl einen NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.

  2. Stellen Sie den Nicht-Root-Server mit sauberem Speicher neu bereit, wie unter Nicht-Root-Server hinzufügen beschrieben. Der Server wird der Bereitstellung automatisch hinzugefügt.

Nächste Schritte