Auf dieser Seite wird beschrieben, wie sich Ihr Cluster in Memorystore for Redis Cluster während der Skalierung verhält.
Sie können die Kapazität für Ihren Cluster auf folgende Weise skalieren:
Sie können die Anzahl der Shards für Ihren Cluster ändern. Das ist horizontale Skalierung. Sie können einen Cluster auf eine der folgenden Arten horizontal skalieren:
Horizontale Skalierung: Erhöhen Sie die Kapazität Ihres Clusters, um ihm mehr Arbeitsspeicher und Rechenleistung zur Verfügung zu stellen, damit er ein größeres Datenvolumen oder mehr Traffic verarbeiten kann. Die Kapazität Ihres Clusters wird durch die Anzahl der Shards im Cluster bestimmt.
Durch die horizontale Skalierung Ihres Clusters kann Ihre Anwendung eine erhöhte Nachfrage ohne Leistungseinbußen bewältigen. Um einen Cluster zu skalieren, fügen Sie dem Cluster Shards hinzu.
Herunterskalieren: Die Kapazität Ihres Clusters wird reduziert, wodurch sowohl die Rechenleistung als auch die Menge an Arbeitsspeicher, die zum Speichern von Daten zur Verfügung steht, abnimmt. Das ist der Fall, wenn der Datenbedarf Ihrer Anwendung sinkt und Sie die Ressourcennutzung reduzieren müssen, um Kosten zu sparen. Wenn Sie einen Cluster verkleinern möchten, müssen Sie die Anzahl der Shards im Cluster verringern.
Sie können den Knotentyp für Ihren Cluster ändern. Das ist die vertikale Skalierung. Sie haben folgende Möglichkeiten, einen Cluster vertikal zu skalieren:
- Hochskalieren: Erhöhen Sie die Kapazität Ihres Clusters. Die Kapazität Ihres Clusters wird durch den Knotentyp des Clusters bestimmt. Wenn Sie einen Cluster hochskalieren möchten, ändern Sie den Knotentyp in einen größeren Knotentyp. Sie können beispielsweise Ihren Cluster von einem
redis-standard-small-Knotentyp auf einenredis-highmem-medium-Knotentyp hochskalieren. Herunterskalieren: Reduzieren Sie die Kapazität Ihres Clusters. Wenn Sie einen Cluster herunterskalieren möchten, ändern Sie den Knotentyp in einen kleineren Knotentyp. Sie können beispielsweise Ihren Cluster von einem
redis-highmem-medium-Knotentyp auf einenredis-standard-small-Knotentyp herunterskalieren.
- Hochskalieren: Erhöhen Sie die Kapazität Ihres Clusters. Die Kapazität Ihres Clusters wird durch den Knotentyp des Clusters bestimmt. Wenn Sie einen Cluster hochskalieren möchten, ändern Sie den Knotentyp in einen größeren Knotentyp. Sie können beispielsweise Ihren Cluster von einem
Auswirkungen der Skalierung
Die Verfügbarkeit Ihres Clusters wird durch einen Skalierungsvorgang nicht beeinträchtigt. Wenn Sie jedoch die Anzahl der Shards in Ihrem Cluster ändern, gleicht Memorystore for Redis Cluster den Schlüsselbereich des Clusters neu aus. Dies kann während des Skalierungsvorgangs zu einer erhöhten Latenz führen.
Die Auswirkungen der vertikalen Skalierung Ihres Clusters durch Ändern des Knotentyps sind ä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 Shard-Anzahl für Ihren Cluster aktualisieren, haben aber nicht genügend verfügbaren Arbeitsspeicher für den Knotentyp
redis-shared-core-nanofür Ihren Cluster.Um dieses Problem zu beheben, können Sie entweder Ihren Cluster hochskalieren oder Speicher auf den Knoten Ihres Clusters freigeben. Um Speicherplatz freizugeben, gehen Sie wie folgt vor:
- Verbindung zu einem Cluster herstellen
- Verwenden Sie den Befehl
gcloud redis clusters describe, um Details zum Cluster abzurufen, einschließlich der IP-Adresse und Portnummer. - Notieren Sie sich die IP-Adresse und die Portnummer des Clusters.
Verwenden Sie den folgenden Befehl, um Informationen zu den Knoten des Clusters 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, der nicht genügend freien Speicherplatz hat. 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.Wenn Sie Speicherplatz für den Knoten freigeben möchten, löschen Sie einige der Schlüssel des Knotens.
Geben Sie den Befehl
info memorynoch einmal ein. In der Ausgabe ist der Wert des Parametersused_memorykleiner.Dividieren 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 für alle anderen Knoten, auf denen nicht genügend freier Speicherplatz vorhanden ist.
Sie haben auf eine geringere Anzahl von Shards skaliert, die nicht die Kapazität haben, alle Schlüssel aufzunehmen, die in Memorystore for Redis Cluster im ursprünglichen Cluster gespeichert sind. Um dieses Problem zu beheben, müssen Sie die Anzahl der Shards so erhöhen, dass alle gespeicherten Schlüssel darin Platz finden. Weitere Informationen zum Erhöhen der Anzahl der Shards für Ihren Cluster 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 Ihren Cluster 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 Ihren Cluster während eines Zeitraums mit hohem Schreibdruck skaliert, z. B. während eines Lasttests. Um dieses Problem zu beheben, sollten Sie die Skalierung in Zeiten mit geringem Cluster-Traffic vornehmen.
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 Speicherplatz, um den Schlüssel zu unterstützen. Sie können Ihren Cluster nicht aktualisieren. Um dieses Problem zu beheben, verringern Sie die Größe des Schlüssels auf unter 128 MB. Wiederholen Sie dann den Updatevorgang.
Die Slotnummer, die einem Knoten eines Clusters gehört, ist nicht bekannt, nur der Slotbereich. Memorystore for Redis Cluster gibt eine Fehlermeldung zurück. Reduzieren Sie in diesem Fall die Größe des Schlüssels und versuchen Sie es noch einmal.
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 verringern, indem Sie ihn auf die ursprüngliche, höhere Anzahl von Shards herunterskalieren.
Best Practices
Um die Kapazität Ihres Clusters zu skalieren und die Geschwindigkeit und Zuverlässigkeit der Skalierung zu erhöhen, sollten Sie den Cluster nach Möglichkeit in Zeiten mit geringem Traffic skalieren. Informationen zum Überwachen des Clustertraffics finden Sie unter Cluster überwachen.