Cluster
11.10.2022, 08:59 Uhr
Vertikale und horizontale Skalierung im Vergleich
Wie lässt sich die Kapazität eines Clusters erhöhen? Weitere Knoten hinzufügen oder die Kapazität der Knoten vergrößern? Eine Hilfestellung.
(Quelle: dotnetpro)
Es gibt verschiedene Gründe, ein Cluster neu zu skalieren. Die zwei häufigsten sind eine unzureichende Festplattenkapazität und eine zu geringe Verarbeitungskapazität. Die gängigen Varianten sind die vertikale und horizontale Skalierung.
Vertikale Skalierung bedeutet, dass die Größe der Knoten im Cluster erhöht wird, um die Verarbeitungskapazität oder die Festplattengröße zu steigern. Bei der horizontalen Skalierung oder dem Scaling-Out werden einem Cluster weitere Knoten derselben Größe hinzugefügt. Je nach Anwendungsfall ist die vertikale beziehungsweise die horizontale Skalierung die bessere Variante.
Die vertikale Skalierung ist die ideale Lösung, wenn ein Unternehmen die Kapazität eines Clusters schnell erhöhen muss. In der Regel ist eine solche Skalierung in etwa 15 Minuten pro Knoten durchführbar. Wenn nur die Größe der Instanz ohne Modifizierung des zugrunde liegenden Speichers angepasst wird, besteht auch die Möglichkeit, die Cluster-Größe schnell wieder zu reduzieren. Die vertikale Skalierung empfiehlt sich deshalb für kurzfristige oder saisonale Spitzen bei den Anforderungen an die Verarbeitungskapazität. Anschließend kann ein Nutzer unmittelbar eine Verringerung der Cluster-Größe vornehmen. Darüber hinaus ist auch auf kleineren Instanzen – in der Regel bei der Instanzgröße m5.large von AWS oder geringer – zunächst immer eine vertikale Skalierung einer horizontalen vorzuziehen. Das heißt, bei geringen Instanzgrößen sollte erst eine vertikale Skalierung erfolgen, bevor eine horizontale in Angriff genommen wird.
Zu beachten ist dabei, dass Knoten mit zu großem Speicherplatz während der Wartungszeiträume Betriebsprobleme verursachen können, da beim Ausfall einer Instanz eine große Datenmenge neu gestreamt werden muss. Wenn ein Unternehmen über wenige Knoten verfügt, ist die Wahrscheinlichkeit groß, dass alle anderen Replikate im Cluster mit dem Streaming der Daten stark belastet werden.
Langfristige Kapazitätserhöhungen
Die horizontale Skalierung hingegen eignet sich hervorragend für langfristige Kapazitätserhöhungen, bei denen es unwahrscheinlich ist, dass die Größe des Clusters wieder verringert werden muss. Gründe dafür können eine verstärkte Nutzung der Anwendung oder eine veränderte Arbeitslast sein. Wenn ein Unternehmen mehr Instanzen mit kleinerem Speicherplatz nutzt, reduziert es die Datenmenge, die im Falle eines Instanzfehlers neu gestreamt werden muss. Demzufolge kann bei einem Instanzausfall eine Anwendung sehr schnell wieder online gehen, da das Streaming von einer größeren Zahl von Replikaten erfolgt.
Die horizontale Skalierung erfordert allerdings ein Re-Streaming von Daten. Das heißt, bevor die neuen Knoten mit der Request-Bearbeitung beginnen können, müssen zunächst die relevanten Datenpartitionen auf ihre Festplatte übertragen werden. Je nach der Datenmenge im Cluster und der Größe der Knoten kann dieser Vorgang Stunden oder Tage in Anspruch nehmen. In diesem Kontext muss ein Unternehmen berücksichtigen, dass trotz der Erweiterung um zusätzliche Knoten die Verarbeitungskapazität zunächst abnimmt. Die ursprünglichen Knoten bedienen schließlich noch alle Requests und zugleich die Streaming-Anfragen der neuen Knoten. Aus diesem Grund empfiehlt sich eine horizontale Skalierung eines Clusters eher nicht, wenn er einer hohen Verarbeitungslast ausgesetzt ist.
Darüber hinaus müssen Unternehmen beachten, dass bei der horizontalen Skalierung im Falle einer Reduzierung der Kapazität durch das Entfernen von Knoten ein Dekommissionierungsprozess erforderlich ist. Dabei werden Kopien der Daten, die sich auf den zu entfernenden Knoten befinden, auf die verbleibenden Knoten verlagert. Abhängig von der Größe des Clusters und der Datenmenge kann auch dieser Prozess Stunden oder Tage dauern.
Unabhängig davon, welche Skalierungsmethode verwendet wird, sollte ein Unternehmen die Kapazität seines Clusters schon dann erhöhen, bevor der eigentliche Bedarf eintritt. Der Grund dafür ist, dass jede Skalierungsmethode die Verarbeitungskapazität des Clusters zunächst verringert, sodass ein bereits überlasteter Cluster schnell an seine Grenzen stößt.
Quelle: Ralph Völter