Asynchron replizierte Lesepoolinstanz mit dem RPM-Orchestrator erstellen

Wählen Sie eine Dokumentationsversion aus:

Um den Lesedurchsatz und die Verfügbarkeit Ihres Datenbankclusters zu erhöhen, können Sie eine asynchrone Lesepoolinstanz erstellen. Eine Lesepoolinstanz bietet einen schreibgeschützten Klon Ihrer Datenbankinstanz und sorgt so für Datenzugriff, auch wenn Ihre Datenbankinstanz nicht verfügbar ist.

Sie können die Instanzkonfiguration des Lesepools in der Manifestdatei der Datenbankinstanz definieren. Für jede Lesepoolinstanz muss eine eindeutige Manifestdatei erstellt werden. Sie können mehrere Lesepoolinstanzen bereitstellen, mit insgesamt bis zu 20 Lesepoolknoten pro Datenbankcluster.

Jede Lesepoolinstanz belegt genauso viel Speicherplatz wie die Instanz, die sie repliziert.

Asynchrone replizierte Lesepoolinstanz erstellen

So erstellen Sie eine asynchrone replizierte AlloyDB Omni-Lesepoolinstanz:

  1. Erstellen Sie das Datenbankinstanzmanifest, um den Instanztyp des Lesepools zu definieren:

    DBInstance:
      metadata:
        name: READ_POOL_INSTANCE_NAME
      spec:
        instanceType: ReadPool
        nodeCount: READ_POOL_NODE_COUNT
        readPoolPort: READ_POOL_PORT
        dbcParent:
          name: DB_CLUSTER_NAME
    

    Ersetzen Sie Folgendes:

    • READ_POOL_INSTANCE_NAME: Ein Name für diese Ressource, z. B. read-pool-instance-1.

    • DB_CLUSTER_NAME: Der Name des Datenbankclusters, zu dem die Instanz gehört.

    • READ_POOL_NODE_COUNT: (Optional) Die Anzahl der Knoten in einer Lesepoolinstanz. Dadurch wird die gesamte Rechenkapazität der Instanz bestimmt. Pro Datenbankcluster können maximal 20 Lesepoolknoten vorhanden sein.

    • READ_POOL_PORT: (Optional) Der Port auf dem Load Balancer (VIP), über den der Lesetraffic an diese Lesepoolinstanz weitergeleitet werden soll. Die Standardeinstellung ist 5434.

  2. Wenden Sie die DBInstance-Spezifikation an.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"

    Ersetzen Sie die folgenden Variablen:

    • DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

    • DBINSTANCE_SPECIFICATION: Pfad zur DBInstance-Manifestdatei, die Sie im vorherigen Schritt erstellt haben.

    Ansible

    ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \
          -e resource_spec="DBINSTANCE_SPECIFICATION"

    Ersetzen Sie die folgenden Variablen:

    • DBINSTANCE_PLAYBOOK: Pfad zum Playbook, das Sie für Ihre DBInstance-Spezifikation erstellt haben.

    • DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

    • DBINSTANCE_SPECIFICATION: Pfad zur DBInstance-Manifestdatei, die Sie im vorherigen Schritt erstellt haben.

Instanzstatus prüfen

Wenn Sie die Verfügbarkeit der Lesepoolinstanz prüfen möchten, rufen Sie den Status der DBInstance-Ressource ab:

alloydbctl

alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml

Ersetzen Sie die folgenden Variablen:

  • DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

  • READ_POOL_INSTANCE_NAME: Der Name der Lesepoolinstanz, die Sie im Manifest angegeben haben.

Ansible

Führen Sie das Playbook google.alloydbomni_orchestrator.status aus. Weitere Informationen finden Sie unter Clusterstatus abrufen.

ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
      -e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"

Ersetzen Sie die folgenden Variablen:

  • STATUS_PLAYBOOK_PATH: Pfad zum Playbook, das Sie zum Abrufen des Clusterstatus erstellt haben.

  • DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.

  • READ_POOL_INSTANCE_NAME: Der Name der Lesepoolinstanz, die Sie im Manifest angegeben haben.

