Auf dieser Seite wird beschrieben, wie sich Ihre Memorystore for Redis Cluster-Instanz während der Skalierung verhält.
Sie können die Kapazität für Ihre Instanz auf folgende Weise skalieren:
Sie können die Anzahl der Shards für Ihre Instanz ändern. Das ist horizontale Skalierung. Sie können eine Instanz auf eine der folgenden Arten horizontal skalieren:
Horizontale Skalierung: Sie erhöhen die Kapazität Ihrer Instanz, wodurch die Instanz mehr Arbeitsspeicher und Rechenleistung erhält, 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 horizontale Skalieren Ihrer Instanz kann Ihre Anwendung eine erhöhte Nachfrage ohne Leistungseinbußen bewältigen. Wenn Sie eine Instanz horizontal skalieren möchten, fügen Sie der Instanz Shards hinzu.
Herunterskalieren: Sie reduzieren die Kapazität Ihrer Instanz, wodurch sowohl die Rechenleistung als auch die Menge des verfügbaren Arbeitsspeichers zum Speichern von Daten verringert werden. Das ist der Fall, wenn der Datenbedarf Ihrer Anwendung sinkt und Sie den Ressourcenverbrauch senken müssen, um Kosten zu sparen. Wenn Sie eine Instanz herunterskalieren möchten, müssen Sie die Anzahl der Shards in der Instanz verringern.
Sie können den Knotentyp für Ihre Instanz ändern. Das ist vertikale Skalierung. Sie können eine Instanz auf eine der folgenden Arten vertikal skalieren:
- Vertikal skalieren: 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. Sie können Ihre Instanz beispielsweise von einem
redis-standard-small-Knotentyp auf einenredis-highmem-medium-Knotentyp hochskalieren. Herunterskalieren: Reduzieren Sie die Kapazität Ihrer Instanz. Dazu ändern Sie den Knotentyp in einen kleineren Knotentyp, z. B. von
redis-highmem-mediuminredis-standard-small.
- Vertikal skalieren: 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. Sie können Ihre Instanz beispielsweise von einem
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 Schlüsselbereich der Instanz neu aus. Dies kann während des Skalierungsvorgangs zu einer erhöhten Latenz führen.
Die Auswirkungen der vertikalen Skalierung Ihrer Instanz durch Ändern des Knotentyps sind ähnlich wie bei einem Wartungsvorgang.
Fehlerszenarien
Wenn beim Skalieren ein Fehler auftritt, liegt das wahrscheinlich an einem der folgenden Szenarien:
Sie möchten die Anzahl der Shards für Ihre Instanz aktualisieren, haben aber nicht genügend kostenlosen Arbeitsspeicher für den Knotentyp
redis-shared-core-nanoIhrer Instanz.Um dieses Problem zu beheben, können Sie entweder Ihre Instanz hochskalieren oder Speicherplatz auf den Knoten Ihrer Instanz freigeben. So geben Sie Speicherplatz kostenlos:
- Verbindung zu einer Memorystore for Redis-Clusterinstanz herstellen
- Verwenden Sie den Befehl
gcloud redis clusters describe, um Details zur Instanz abzurufen, einschließlich der IP-Adresse und Portnummer. - Notieren Sie sich die IP-Adresse und die Portnummer der Instanz.
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.
Notieren Sie sich die IP-Adresse und die Portnummer eines Knotens, auf dem nicht genügend freier Speicherplatz vorhanden ist. Die ID dieses Knotens stimmt mit einer ID überein, die im Fehler angezeigt wird.
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.
Geben Sie bei der Eingabeaufforderung den Befehl
info memoryein.In der Ausgabe werden Werte für die Parameter
used_memoryundmaxmemoryangezeigt.used_memorygibt an, wie viel Arbeitsspeicher der Knoten verwendet, undmaxmemory, wie viel Arbeitsspeicher für den Knoten verfügbar ist.Dividieren Sie den Wert des Parameters
used_memorydurch den Wert des Parametersmaxmemoryund prüfen Sie, ob der Quotient größer als 98 % ist.Löschen Sie einige der Schlüssel des Knotens, um Speicherplatz für den Knoten freizugeben.
Geben Sie den Befehl
info memorynoch einmal ein. In der Ausgabe ist der Wert des Parametersused_memorykleiner.Teilen Sie den Wert des Parameters
used_memorydurch den Wert des Parametersmaxmemoryund prüfen Sie, ob der Quotient jetzt unter 98 % liegt. Wenn nicht, löschen Sie weitere Schlüssel.Wiederholen Sie die Schritte 4 bis 11 dieses Verfahrens für alle anderen Knoten, die nicht genügend freien Speicherplatz haben.
Sie haben die Anzahl der Shards auf einen kleineren Wert skaliert, der nicht die Kapazität hat, alle Schlüssel zu speichern, die Memorystore for Redis Cluster in der ursprünglichen Instanz speichert. Um dieses Problem zu beheben, müssen Sie die Anzahl der Shards auf einen größeren Wert skalieren, der alle gespeicherten Schlüssel aufnehmen kann. 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 empfiehlt Memorystore for Redis Cluster einen Knotentyp für die vertikale Herunterskalierung.
Sie haben den Knotentyp für Ihre Instanz aktualisiert und entweder die Standardeinstellungen 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 das Problem zu beheben, müssen Sie die Einstellungen manuell so ändern, dass sie für den neuen Knotentyp gültig sind.
Sie haben Ihre Instanz während eines Zeitraums mit hoher Schreiblast skaliert (z. B. während eines Lasttests). Um dieses Problem zu beheben, sollten Sie die Skalierung in Zeiten mit geringem Instanz-Traffic durchführen.
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 unter 128 MB, um das Problem zu beheben. Wiederholen Sie dann den Updatevorgang.
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. Wenn dies der Fall ist, verkleinern Sie die Größe des Schlüssels und wiederholen Sie den Aktualisierungsvorgang.
Sie haben die Kapazität Ihres Clusters erhöht, indem Sie ihn auf eine kleinere Anzahl von Shards skaliert haben. Memorystore for Redis Cluster hat jedoch nicht genügend Arbeitsspeicher, um diese Anfrage zu verarbeiten. Um dieses Problem zu beheben, müssen Sie die Kapazität Ihres Clusters reduzieren, indem Sie auf die ursprüngliche, größere Anzahl von Shards hochskalieren.
Best Practices
Um die Kapazität für Ihre Instanz zu skalieren und die Geschwindigkeit und Zuverlässigkeit der Skalierung zu erhöhen, sollten Sie die Skalierung nach Möglichkeit in Zeiten mit geringem Traffic durchführen. Informationen zum Überwachen von Instanz-Traffic finden Sie unter Cluster überwachen.