Instanzkapazität skalieren

Auf dieser Seite wird beschrieben, wie sich Memorystore for Redis-Clusterinstanzen während der Skalierung verhalten.

Sie können die Kapazität Ihrer Instanz auf folgende Weise skalieren:

  • Sie können die Anzahl der Shards für Ihre Instanz ändern. Das ist die horizontale Skalierung. Sie können eine Instanz auf eine der folgenden Arten horizontal skalieren:

    • Hochskalieren: Erhöhen Sie die Kapazität Ihrer Instanz. Dadurch erhält die Instanz mehr Arbeitsspeicher und Rechenleistung, um ein größeres Daten- oder Trafficvolumen zu verarbeiten. Die Kapazität Ihrer Instanz wird durch die Anzahl der Shards in Ihrer Instanz bestimmt.

      Durch das Hochskalieren Ihrer Instanz kann Ihre Anwendung eine erhöhte Nachfrage ohne Leistungseinbußen bewältigen. Wenn Sie eine Instanz hochskalieren möchten, fügen Sie der Instanz Shards hinzu.

    • Herunterskalieren: Reduzieren Sie die Kapazität Ihrer Instanz. Dadurch werden sowohl die Rechenleistung als auch die Menge des verfügbaren Arbeitsspeichers zum Speichern von Daten verringert. Dies geschieht, wenn der Datenbedarf Ihrer Anwendung sinkt und Sie die Ressourcennutzung reduzieren müssen, um Kosten zu sparen. Wenn Sie eine Instanz herunterskalieren möchten, reduzieren Sie die Anzahl der Shards in der Instanz.

  • Sie können den Knotentyp für Ihre Instanz ändern. Das ist die vertikale Skalierung. Sie können eine Instanz auf eine der folgenden Arten vertikal skalieren:

    • Hochskalieren: Erhöhen Sie die Kapazität Ihrer Instanz. Die Kapazität Ihrer Instanz wird durch den Knotentyp Ihrer Instanz bestimmt. Wenn Sie eine Instanz hochskalieren möchten, ändern Sie den Knotentyp in einen größeren Knotentyp. Skalieren Sie Ihre Instanz beispielsweise von einem redis-standard-small-Knotentyp auf einen redis-highmem-medium-Knotentyp hoch.
    • Herunterskalieren: Reduzieren Sie die Kapazität Ihrer Instanz. Wenn Sie eine Instanz herunterskalieren möchten, ändern Sie den Knotentyp in einen kleineren Knotentyp. Skalieren Sie Ihre Instanz beispielsweise von einem redis-highmem-medium-Knotentyp auf einen redis-standard-small-Knotentyp herunter.

Auswirkungen der Skalierung

Während eines Skalierungsvorgangs wird die Verfügbarkeit Ihrer Instanz nicht beeinträchtigt. Wenn Sie jedoch die Anzahl der Shards in Ihrer Instanz ändern, gleicht Memorystore for Redis Cluster den Keyspace der Instanz neu aus. Dies kann während des Skalierungsvorgangs zu einer erhöhten Latenz führen.

Außerdem sind die Auswirkungen der vertikalen Skalierung Ihrer Instanz durch Ändern des Knotentyps ähnlich wie bei einem Wartungsvorgang.

Fehlerszenarien