Prüfen Sie im Abschnitt .status.conditions der Antwort Folgendes:

  • Wenn der Status der Bedingung Available true ist, kann die Lesepoolinstanz Anfragen verarbeiten, aber möglicherweise keine Daten aus Ihrer Datenbankinstanz replizieren.
  • Wenn der Status der Bedingung Streaming true ist, ist die Lesepoolinstanz mit Ihrer Datenbankinstanz verbunden und streamt Änderungen aktiv.

Wenn Ihre Datenbankinstanz nicht erreichbar ist, werden die Anfragen weiterhin von der Lesepoolinstanz verarbeitet. In diesem Fall ist der Verfügbarkeitsstatus true und der Streamingstatus false.

Nachdem Sie die Lesepoolinstanz eingerichtet haben, sind alle Einfügungen, Aktualisierungen und Löschungen von Zeilen in Ihrer primären Datenbankinstanz in der Lesepoolinstanz lesbar.

Verbindung zur Lesepoolinstanz herstellen

Sobald die Lesepoolinstanz Available ist, konfiguriert der Load Balancer automatisch ein dediziertes schreibgeschütztes Frontend, das den Traffic an die Lesepoolknoten weiterleitet.

Den Verbindungsendpunkt finden Sie in der DBInstance-Statusausgabe unter status.endpoints. Der schreibgeschützte Endpunkt, z. B. VIP_IP:5434, verteilt eingehende schreibgeschützte Abfragen auf alle fehlerfreien Knoten im Lesepool.

Verwenden Sie das psql-Clienttool mit der IP-Adresse und dem Port aus dem Endpunkt, um eine Verbindung zur Lesepoolinstanz herzustellen:

psql -h VIP_IP -p READ_POOL_PORT -U postgres

Ersetzen Sie Folgendes:

  • VIP_IP: Die IP-Adresse des schreibgeschützten Endpunkts.
  • READ_POOL_PORT: Der Port des schreibgeschützten Endpunkts.

Wenn Sie versuchen, Schreibvorgänge für diesen Endpunkt auszuführen, schlagen die Vorgänge sofort mit einem Fehler fehl, der angibt, dass Sie keine Einfügungen in einer schreibgeschützten Transaktion ausführen können.

Lesepoolinstanz verwalten

Der RPM-Orchestrator unterstützt die dynamische Skalierung und Löschung von Lesepoolinstanzen ohne Cluster-Ausfallzeiten.

Lesepoolinstanz skalieren

Wenn Sie Knoten zu einem vorhandenen Lesepool hinzufügen oder daraus entfernen möchten, aktualisieren Sie das Feld nodeCount in der DBInstance-Manifestdatei.

  1. Öffnen Sie die DBInstance-Manifestdatei und ändern Sie den Wert von nodeCount in die ausgewählte Anzahl von Knoten.

  2. Wenden Sie das aktualisierte Manifest mit der bevorzugten Bereitstellungsmethode an, entweder mit dem Befehl alloydbctl apply oder mit Ihrem Ansible-Playbook.

Der RPM-Orchestrator stellt die Lesereplikatknoten automatisch bereit oder entfernt sie. Der Load Balancer wird dynamisch aktualisiert, um den Traffic an die verfügbaren Knoten im Pool weiterzuleiten.

Lesepoolinstanz löschen

Verwenden Sie den Befehl alloydbctl delete, um eine Lesepoolinstanz zu löschen:

alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAME

Ersetzen Sie READ_POOL_INSTANCE_NAME durch den Namen der Lesepoolinstanz, die Sie löschen möchten.

Wenn Sie eine Lesepoolinstanz löschen, beendet der Orchestrator den Lesereplikatsdienst und bereinigt die Knoten. Der Load Balancer entfernt die Weiterleitung automatisch, ohne dass es zu Deadlocks bei der Hochstufung kommt oder der Traffic zu Ihren primären oder Standby-Instanzen beeinträchtigt wird.