Autoscaling

Auf dieser Seite wird erläutert, wie Autoscaling funktioniert und wie Sie entscheiden können, ob Autoscaling für Ihren Anwendungsfall das Richtige ist. Bevor Sie diese Seite lesen, sollten Sie sich mit den Informationen unter Übersicht über Bigtable und Instanzen, Cluster und Knoten vertraut gemacht haben.

In Bigtable sind Instanzen Container für Cluster. Dies sind standortspezifische Ressourcen, 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

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 ist oft die beste Wahl für die folgenden Situationen:

  • Stabile tägliche Traffic-Muster, die beispielsweise bei Online-Shopping-Diensten generiert werden
  • Neue Anwendungen, für die ein organisches Wachstum erwartet wird
  • Arbeitslasten, die neu in Bigtable sind

Autoscaling 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 unter Umständen 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.

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. Eine Anleitung finden Sie unter CPU-Auslastungsziel ermitteln.

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. Eine entsprechende Anleitung 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. Eine Anleitung finden Sie unter Maximale Anzahl von Knoten ermitteln.

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. Eine Anleitung finden Sie unter Speicherauslastungsziel ermitteln.

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. Empfehlungen finden Sie unter CPU-Nutzung und unter Abwägung zwischen hohem Durchsatz und niedriger Latenz, um die Gründe für die Empfehlungen zu verstehen.

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 eine Ganzzahl 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 an Knoten eines Clusters erhöhen, versucht Bigtable sofort, den Cluster auf das neue Minimum zu skalieren. Es gelten jedoch die Standardeinschränkungen. Wenn eine Zone keine Knoten mehr hat, 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 erfolgreich auf die neue Mindestanzahl von Knoten skaliert wurde. Bigtable ändert den konfigurierten Wert in dieser Situation nicht. Daher können Sie bis zum Abschluss der Skalierung beobachten, dass die Anzahl der Knoten des Clusters unter dem Minimum 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 das Autoscaling für replizierte Instanzen 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:

  1. Rufen Sie den Log-Explorer auf:

    Zu „Log-Explorer“

    Wählen Sie das entsprechende Google Cloud-Projekt aus.

  2. Geben Sie im Feld Query Folgendes ein:

    resource.type="audited_resource" resource.labels.service="bigtableadmin.googleapis.com"
    resource.labels.method="AutoscaleCluster"
    
  3. 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.

Nächste Schritte