Autoscaling
Auf dieser Seite wird erläutert, wie das Autoscaling funktioniert. Bevor Sie diese Seite lesen, sollten Sie sich mit den Informationen unter Übersicht über Bigtable und Instanzen, Cluster und Knoten vertraut gemacht haben.
Instanzen in Bigtable sind Container für Cluster, bei denen es sich um standortspezifische Ressourcen handelt, die Anfragen verarbeiten. Jeder Cluster hat einen oder mehrere Knoten. Das sind Rechenressourcen, die zum Verwalten Ihrer Daten verwendet werden. Wenn Sie einen Cluster in einer Instanz erstellen, wählen Sie entweder manuelle Knotenzuweisung oder Autoscaling aus.
Bei der manuellen Knotenzuweisung bleibt die Anzahl der Knoten im Cluster konstant, bis Sie sie ändern. Wenn das Autoscaling aktiviert ist, überwacht Bigtable kontinuierlich den Cluster und passt die Anzahl der Knoten im Cluster bei Bedarf automatisch an. Autoscaling funktioniert sowohl in HDD- als auch in SSD-Clustern in allen Bigtable-Regionen.
Sie können das Autoscaling in der Google Cloud Console über gcloud
oder mit der Cloud Bigtable-Clientbibliothek für Java konfigurieren.
Einsatzmöglichkeiten für Autoscaling
Wir empfehlen in den meisten Fällen, die automatische Skalierung zu aktivieren. Das Autoscaling bietet unter anderem folgende Vorteile:
- Kosten: Mit Autoscaling können Sie Kosten optimieren, da Bigtable die Anzahl der Knoten in Ihrem Cluster nach Möglichkeit reduziert. Dadurch können Sie eine Überdimensionierung vermeiden.
- Leistung: Mit Autoscaling kann Bigtable einem Cluster automatisch Knoten hinzufügen, wenn sich eine Arbeitslast ändert oder die Datenspeicheranforderungen zunehmen. Dadurch können die Leistungsziele für Arbeitslasten eingehalten werden, indem dafür gesorgt wird, dass der Cluster genug Knoten hat, um die Ziel-CPU-Auslastung zu erreichen und Speicheranforderungen zu erfüllen.
- Automatisierung: Autoscaling vereinfacht die Verwaltung. Sie müssen die Clustergröße nicht manuell überwachen und skalieren oder eine Anwendung für diese Aufgaben schreiben, da sie vom Bigtable-Dienst für Sie erledigt werden.
Autoscaling allein funktioniert möglicherweise nicht gut für die folgenden Arbeitslasttypen, da Bigtable zwar schnell Knoten hinzufügt, wenn der Traffic zunimmt, es jedoch einige Zeit dauern kann, bis die zusätzlichen Knoten ausbalanciert sind.
- Stoßweiser Traffic
- Plötzliche Batcharbeitslasten
Wenn Ihre Traffic-Spitzen vorhersehbar sind oder regelmäßig geplant sind, können Sie das Autoscaling verwenden und die Einstellungen vor den geplanten Bursts anpassen. Weitere Informationen finden Sie unter Verzögerung beim Ausbalancieren von Knoten.
Funktionsweise von Autoscaling
Autoscaling ist der Prozess der automatischen Skalierung bzw. des Änderns der Größe eines Clusters, indem Knoten hinzugefügt oder entfernt werden. Wenn Sie das Autoscaling aktivieren, passt Bigtable automatisch die Größe Ihres Clusters an. Wenn die Arbeitslast oder der Speicherbedarf Ihres Clusters schwankt, skaliert Bigtable entweder hoch durch Hinzufügen von Knoten zum Cluster oder skaliert herunter, indem Knoten aus dem Cluster entfernt werden.
Das Bigtable-Autoscaling bestimmt die Anzahl der erforderlichen Knoten anhand der folgenden Dimensionen:
- CPU-Auslastungsziel
- Speicherauslastungsziel
- Mindestanzahl von Knoten
- Höchstanzahl von Knoten
Jede Skalierungsdimension generiert eine empfohlene Knotenanzahl. Bigtable verwendet automatisch die höchste Knotenanzahl. Wenn Ihr Cluster beispielsweise 10 Knoten benötigt, um das Ziel der Speicherauslastung zu erreichen, aber 12, um das Ziel für die CPU-Auslastung zu erreichen, skaliert Bigtable den Cluster auf 12 Knoten.
Wenn sich die Anzahl der Knoten ändert, optimiert Bigtable kontinuierlich den Speicher. Dabei werden Daten bzw. der Traffic gleichmäßig auf die Knoten verteilt, um sicherzustellen, dass kein Knoten überlastet wird.
Nachdem ein Cluster hochskaliert wurde, gleicht Bigtable die Knoten in Ihrem Cluster automatisch neu aus, um eine optimale Leistung zu erzielen. Alle Anfragen erreichen den Cluster weiterhin, während die Skalierung und der Ausgleich laufen. Weitere Informationen finden Sie unter Skalierungseinschränkungen.
Wenn ein Cluster bis zur maximalen Anzahl von Knoten hochskaliert wurde und das CPU-Auslastungsziel überschritten wird, können Anfragen eine hohe Latenz aufweisen oder fehlschlagen. Wenn ein Cluster bis zur maximalen Anzahl von Knoten hochskaliert wurde und das Speicherauslastungslimit überschritten wird, schlagen Schreibanfragen fehl. Weitere Informationen zu Speicherlimits finden Sie unter Speicher pro Knoten.
Wenn einem kleinen Cluster, z. B. einem Cluster mit nur einem Knoten, ein Knoten hinzugefügt wird, kann es zu einer vorübergehenden Erhöhung der Latenz kommen, während der Cluster neu ausbalanciert wird. Das liegt daran, dass der zusätzliche Knoten die Größe des Clusters proportional verdoppelt. Wenn ein Cluster von zwei auf einen Knoten reduziert wird, kann es ebenfalls zu einer gewissen Latenz kommen.
Beim Herunterskalieren eines Clusters werden Knoten langsamer entfernt als sie beim Hochskalieren hinzugefügt wurden, um Auswirkungen auf die Latenz zu vermeiden. Weitere Informationen finden Sie unter Skalierungseinschränkungen.
Autoscaling-Parameter
Wenn Sie einen Cluster erstellen oder bearbeiten und Autoscaling auswählen, definieren Sie die Werte für das CPU-Auslastungsziel, die Mindestanzahl an Knoten und die maximale Anzahl an Knoten. Sie können entweder das Speicherauslastungsziel konfigurieren oder es auf dem Standardwert belassen, der 50 % (2,5 TB für SSD und 8 TB für HDD) ist.
Parameter | Beschreibung |
---|---|
CPU-Auslastungsziel |
Ein Prozentsatz der CPU-Kapazität des Clusters. Kann zwischen 10 % und 80 % liegen. Wenn die CPU-Auslastung eines Clusters das von Ihnen festgelegte Ziel überschreitet, fügt Bigtable dem Cluster sofort Knoten hinzu. Wenn die CPU-Auslastung wesentlich niedriger als das Ziel ist, entfernt Bigtable Knoten. Weitere Informationen finden Sie unter CPU-Auslastungsziel bestimmen. |
Mindestanzahl von Knoten |
Die niedrigste Anzahl an Knoten, auf die Bigtable den Cluster herunterskaliert. Dieser Wert muss größer als null sein und darf nicht weniger als 10 % des Werts betragen, den Sie für die maximale Anzahl von Knoten festgelegt haben. Wenn die maximale Anzahl von Knoten beispielsweise 40 beträgt, muss die Mindestanzahl von Knoten mindestens 4 betragen. Die Anforderung von 10 % ist eine feste Beschränkung. Weitere Informationen finden Sie unter Mindestanzahl von Knoten bestimmen. |
Maximale Anzahl von Knoten |
Die höchste Anzahl von Knoten, auf die der Cluster hochskaliert werden soll. Dieser Wert muss größer als null und gleich oder größer als die Mindestanzahl von Knoten sein. Der Wert darf nicht höher als das 10-Fache der Anzahl sein, die Sie für die Mindestanzahl von Knoten auswählen. Diese 10-fache Anforderung ist eine feste Beschränkung. Weitere Informationen finden Sie unter Maximale Anzahl von Knoten bestimmen. |
Speicherauslastungsziel |
Die maximale Anzahl von Terabyte pro Knoten, die Sie speichern können, bevor Bigtable hochskaliert. Mit diesem Ziel sorgen Sie dafür, dass immer genügend Knoten vorhanden sind, um Schwankungen der Menge an Daten, die Sie speichern, zu bewältigen. Weitere Informationen finden Sie unter Ziel der Speicherauslastung bestimmen. |
Autoscaling konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie Ihre Autoscaling-Parameter auswählen. Nachdem Sie die anfänglichen Werte festgelegt haben, überwachen Sie den Cluster und passen Sie bei Bedarf die Werte an.
CPU-Auslastungsziel bestimmen
Richten Sie sich beim CPU-Auslastungsziel nach Ihrer Arbeitslast. Das optimale Ziel für Ihren Cluster hängt von den Latenz- und Durchsatzanforderungen Ihrer Arbeitslast ab. Weitere Informationen finden Sie unter Bigtable-Kapazität planen.
Im Allgemeinen sollten Sie, wenn Sie eine inakzeptabel hohe Latenz beobachten, das CPU-Auslastungsziel verringern.
Ziel der Speicherauslastung bestimmen
Wenn Ihre Anwendung latenzempfindlich ist, halten Sie die Speicherauslastung unter 60´%. Wenn Ihre Anwendung nicht latenzempfindlich ist, können Sie ein Speicherauslastungsziel von 70 % oder mehr auswählen. Weitere Informationen finden Sie unter Bigtable-Kapazität planen.
Beim Autoscaling wird die Speicherauslastung als Anzahl der Byte pro Knoten und nicht als Prozentsatz angegeben. Das Speicherauslastungsziel wird pro Knoten angegeben, aber auf den gesamten Cluster angewendet. Die Kapazitätslimits für Knoten betragen 5 TB pro Knoten für SSD-Speicher und 16 TB pro Knoten für HDD-Speicher.
Die folgende Tabelle zeigt Zielmengen für eine typische prozentuale Speicherauslastung. Die Google Cloud Console akzeptiert den Wert in TB pro Knoten und die gcloud CLI, API und Cloud Bigtable-Clientbibliotheken akzeptieren einen ganzzahligen Wert in GiB pro Knoten.
Prozentsatz | SSD | HDD |
---|---|---|
80 % | 4 TB oder 4.096 GiB | 12,8 TB oder 13.107 GiB |
70 % | 3,5 TB oder 3.584 GiB | 11,2 TB oder 11.468 GiB |
60 % | 3 TB oder 3.072 GiB | 9,6 TB oder 9.830 GiB |
50 % | 2,5 TB oder 2.560 GiB | 8 TB oder 8.192 GiB |
Maximale Anzahl von Knoten bestimmen
Der Wert, den Sie für die maximale Anzahl von Knoten auswählen, sollte die Anzahl der Knoten sein, die der Cluster für die Verarbeitung des größten Traffics Ihrer Arbeitslast benötigt, auch wenn Sie nicht erwarten, dass dieses Volumen oft erreicht wird. Bigtable skaliert nie auf mehr Knoten als nötig hoch. Sie können sich diese Anzahl auch als die höchste Anzahl von Knoten vorstellen, für die Sie zu zahlen bereit sind. Weitere Informationen zu den zulässigen Werten finden Sie unter Autoscaling-Parameter.
Die maximale Anzahl muss sowohl das von Ihnen festgelegte CPU-Auslastungsziel als auch das von Bigtable festgelegte Ziel für die Speicherauslastung zulassen.
Wenn Sie einen Cluster von der manuellen Zuordnung zur automatischen Skalierung ändern, ermitteln Sie die höchste Anzahl von Knoten, die der Cluster im letzten Monat hatte. Ihr Autoscaling-Höchstwert sollte mindestens diese Zahl sein.
Wenn Sie das Autoscaling für einen neuen Cluster in einer vorhandenen Instanz aktivieren, verwenden Sie Messwerte aus anderen Clustern in der Instanz als Wegweiser.
Wenn Sie eine neue Arbeitslast haben und nicht sicher sind, wie sie wachsen wird, können Sie die Anzahl der Knoten schätzen, die Sie zum Erreichen des integrierten Speicherauslastungsziels benötigen, und passen die Zahl später an.
Um diese Zahl zu ermitteln, schätzen Sie die Datenmenge, die Sie auf dem Cluster speichern möchten, und teilen diese Anzahl dann durch das Speicherauslastungsziel für den von Ihnen verwendeten Speichertyp.
Wenn Sie beispielsweise 10 TB in einem SSD-Cluster speichern, können Sie 10 TB durch 2,5 TB teilen. Dies ist das standardmäßig genutzte Speicherziel für SSD-Cluster, die Autoscaling verwenden. Das Ergebnis ist 4, was bedeutet, dass 4 die Anzahl der Knoten ist, die diese Datenmenge verarbeiten können, und das Maximum sollte eine höhere Zahl sein.
Die folgenden Beispiele zeigen anhand dieser Formel die Anzahl von Knoten, die Sie für einige Beispielspeichermengen benötigen könnten:
SSD-Speicher pro Cluster | Kleinste maximale Anzahl von Knoten |
---|---|
25 TB | 10 |
35 TB | 14 |
50 TB | 20 |
Sobald der Cluster einsatzbereit und Autoscaling aktiviert ist, überwachen Sie den Cluster und stellen Sie sicher, dass der Wert für die maximale Anzahl von Knoten mindestens so hoch wie der Wert fürrecommended number of nodes for CPU target
und recommended number of nodes for storage target
ist.
Mindestanzahl von Knoten bestimmen
Sie können das Minimum auf bis zu 1 heruntersetzen, um sicherzustellen, dass Bigtable nach Möglichkeit auf die kleinste, kostengünstigste Größe herunterskaliert. Der Cluster wird nie zu klein, da Bigtable automatisch verhindert, dass die Knotenanzahl unter den Mindestwert fällt, der für die CPU- und Speicherauslastungsziele erforderlich ist. Weitere Informationen zu den zulässigen Werten finden Sie unter Autoscaling-Parameter.
In vielen Fällen ist es aber sinnvoll, diesen Wert auf mehr als 1 zu setzen. Wählen Sie in den folgenden Situationen eine höhere Anzahl oder erhöhen Sie die Mindestanzahl von Knoten:
- Sie haben ein anstehendes Ereignis, z. B. Cyber Monday, bei dem Sie erwarten, dass Ihr Traffic vorübergehend zunimmt und Sie dafür sorgen möchten, dass genügend Kapazität vorhanden ist.
- Ihre Anwendung sendet Daten mit deutlichen Traffic-Spitzen. Wenn neue Knoten hinzugefügt werden, verteilt Bigtable den Traffic automatisch auch auf diese. Da dieser Prozess einige Minuten dauern kann, sollten Sie einen konservativen Ansatz in Form eines höheren Mindestwerts wählen, damit der Cluster die Spitzen problemlos bewältigen kann.
- Sie erhöhen die maximale Anzahl von Knoten. Der Mindestwert muss immer mindestens 10 % der maximalen Anzahl von Knoten betragen. Wenn Sie beispielsweise das Maximum auf 30 festlegen, müssen Sie das Minimum auf mindestens 3 festlegen.
Wenn Sie den Wert für die Mindestanzahl der Knoten eines Clusters erhöhen, versucht Bigtable sofort, den Cluster auf das neue Minimum zu skalieren. Die Standardeinschränkungen gelten jedoch. Wenn in einer Zone keine Knoten mehr verfügbar sind, werden keine zusätzlichen Knoten bereitgestellt, um das konfigurierte Minimum zu erreichen. Bigtable versucht weiterhin, Knoten hinzuzufügen, und erstellt für jeden fehlgeschlagenen Versuch einen Audit-Logeintrag, bis der Cluster auf die neue Mindestanzahl von Knoten skaliert wurde. In diesem Fall ändert Bigtable den konfigurierten Wert nicht. Daher kann es sein, dass die Anzahl der Knoten im Cluster bis zum Abschluss der Skalierung unter der Mindestanzahl liegt.
Einstellungen optimieren
Achten Sie auf die Knotennutzung und passen Sie bei Bedarf die Einstellungen an, insbesondere nach der ersten Aktivierung des Autoscalings.
Replikation berücksichtigen
In einer Instanz, die Replikation verwendet, sind die Autoscaling-Einstellungen und -Aktivitäten jedes Clusters vollständig unabhängig von denen für die anderen Cluster in der Instanz. Sie müssen den Skalierungsmodus für jeden Cluster in einer Instanz konfigurieren.
Im Allgemeinen sollten Sie für replizierte Instanzen das Autoscaling für jeden Cluster in der Instanz aktivieren. Die Autoscaling-Konfiguration ist häufig für jeden Cluster in der Instanz gleich, kann aber je nach Anwendungsfall, Arbeitslast und Leistungsanforderungen für jeden Cluster auch unterschiedlich sein.
Da Cluster in einer replizierten Instanz zusätzliche Verwaltungsschritte für die Replikation ausführen, sollten Sie für sie eine höhere maximale Anzahl von Knoten wählen als für eine Instanz mit einem einzigen Cluster. Weitere Informationen finden Sie unter Replikation und Leistung.
Zugriffssteuerung
Zum Konfigurieren des Autoscalings müssen Sie ein Hauptkonto mit einer Rolle mit den Berechtigungen create
und update
für den Cluster und die Instanz haben, die Sie konfigurieren.
Monitoring
Bigtable bietet mehrere Messwerte, mit denen Sie verstehen können, wie das Bigtable-Autoscaling funktioniert, wenn es entsprechend den Arbeitslastanforderungen hoch- und herunterskaliert. Anhand der Messwerte können Sie auch beurteilen, ob Ihre Einstellungen optimal sind, um die Arbeitslast- und Kostenanforderungen Ihres Geschäfts zu erfüllen. Wenn Sie beispielsweise feststellen, dass die Knotenanzahl für einen Cluster häufig nahe an der maximalen Anzahl von Knoten ist, sollten Sie die maximale Anzahl vielleicht erhöhen. Weitere Informationen zum Überwachen Ihrer Bigtable-Ressourcen finden Sie unter Instanz beobachten.
Die folgenden Messwerte werden in der Google Cloud Console auf der Übersichtsseite für Cluster in Grafiken angezeigt. Sie können diese Messwerte auch mit Cloud Monitoring anzeigen lassen.
bigtable.googleapis.com/cluster/autoscaling/min_node_count
bigtable.googleapis.com/cluster/autoscaling/max_node_count
bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_cpu
bigtable.googleapis.com/cluster/autoscaling/recommended_node_count_for_storage
Logging
Bigtable gibt bei jedem Skalieren eines Clusters ein Audit-Log für Systemereignisse aus. Der Logeintrag sieht in etwa so aus:
Grew from 9 to 10 nodes to maintain CPU utilization at 60%.
Sie können Autoscaling-Systemereignislogs in der Google Cloud Console auf der Übersichtsseite für Bigtable-Cluster ansehen. Sie können sie auch mit dem Log-Explorer aufrufen:
Rufen Sie den Log-Explorer auf:
Wählen Sie das entsprechende Google Cloud-Projekt aus.
Geben Sie im Feld Query Folgendes ein:
resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com" resource.labels.method="AutoscaleCluster"
Klicken Sie auf Abfrage ausführen.
Im Bereich Abfrageergebnisse werden die Logs der letzten Stunde angezeigt.
Weitere Informationen zum Anzeigen von Logs finden Sie unter Cloud Logging.