Wenn während des Skalierungsvorgangs ein Fehler auftritt, liegt das wahrscheinlich an einem der folgenden Szenarien:

  • Sie möchten die Anzahl der Shards für Ihre Instanz aktualisieren, aber Sie haben nicht genügend kostenlosen Arbeitsspeicher für den redis-shared-core-nano-Knotentyp für Ihre Instanz.

    Um dieses Problem zu beheben, können Sie entweder Ihre Instanz hochskalieren oder Arbeitsspeicher von den Knoten von Ihrer Instanz freigeben. So geben Sie Arbeitsspeicher kostenlos:

    1. Stellen Sie eine Verbindung zu einer Memorystore for Redis-Clusterinstanz her.
    2. Verwenden Sie den gcloud redis clusters describe Befehl, um Details zur Instanz abzurufen, einschließlich der IP-Adresse und Port nummer.
    3. Notieren Sie sich die IP-Adresse und Portnummer der Instanz.
    4. Verwenden Sie den folgenden Befehl, um Informationen zu den Knoten der Instanz abzurufen:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      Ersetzen Sie IP_ADDRESS und PORT_NUMBER durch die Werte, die Sie im vorherigen Schritt notiert haben.

    5. Notieren Sie sich die IP-Adresse und Portnummer eines Knotens, der nicht genügend freien Speicherplatz hat. Die ID dieses Knotens entspricht einer ID, die im Fehler angezeigt wird.

    6. Verwenden Sie den folgenden Befehl, um eine Verbindung zu diesem Knoten herzustellen:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      Ersetzen Sie IP_ADDRESS und PORT_NUMBER durch die Werte die Sie im vorherigen Schritt notiert haben.

    7. Geben Sie an der Eingabeaufforderung den Befehl info memory ein.

      In der Ausgabe werden Werte für die Parameter used_memory und maxmemory angezeigt. used_memory gibt an, wie viel Arbeitsspeicher der Knoten verwendet, und maxmemory gibt an, wie viel Arbeitsspeicher für den Knoten verfügbar ist.

    8. Teilen Sie den Wert des Parameters used_memory durch den Wert des Parameters maxmemory und prüfen Sie, ob der Quotient größer als 98 % ist.

    9. Löschen Sie einige der Schlüssel des Knotens, um Speicherplatz für den Knoten freizugeben.

    10. Geben Sie den Befehl info memory noch einmal ein. In der Ausgabe ist der Wert des Parameters used_memory kleiner.

    11. Teilen Sie den Wert des Parameters used_memory durch den Wert des Parameters maxmemory und prüfen Sie, ob der Quotient jetzt kleiner als 98 % ist. Wenn nicht, löschen Sie weitere Schlüssel.

    12. Wiederholen Sie die Schritte 4 bis 11 für alle anderen Knoten, die nicht genügend freien Speicherplatz haben.

  • Sie haben auf eine kleinere Anzahl von Shards skaliert, die nicht die Kapazität haben, alle Schlüssel zu speichern, die Memorystore for Redis Cluster in der ursprünglichen Instanz speichert. Skalieren Sie auf eine größere Anzahl von Shards, die alle gespeicherten Schlüssel aufnehmen können, um dieses Problem zu beheben. Weitere Informationen zum Erhöhen der Anzahl der Shards für Ihre Instanz finden Sie unter Anzahl der Shards skalieren.

  • Sie haben auf einen kleineren Knotentyp skaliert, der nicht die Kapazität hat, alle Daten zu speichern, die Memorystore for Redis Cluster im ursprünglichen Knotentyp speichert. In diesem Fall schlägt Memorystore for Redis Cluster einen Knotentyp vor, auf den Sie vertikal herunterskalieren können.

  • Sie haben den Knotentyp für Ihre Instanz aktualisiert und entweder die Standard einstellungen für den ursprünglichen Knotentyp überschrieben oder diese Einstellungen wurden bereits überschrieben. Der neue, skalierte Knotentyp unterstützt jedoch entweder die Werte für die Standardeinstellungen nicht oder die Einstellungen sind für den Knotentyp ungültig. In diesem Fall gibt Memorystore for Redis Cluster einen Fehler zurück. Um dieses Problem zu beheben, ändern Sie die Einstellungen manuell, damit sie für den neuen Knotentyp gültig sind.

  • Sie haben Ihre Instanz während eines Zeitraums mit hohem Schreibdruck skaliert (z. B. während eines Lasttests). Skalieren Sie in Zeiten mit geringem Instanz-Traffic, um dieses Problem zu beheben.

  • Sie haben einen Slot mit einem großen Schlüssel und möchten diesen Schlüssel zu einem anderen Knoten migrieren. Dieser Knoten hat jedoch nicht genügend Arbeitsspeicher, um den Schlüssel zu unterstützen. Sie können Ihren Cluster nicht aktualisieren. Reduzieren Sie die Größe des Schlüssels auf weniger als 128 MB, um dieses Problem zu beheben. Wiederholen Sie dann den Aktualisierungsvorgang.

  • Die Slotnummer, die einem Knoten eines Clusters gehört, ist nicht bekannt, sondern nur der Slotbereich. Memorystore for Redis Cluster gibt eine Fehlermeldung zurück. Reduzieren Sie in diesem Fall die Größe des Schlüssels und wiederholen Sie den Aktualisierungsvorgang.

  • Sie haben die Kapazität Ihres Clusters erhöht, indem Sie auf eine kleinere Anzahl von Shards hochskaliert haben. Memorystore for Redis Cluster hat jedoch nicht genügend Arbeitsspeicher, um diese Anfrage zu verarbeiten. Reduzieren Sie die Kapazität Ihres Clusters, indem Sie auf die ursprüngliche, größere Anzahl von Shards herunterskalieren, um dieses Problem zu beheben.

Best Practices

Um die Kapazität Ihrer Instanz zu skalieren und die Geschwindigkeit und Zuverlässigkeit der Skalierung Ihrer Instanz zu erhöhen, sollten Sie sie nach Möglichkeit in Zeiten mit geringem Traffic skalieren. Informationen zum Überwachen von Instanz-Traffic finden Sie unter Cluster beobachten.