Skip to main content

13.7 Load Balancing und Skalierung

Einordnung

Diese Seite gehört zum Kapitel:

Server, Virtualisierung und Hochverfügbarkeit

Auf den vorherigen Seiten ging es um Cluster, Hochverfügbarkeit, Failover, Quorum und Split-Brain.

Jetzt geht es um:

Load Balancing und Skalierung

Diese Themen sind wichtig, wenn Dienste nicht nur ausfallsicherer, sondern auch leistungsfähiger und besser verteilbar betrieben werden sollen.


Grundidee

Ein einzelner Server kann nur eine bestimmte Menge an Anfragen verarbeiten.

Beispiele:

DienstMögliche Last
WebserverViele Webseitenaufrufe
API-ServerViele Anwendungsanfragen
DatenbankserverViele Lese- und Schreibzugriffe
TerminalserverViele Benutzer gleichzeitig
FileserverViele Dateioperationen
MailserverViele E-Mails und Benutzerzugriffe

Wenn ein Server überlastet ist, gibt es zwei grundsätzliche Möglichkeiten:

MöglichkeitBedeutung
Server stärker machenMehr CPU, RAM, Storage oder Netzwerk
Mehr Server hinzufügenLast auf mehrere Systeme verteilen

Was bedeutet Load Balancing?

Load Balancing bedeutet Lastverteilung.

Ein Load Balancer verteilt Anfragen auf mehrere Server.

Beispiel:

KomponenteAufgabe
ClientStellt eine Anfrage
Load BalancerVerteilt die Anfrage
WEB01Webserver 1
WEB02Webserver 2
WEB03Webserver 3

Vereinfacht:

Client
   ↓
Load Balancer
   ↓
WEB01 / WEB02 / WEB03

Der Benutzer greift auf eine zentrale Adresse zu.
Der Load Balancer entscheidet, welcher Server die Anfrage verarbeitet.


Merksatz

Load Balancing verteilt Anfragen auf mehrere Server, damit Last besser verteilt und Verfügbarkeit erhöht wird.


Warum nutzt man Load Balancing?

GrundErklärung
Mehr LeistungMehrere Server teilen sich die Arbeit
Höhere VerfügbarkeitFällt ein Server aus, können andere übernehmen
SkalierbarkeitWeitere Server können ergänzt werden
WartbarkeitEinzelne Server können aus dem Betrieb genommen werden
Bessere BenutzererfahrungAnfragen werden schneller beantwortet
RessourcennutzungSysteme können gleichmäßiger ausgelastet werden

Einfaches Beispiel

Eine Webseite läuft nur auf einem Server.

Problem:

SituationFolge
Viele BesucherServer wird langsam
Server fällt ausWebseite ist nicht erreichbar
Wartung notwendigDienst muss abgeschaltet werden

Lösung:

Mehrere Webserver werden betrieben und ein Load Balancer davor geschaltet.

KomponenteAufgabe
Load BalancerNimmt Anfragen entgegen
WEB01Bearbeitet Teil der Anfragen
WEB02Bearbeitet Teil der Anfragen
WEB03Bearbeitet Teil der Anfragen

Load Balancer

Ein Load Balancer ist ein System, das eingehende Anfragen verteilt.

Er kann als Hardware, Software, virtuelle Appliance oder Cloud-Dienst umgesetzt sein.

Beispiele:

ArtBeispiel
Hardware Load BalancerSpezielle Appliance
Software Load BalancerHAProxy, Nginx, Apache, Traefik
Cloud Load BalancerLoad Balancer eines Cloud-Anbieters
Firewall mit Load-Balancing-FunktionFirewall verteilt Anfragen
Kubernetes Service / IngressLastverteilung in Containerumgebungen

Backend-Server

Backend-Server sind die Server hinter dem Load Balancer.

Beispiel:

BackendAufgabe
WEB01Webserver
WEB02Webserver
WEB03Webserver

Der Client sieht meist nur den Load Balancer.

Die Backend-Server arbeiten im Hintergrund.


Frontend und Backend

Beim Load Balancing unterscheidet man oft zwischen Frontend und Backend.

BegriffBedeutung
FrontendAdresse oder Dienst, den der Client anspricht
BackendServergruppe, auf die Anfragen verteilt werden

Beispiel:

BereichBeispiel
Frontendhttps://intranet.firma.local
BackendWEB01, WEB02, WEB03

VIP – Virtuelle IP-Adresse

Eine VIP ist eine virtuelle IP-Adresse.

Clients verbinden sich mit dieser IP-Adresse.

Der Load Balancer nimmt die Verbindung an und verteilt sie an Backend-Server.

Beispiel:

KomponenteIP-Adresse
Load Balancer VIP192.168.10.100
WEB01192.168.10.101
WEB02192.168.10.102
WEB03192.168.10.103

Die Benutzer rufen nur die VIP auf:

192.168.10.100

Der Load Balancer verteilt dann intern weiter.


DNS und Load Balancing

Oft zeigt ein DNS-Name auf die Adresse des Load Balancers.

Beispiel:

DNS-NameIP-Adresse
intranet.firma.local192.168.10.100

Die IP-Adresse gehört zur VIP des Load Balancers.

Vorteil:

Benutzer müssen keine einzelnen Servernamen kennen.


Load Balancing auf verschiedenen Ebenen

Load Balancing kann auf verschiedenen Netzwerkebenen arbeiten.

EbeneBeispielBedeutung
Layer 4TCP/UDPVerteilung nach IP und Port
Layer 7HTTP/HTTPSVerteilung nach Inhalt der Anfrage

Layer-4-Load-Balancing

Layer 4 arbeitet auf Transportebene.

Dabei werden Anfragen anhand von IP-Adressen und Ports verteilt.

Beispiel:

KriteriumBeispiel
ProtokollTCP
Port443
ZielWEB01 oder WEB02

Der Load Balancer betrachtet nicht den Inhalt der Webseite, sondern nur die Verbindung.

Vorteil:

Schnell und einfach.

Nachteil:

Weniger intelligente Entscheidungen auf Anwendungsebene.


Layer-7-Load-Balancing

Layer 7 arbeitet auf Anwendungsebene.

Bei Webdiensten kann der Load Balancer Inhalte der HTTP/HTTPS-Anfrage auswerten.

Beispiele:

KriteriumBeispiel
URL-Pfad/shop geht zu SHOP01
Hostnameapi.firma.local geht zu API01
HeaderEntscheidung nach HTTP-Header
CookieSitzung einem Server zuordnen

Vorteil:

Sehr flexibel.

Nachteil:

Komplexer und oft rechenintensiver.


Layer 4 vs. Layer 7

MerkmalLayer 4Layer 7
EbeneTransportAnwendung
Entscheidung nachIP, Port, ProtokollURL, Hostname, Header, Cookie
BeispielTCP 443 verteilen/api auf API-Server verteilen
GeschwindigkeitOft schnellerMehr Verarbeitung
FlexibilitätGeringerHöher

Health Check

Ein Health Check prüft, ob ein Backend-Server erreichbar und funktionsfähig ist.

Beispiel:

Der Load Balancer prüft regelmäßig:

PrüfungBedeutung
PingServer erreichbar?
TCP-PortDienstport offen?
HTTP-StatusWebserver antwortet korrekt?
API-PrüfungAnwendung funktioniert wirklich?
DatenbankprüfungBackend kann Datenbank erreichen?

Wenn ein Server nicht gesund ist, nimmt der Load Balancer ihn aus der Verteilung.


Warum Health Checks wichtig sind

Ohne Health Checks könnte der Load Balancer weiterhin Anfragen an einen defekten Server senden.

Beispiel:

SituationOhne Health CheckMit Health Check
WEB02 fällt ausBenutzer bekommen FehlerWEB02 wird entfernt
Anwendung hängtAnfragen landen trotzdem dortServer wird als fehlerhaft erkannt
WartungBenutzer werden gestörtServer kann vorher deaktiviert werden

Backend aus der Verteilung nehmen

Ein Backend-Server kann bewusst aus der Lastverteilung genommen werden.

Das nennt man oft:

BegriffBedeutung
DisableServer deaktivieren
DrainBestehende Verbindungen auslaufen lassen
Maintenance ModeServer wird gewartet
Out of RotationServer erhält keine neuen Anfragen

Typischer Ablauf bei Wartung:

SchrittErklärung
Server aus Rotation nehmenKeine neuen Anfragen
Bestehende Sitzungen auslaufen lassenBenutzer nicht hart trennen
Updates installierenServer warten
Funktion prüfenDienst testen
Server wieder aktivierenNeue Anfragen erlauben

Load-Balancing-Methoden

Der Load Balancer kann unterschiedliche Verfahren nutzen.

Wichtige Methoden:

MethodeErklärung
Round RobinAnfragen werden der Reihe nach verteilt
Least ConnectionsServer mit wenigsten Verbindungen bekommt nächste Anfrage
Weighted Round RobinServer mit höherem Gewicht bekommt mehr Anfragen
IP HashClient-IP entscheidet über Zielserver
RandomZufällige Verteilung
Response TimeSchnellster Server wird bevorzugt

Round Robin

Round Robin verteilt Anfragen der Reihe nach.

Beispiel:

AnfrageZielserver
1WEB01
2WEB02
3WEB03
4WEB01
5WEB02

Vorteil:

Einfaches Verfahren.

Nachteil:

Berücksichtigt nicht automatisch, ob ein Server stärker oder schwächer ist.


Least Connections

Least Connections verteilt neue Anfragen an den Server mit den wenigsten aktiven Verbindungen.

Beispiel:

ServerAktive Verbindungen
WEB0150
WEB0220
WEB0335

Die nächste Anfrage geht an WEB02.

Vorteil:

Sinnvoll, wenn Verbindungen unterschiedlich lange dauern.


Weighted Round Robin

Bei Weighted Round Robin bekommen stärkere Server mehr Anfragen.

Beispiel:

ServerGewicht
WEB013
WEB021
WEB031

WEB01 bekommt mehr Anfragen, weil er leistungsfähiger ist.


IP Hash

Bei IP Hash wird anhand der Client-IP entschieden, welcher Backend-Server genutzt wird.

Vorteil:

Ein Client landet häufig wieder auf demselben Server.

Nachteil:

Die Verteilung kann ungleichmäßig werden, wenn viele Clients über dieselbe öffentliche IP kommen.


Session Persistence

Session Persistence bedeutet, dass ein Benutzer während einer Sitzung immer wieder beim gleichen Backend-Server landet.

Andere Begriffe:

BegriffBedeutung
Sticky SessionBenutzer bleibt am gleichen Server
Session AffinitySitzung wird einem Backend zugeordnet

Das ist wichtig, wenn eine Anwendung Sitzungsdaten lokal auf dem Backend-Server speichert.


Warum Sticky Sessions nötig sein können

Beispiel:

Ein Webshop speichert den Warenkorb lokal auf WEB01.

Wenn der Benutzer bei der nächsten Anfrage auf WEB02 landet, kennt WEB02 den Warenkorb nicht.

Lösung:

LösungErklärung
Sticky SessionBenutzer bleibt auf WEB01
Gemeinsamer Session-SpeicherAlle Webserver greifen auf dieselbe Session zu
Anwendung stateless bauenKeine lokale Sitzung auf Webserver

Nachteil von Sticky Sessions

Sticky Sessions können die Lastverteilung verschlechtern.

Beispiel:

Wenn viele aktive Benutzer auf WEB01 gebunden sind, wird WEB01 stärker belastet als andere Server.

Besser ist oft:

AnsatzVorteil
Zentraler Session-SpeicherBenutzer können auf jedem Webserver landen
Stateless-AnwendungEinfacher zu skalieren
Datenbank oder Redis für SessionsEinheitlicher Sitzungszustand

Stateless

Stateless bedeutet zustandslos.

Ein Server speichert keinen wichtigen Sitzungszustand lokal.

Beispiel:

Jede Anfrage enthält alle nötigen Informationen oder nutzt einen zentralen Speicher.

Vorteil:

VorteilErklärung
Einfacher zu skalierenAnfragen können auf jeden Server
Einfacher ausfallsicherAusfall eines Servers weniger kritisch
Besser für Load BalancingKeine feste Bindung nötig

Stateful

Stateful bedeutet zustandsbehaftet.

Ein Server speichert Informationen über den aktuellen Zustand einer Sitzung oder Anwendung.

Beispiele:

ZustandBeispiel
BenutzersitzungLogin-Session
WarenkorbWebshop
Lokale DateiUpload liegt nur auf einem Server
DatenbankzustandTransaktionen

Stateful-Anwendungen sind schwieriger zu skalieren.


Stateless vs. Stateful

MerkmalStatelessStateful
Sitzungsdaten lokalNeinJa
SkalierungEinfacherSchwieriger
Load BalancingEinfacherOft Sticky Sessions nötig
AusfallsicherheitBesserKomplexer
BeispielStatische WebseiteWarenkorb lokal auf Webserver

Failover vs. Load Balancing

Failover und Load Balancing werden oft verwechselt.

BegriffHauptziel
FailoverÜbernahme bei Ausfall
Load BalancingVerteilung von Last

Beispiel Failover:

Eine VM läuft auf HV01.
HV01 fällt aus.
Die VM wird auf HV02 gestartet.

Beispiel Load Balancing:

Drei Webserver laufen gleichzeitig.
Ein Load Balancer verteilt Benutzeranfragen auf alle drei Server.


Failover-Cluster vs. Load-Balancing-Cluster

MerkmalFailover-ClusterLoad-Balancing-Cluster
ZielAusfallsicherheitLastverteilung
NormalbetriebOft eine aktive RessourceMehrere aktive Server
AusfallDienst wechselt oder startet neuAnfragen gehen an andere Server
BeispielVM-FailoverWebserver-Farm
UnterbrechungHäufig kurz möglichOft weniger spürbar

Load Balancing und Hochverfügbarkeit

Load Balancing kann auch zur Hochverfügbarkeit beitragen.

Wenn ein Backend-Server ausfällt, kann der Load Balancer ihn aus der Verteilung nehmen.

Beispiel:

BackendZustand
WEB01Online
WEB02Ausgefallen
WEB03Online

Der Load Balancer sendet neue Anfragen nur noch an WEB01 und WEB03.

Wichtig:

Der Load Balancer selbst darf kein Single Point of Failure sein.


Load Balancer als Single Point of Failure

Wenn es nur einen Load Balancer gibt, kann dieser selbst zur Schwachstelle werden.

Beispiel:

KomponenteRisiko
Ein Load BalancerFällt er aus, ist der Dienst nicht erreichbar
Mehrere WebserverHelfen nicht, wenn der Load Balancer ausfällt

Lösung:

Load Balancer redundant betreiben.


Redundante Load Balancer

Bei redundanten Load Balancern gibt es mindestens zwei Load-Balancer-Systeme.

Beispiel:

Load BalancerZustand
LB01Aktiv
LB02Standby

Fällt LB01 aus, übernimmt LB02.

Das kann über eine virtuelle IP-Adresse erfolgen.


VRRP

VRRP steht für Virtual Router Redundancy Protocol.

Es wird verwendet, um eine virtuelle IP-Adresse zwischen mehreren Systemen hochverfügbar bereitzustellen.

Beispiel:

SystemZustand
LB01Master
LB02Backup
VIP192.168.10.100

Wenn LB01 ausfällt, übernimmt LB02 die VIP.


Keepalived

Keepalived ist eine Software, die häufig VRRP unter Linux bereitstellt.

Typischer Einsatz:

KomponenteAufgabe
HAProxyLoad Balancing
KeepalivedVIP-Failover zwischen Load Balancern

So kann ein Load Balancer selbst hochverfügbar aufgebaut werden.


Reverse Proxy

Ein Reverse Proxy nimmt Anfragen von Clients entgegen und leitet sie an interne Server weiter.

Er kann auch Load Balancing übernehmen.

Beispiele:

Reverse ProxyEinsatz
NginxWebserver, Reverse Proxy, Load Balancer
HAProxyLoad Balancer und Proxy
TraefikReverse Proxy für Containerumgebungen
ApacheWebserver und Reverse Proxy
CaddyWebserver mit automatischer TLS-Verwaltung

Reverse Proxy vs. Load Balancer

BegriffBedeutung
Reverse ProxyVermittelt Anfragen an interne Server
Load BalancerVerteilt Anfragen auf mehrere Server

Ein Reverse Proxy kann gleichzeitig ein Load Balancer sein.

Beispiel:

Nginx nimmt HTTPS-Anfragen entgegen und verteilt sie auf WEB01, WEB02 und WEB03.


SSL/TLS-Terminierung

SSL/TLS-Terminierung bedeutet, dass der Load Balancer oder Reverse Proxy die verschlüsselte HTTPS-Verbindung entgegennimmt und entschlüsselt.

Beispiel:

VerbindungVerschlüsselung
Client → Load BalancerHTTPS
Load Balancer → BackendHTTP oder HTTPS

Vorteile:

VorteilErklärung
Zentrale ZertifikatsverwaltungZertifikate nur am Load Balancer
Backend entlastenVerschlüsselung wird zentral verarbeitet
Inhalt auswertbarLayer-7-Regeln möglich

Nachteil:

Wenn intern HTTP genutzt wird, muss das interne Netzwerk ausreichend geschützt sein.


Ende-zu-Ende-Verschlüsselung

Bei Ende-zu-Ende-Verschlüsselung bleibt die Verbindung auch bis zum Backend verschlüsselt.

Beispiel:

VerbindungVerschlüsselung
Client → Load BalancerHTTPS
Load Balancer → BackendHTTPS

Vorteil:

Auch interner Verkehr ist verschlüsselt.

Nachteil:

Zertifikatsverwaltung und Fehleranalyse können komplexer werden.


Skalierung

Skalierung bedeutet, ein System leistungsfähiger zu machen.

Es gibt zwei Grundarten:

ArtBedeutung
Vertikale SkalierungEinzelnes System stärker machen
Horizontale SkalierungWeitere Systeme hinzufügen

Scale-Up

Scale-Up bedeutet vertikale Skalierung.

Dabei wird ein einzelner Server stärker gemacht.

Beispiele:

MaßnahmeWirkung
Mehr RAMMehr Arbeitsspeicher
Mehr CPU-KerneMehr Rechenleistung
Schnellere SSDsBessere Storage-Performance
Schnellere NetzwerkkarteMehr Netzwerkdurchsatz
Größere VMMehr Ressourcen für Anwendung

Vorteile von Scale-Up

VorteilErklärung
Einfaches KonzeptEin System wird stärker
Weniger ArchitekturänderungAnwendung bleibt meist gleich
Keine Lastverteilung nötigEin Server verarbeitet alles
Gut für bestimmte AnwendungenBesonders bei nicht verteilbaren Anwendungen

Nachteile von Scale-Up

NachteilErklärung
HardwaregrenzeIrgendwann ist maximale Größe erreicht
TeuerGroße Systeme können sehr teuer sein
Single Point of Failure bleibt möglichEin Server bleibt kritisch
Wartung schwierigerDienst hängt an einem System
Nicht beliebig skalierbarBegrenzung durch Hardware

Scale-Out

Scale-Out bedeutet horizontale Skalierung.

Dabei werden mehrere Systeme eingesetzt.

Beispiel:

Statt einem Webserver werden drei Webserver betrieben.

ServerAufgabe
WEB01Webserver
WEB02Webserver
WEB03Webserver

Ein Load Balancer verteilt die Anfragen.


Vorteile von Scale-Out

VorteilErklärung
Gut erweiterbarWeitere Server können ergänzt werden
Bessere AusfallsicherheitAusfall eines Servers kann abgefangen werden
Lastverteilung möglichArbeit wird verteilt
Wartung einfacherEinzelne Server können aus Rotation genommen werden
Günstigere Standardhardware möglichMehrere kleinere Systeme statt ein sehr großes

Nachteile von Scale-Out

NachteilErklärung
Anwendung muss geeignet seinNicht jede Anwendung kann verteilt arbeiten
Mehr KomplexitätLoad Balancer, Sessions, Datenhaltung
Datenkonsistenz beachtenMehrere Systeme müssen gleiche Daten sehen
Monitoring aufwendigerMehr Komponenten
Netzwerk wichtigerKommunikation zwischen Systemen

Scale-Up vs. Scale-Out

MerkmalScale-UpScale-Out
PrinzipEin System stärker machenMehr Systeme hinzufügen
BeispielMehr RAM in DB01WEB01, WEB02, WEB03
KomplexitätOft einfacherKomplexer
GrenzeHardwarelimitArchitekturlimit
AusfallsicherheitNicht automatisch besserKann besser werden
Typischer EinsatzDatenbanken, einzelne AnwendungenWebserver, APIs, Microservices

Vertikale Skalierung bei VMs

Bei virtuellen Maschinen ist Scale-Up oft einfach möglich.

Beispiele:

ÄnderungBeispiel
Mehr vCPU2 vCPU auf 4 vCPU
Mehr RAM4 GB auf 8 GB
Größere vDisk80 GB auf 160 GB
Schnellere Storage-KlasseHDD auf SSD/NVMe

Wichtig:

Mehr Ressourcen helfen nur, wenn die Anwendung dadurch wirklich profitiert.


Horizontale Skalierung bei VMs

Bei horizontaler Skalierung werden mehrere VMs mit gleicher oder ähnlicher Aufgabe betrieben.

Beispiel:

VMAufgabe
WEB01Webserver
WEB02Webserver
WEB03Webserver

Ein Load Balancer verteilt die Anfragen.

Das funktioniert besonders gut bei Webservern und APIs.


Skalierung bei Datenbanken

Datenbanken sind schwieriger horizontal zu skalieren als Webserver.

Gründe:

ProblemErklärung
DatenkonsistenzAlle Daten müssen korrekt bleiben
SchreibzugriffeMehrere schreibende Systeme sind komplex
TransaktionenVorgänge müssen vollständig und korrekt sein
ReplikationDaten müssen übertragen werden
KonflikteGleichzeitige Änderungen müssen behandelt werden

Datenbank-Replikation

Replikation bedeutet, dass Daten von einer Datenbank auf eine andere übertragen werden.

Typische Varianten:

VarianteBedeutung
Primary/ReplicaEine Hauptdatenbank, eine oder mehrere Kopien
Read ReplicaKopie für lesende Zugriffe
Multi-MasterMehrere Systeme können schreiben
Synchrone ReplikationBestätigung erst nach Schreiben auf mehrere Systeme
Asynchrone ReplikationÜbertragung zeitversetzt

Read Replica

Eine Read Replica ist eine Kopie der Datenbank für lesende Anfragen.

Beispiel:

DatenbankAufgabe
DB01Schreiben und Lesen
DB02Lesen
DB03Lesen

Vorteil:

Leselast kann verteilt werden.

Nachteil:

Schreibzugriffe laufen weiterhin über die Hauptdatenbank.


Webserver-Skalierung

Webserver sind oft gut horizontal skalierbar.

Beispiel:

KomponenteAufgabe
LB01Load Balancer
WEB01Webserver
WEB02Webserver
WEB03Webserver
DB01Datenbank

Wichtig:

Alle Webserver müssen auf dieselben Inhalte oder dieselbe Anwendung zugreifen können.


Gemeinsame Daten bei mehreren Webservern

Wenn mehrere Webserver genutzt werden, müssen gemeinsame Daten sauber behandelt werden.

Möglichkeiten:

LösungErklärung
Gemeinsames DateisystemAlle Webserver greifen auf gleiche Dateien zu
Deployment auf alle ServerAnwendung wird identisch verteilt
Objekt-SpeicherDateien liegen zentral
DatenbankDynamische Daten liegen zentral
Session-SpeicherSitzungen liegen zentral, z. B. Redis

Rolling Update

Ein Rolling Update bedeutet, dass Systeme nacheinander aktualisiert werden.

Beispiel:

SchrittAktion
1WEB01 aus Load Balancer nehmen
2WEB01 aktualisieren
3WEB01 testen
4WEB01 wieder aktivieren
5WEB02 aktualisieren
6WEB03 aktualisieren

Vorteil:

Der Dienst bleibt während des Updates verfügbar.


Blue-Green-Deployment

Blue-Green-Deployment bedeutet, dass es zwei Umgebungen gibt.

UmgebungZustand
BlueAktive Produktion
GreenNeue Version

Ablauf:

SchrittErklärung
1Neue Version wird in Green bereitgestellt
2Green wird getestet
3Load Balancer schaltet auf Green
4Blue bleibt als Rückfalloption

Vorteil:

Schneller Rückwechsel möglich.


Canary Deployment

Beim Canary Deployment bekommt zuerst nur ein kleiner Teil der Benutzer die neue Version.

Beispiel:

AnteilVersion
95 %Alte Version
5 %Neue Version

Wenn keine Probleme auftreten, wird der Anteil erhöht.

Vorteil:

Fehler betreffen zunächst nur wenige Benutzer.


Autoscaling

Autoscaling bedeutet, dass Systeme automatisch hinzugefügt oder entfernt werden.

Beispiel:

LastAktion
CPU hochNeue Instanz starten
Wenig LastInstanz entfernen

Autoscaling ist besonders in Cloud- und Containerumgebungen verbreitet.

In klassischen VM-Umgebungen ist es möglich, aber oft aufwendiger.


Container und Skalierung

Container lassen sich oft sehr gut horizontal skalieren.

Beispiel:

DienstInstanzen
Web-App5 Container
API3 Container
Worker4 Container

Container-Orchestrierungssysteme wie Kubernetes können Container automatisch verteilen, überwachen und neu starten.


Kubernetes als Beispiel

Kubernetes ist eine Plattform zur Verwaltung von Containern in Clustern.

Typische Funktionen:

FunktionErklärung
SchedulingContainer auf Nodes verteilen
Self-HealingFehlerhafte Container neu starten
ScalingMehr Instanzen starten
Service DiscoveryDienste auffindbar machen
Rolling UpdatesSchrittweise Updates
Load BalancingAnfragen auf Pods verteilen

Für die IHK reicht meistens das Grundverständnis:

Kubernetes verteilt und verwaltet Container auf mehreren Nodes.


Microservices

Microservices sind kleine, getrennte Dienste, die zusammen eine Anwendung bilden.

Beispiel:

MicroserviceAufgabe
User-ServiceBenutzerverwaltung
Payment-ServiceZahlung
Product-ServiceProduktdaten
Order-ServiceBestellungen
Mail-ServiceE-Mails

Vorteil:

Einzelne Dienste können unabhängig skaliert werden.

Nachteil:

Die Gesamtarchitektur wird komplexer.


Monolithische Anwendung

Eine monolithische Anwendung enthält viele Funktionen in einem großen System.

Beispiel:

Eine Anwendung enthält Benutzerverwaltung, Bestellungen, Zahlung und E-Mail-Funktion in einem Paket.

VorteilNachteil
Einfacher zu verstehenSchwerer einzeln zu skalieren
Weniger verteilte KomponentenÄnderungen können mehr Risiko haben
Einfacheres DeploymentGrößere Abhängigkeiten

Monolith vs. Microservices

MerkmalMonolithMicroservices
AufbauEine große AnwendungViele kleine Dienste
SkalierungGesamte Anwendung skalierenEinzelne Dienste skalieren
KomplexitätAnfangs einfacherBetrieb komplexer
DeploymentEin PaketViele Deployments
FehlerauswirkungFehler kann große Teile betreffenFehler kann begrenzt sein

Lastspitzen

Lastspitzen sind kurzzeitig hohe Belastungen.

Beispiele:

SituationLastspitze
Viele Benutzer melden sich morgens anLogin-System belastet
Sonderangebot im WebshopViele Besucher
Backup startetStorage und Netzwerk belastet
MonatsabschlussDatenbank stark belastet
SoftwareverteilungNetzwerk stark belastet

Skalierung und Load Balancing helfen, Lastspitzen besser abzufangen.


Bottleneck

Ein Bottleneck ist ein Engpass.

Beispiele:

EngpassAuswirkung
CPUAnwendung rechnet langsam
RAMSystem lagert aus
StorageVMs reagieren träge
NetzwerkDatenübertragung langsam
DatenbankWebanwendung langsam
einzelner ServerDienst überlastet

Merksatz:

Ein System ist oft nur so schnell wie sein größter Engpass.


Kapazitätsplanung

Kapazitätsplanung bedeutet, Ressourcen rechtzeitig zu planen.

Wichtige Fragen:

FrageBedeutung
Wie viele Benutzer nutzen den Dienst?Last abschätzen
Wann treten Lastspitzen auf?Spitzen einplanen
Welche Ressource ist kritisch?CPU, RAM, Storage, Netzwerk
Wie schnell wächst die Nutzung?Zukunft planen
Welche Verfügbarkeit wird benötigt?HA und Redundanz planen
Wie wird skaliert?Scale-Up oder Scale-Out

Monitoring für Skalierung

Um richtig zu skalieren, braucht man Monitoring.

Wichtige Werte:

BereichMesswert
CPUAuslastung, Load
RAMNutzung, Swapping
StorageIOPS, Latenz, freier Speicher
NetzwerkBandbreite, Paketverlust
WebserverAnfragen pro Sekunde
AnwendungAntwortzeit, Fehlerquote
DatenbankAbfragen, Locks, Replikationsverzögerung
Load Balanceraktive Verbindungen, fehlerhafte Backends

Antwortzeit

Antwortzeit beschreibt, wie lange ein Dienst braucht, um auf eine Anfrage zu reagieren.

Beispiel:

AntwortzeitBewertung
100 msSehr schnell
500 msGut
2 SekundenSpürbar langsam
10 SekundenKritisch

Hohe Antwortzeiten können durch CPU, RAM, Storage, Netzwerk oder Datenbankprobleme entstehen.


Throughput

Throughput bedeutet Durchsatz.

Je nach Dienst kann das unterschiedlich gemessen werden.

Beispiele:

DienstThroughput
WebserverAnfragen pro Sekunde
NetzwerkMbit/s oder Gbit/s
StorageMB/s oder IOPS
DatenbankAbfragen pro Sekunde
BackupGB pro Stunde

Fehlerquote

Die Fehlerquote zeigt, wie viele Anfragen fehlschlagen.

Beispiele:

FehlerBedeutung
HTTP 500Serverfehler
HTTP 502Bad Gateway
HTTP 503Dienst nicht verfügbar
TimeoutAntwort dauert zu lange
VerbindungsfehlerBackend nicht erreichbar

Eine steigende Fehlerquote kann auf Überlastung oder Ausfälle hinweisen.


Load Balancer Monitoring

Beim Load Balancer sollten besonders diese Werte überwacht werden:

WertBedeutung
Aktive VerbindungenAktuelle Last
Backend-StatusServer online oder offline
AntwortzeitenGeschwindigkeit der Backends
FehlercodesProbleme bei Anwendungen
VerbindungsabbrücheNetzwerk- oder Serverprobleme
TrafficDatenmenge
Health-Check-FehlerBackend-Probleme

Sicherheit beim Load Balancing

Ein Load Balancer oder Reverse Proxy ist oft ein zentraler Einstiegspunkt.

Daher ist Sicherheit wichtig.

Maßnahmen:

MaßnahmeErklärung
TLS sauber konfigurierenSichere HTTPS-Verbindungen
Zugriff beschränkenNur notwendige Ports öffnen
Backend-Netz schützenBackends nicht direkt öffentlich machen
Logging aktivierenAnfragen nachvollziehen
Updates installierenSicherheitslücken schließen
Rate LimitingSchutz vor zu vielen Anfragen
WAF nutzenSchutz vor Webangriffen
Adminzugriff absichernManagement nicht öffentlich

Rate Limiting

Rate Limiting begrenzt die Anzahl von Anfragen.

Beispiel:

Ein Client darf maximal 100 Anfragen pro Minute stellen.

Ziel:

ZielErklärung
Schutz vor MissbrauchZu viele Anfragen blockieren
Schutz vor ÜberlastungDienst stabil halten
Schutz vor Brute ForceLoginversuche begrenzen
FairnessRessourcen gleichmäßiger verteilen

WAF

WAF steht für Web Application Firewall.

Eine WAF schützt Webanwendungen vor bestimmten Angriffen.

Beispiele:

AngriffErklärung
SQL InjectionManipulation von Datenbankabfragen
Cross-Site ScriptingEinschleusen von Skripten
Path TraversalZugriff auf unerlaubte Dateien
Brute ForceViele Loginversuche
Exploit-VersucheAusnutzen bekannter Schwachstellen

Eine WAF ersetzt keine sichere Anwendung, kann aber zusätzlichen Schutz bieten.


Load Balancing in der DMZ

Öffentlich erreichbare Dienste stehen oft in einer DMZ.

Beispiel:

ZoneSysteme
InternetBenutzer
DMZLoad Balancer, Reverse Proxy
Internes NetzAnwendung, Datenbank

Vorteil:

Interne Server sind nicht direkt aus dem Internet erreichbar.


Typische Webserver-Architektur

Beispiel:

EbeneSysteme
InternetBenutzer
DMZReverse Proxy / Load Balancer
WebebeneWEB01, WEB02
AnwendungsebeneAPP01, APP02
DatenbankebeneDB01
BackupBKP01

Diese Trennung verbessert Sicherheit, Wartbarkeit und Skalierbarkeit.


Drei-Schichten-Architektur

Eine typische Anwendung kann aus drei Schichten bestehen.

SchichtAufgabe
PräsentationsschichtWeboberfläche
AnwendungsschichtLogik und Verarbeitung
DatenschichtDatenbank und Speicher

Beispiel:

SchichtBeispiel
PräsentationWEB01, WEB02
AnwendungAPP01, APP02
DatenDB01, DB02

Warum Datenbanken oft nicht einfach load-balanced werden

Webserver können häufig einfach vervielfacht werden.

Datenbanken sind schwieriger.

Grund:

Datenbanken müssen konsistente Daten liefern.

Probleme:

ProblemErklärung
SchreibzugriffeÄnderungen dürfen nicht widersprüchlich sein
TransaktionenVorgänge müssen vollständig sein
LocksGleichzeitige Zugriffe müssen geregelt werden
ReplikationsverzögerungKopien können kurzzeitig alt sein
KonflikteMehrere Schreibstellen sind schwierig

Caching

Caching bedeutet Zwischenspeichern.

Ziel:

Häufig benötigte Daten schneller bereitstellen.

Beispiele:

CacheBeispiel
Browser-CacheBilder und CSS lokal speichern
Reverse-Proxy-CacheWebseiten zwischenspeichern
Datenbank-CacheHäufige Abfragen im RAM
Application-CacheErgebnisse zwischenspeichern
CDNInhalte weltweit verteilen

Caching kann Last reduzieren, ersetzt aber keine saubere Skalierung.


CDN

CDN steht für Content Delivery Network.

Ein CDN verteilt Inhalte über viele Standorte.

Typische Inhalte:

InhaltBeispiel
BilderProduktbilder
VideosStreaming-Inhalte
JavaScriptWebdateien
CSSStylesheets
DownloadsDateien

Vorteile:

VorteilErklärung
Schnellere AuslieferungNähe zum Benutzer
Weniger Last auf UrsprungsserverCDN liefert Inhalte aus
Schutz bei LastspitzenMehr Verteilung
Teilweise DDoS-SchutzJe nach Anbieter

DDoS und Last

DDoS steht für Distributed Denial of Service.

Dabei wird ein Dienst mit sehr vielen Anfragen überlastet.

Load Balancing kann helfen, ist aber allein kein vollständiger DDoS-Schutz.

Maßnahmen:

MaßnahmeErklärung
Rate LimitingAnfragen begrenzen
CDNLast verteilen
WAFWebangriffe filtern
DDoS-SchutzdienstAngriffstraffic abwehren
MonitoringAngriff erkennen
NetzwerkfilterUnerwünschten Traffic blockieren

Typische Fehler beim Load Balancing

FehlerAuswirkung
Kein Health CheckAnfragen gehen an defekte Server
Load Balancer nicht redundantLoad Balancer wird Single Point of Failure
Sticky Sessions falsch geplantUngleichmäßige Last
Backends direkt öffentlich erreichbarSicherheitsrisiko
Keine gemeinsamen SessionsBenutzer verlieren Sitzungen
TLS falsch konfiguriertSicherheitsproblem
Keine LogsFehler schwer nachvollziehbar
Keine RessourcenreserveAusfall eines Backends überlastet andere
Datenbank als Engpass vergessenWebserver skalieren, aber DB bleibt langsam
Kein MonitoringÜberlastung wird zu spät erkannt

Gute Praxis

EmpfehlungGrund
Health Checks einrichtenDefekte Backends erkennen
Load Balancer redundant betreibenKein Single Point of Failure
Backends nicht direkt öffentlich machenSicherheit erhöhen
TLS sauber konfigurierenSichere Kommunikation
Sessions zentral speichernBesser skalierbar
Stateless-Anwendungen bevorzugenEinfachere Lastverteilung
Monitoring einrichtenLast und Fehler erkennen
Ressourcenreserven einplanenAusfälle abfangen
Rolling Updates nutzenWartung ohne Komplettausfall
Datenbanklast beachtenEngpässe vermeiden
Dokumentation pflegenBetrieb nachvollziehbar machen

Prüfungsnahes Beispiel 1

Aufgabe:

Eine Webseite läuft auf einem einzelnen Webserver. Bei vielen Zugriffen wird die Webseite langsam.

Frage:

Welche Maßnahme kann helfen?

Mögliche Antwort:

Es können mehrere Webserver betrieben und über einen Load Balancer angesprochen werden. Der Load Balancer verteilt die Anfragen auf die Webserver. Dadurch wird die Last verteilt und die Verfügbarkeit verbessert.


Prüfungsnahes Beispiel 2

Aufgabe:

Ein Unternehmen betreibt drei Webserver hinter einem Load Balancer. Einer der Webserver fällt aus.

Frage:

Was sollte der Load Balancer tun?

Mögliche Antwort:

Der Load Balancer sollte den Ausfall über Health Checks erkennen und keine neuen Anfragen mehr an den defekten Webserver senden. Die Anfragen werden auf die verbleibenden funktionierenden Webserver verteilt.


Prüfungsnahes Beispiel 3

Aufgabe:

Ein Webshop speichert Warenkörbe lokal auf dem Webserver. Benutzer verlieren manchmal ihren Warenkorb, wenn mehrere Webserver genutzt werden.

Frage:

Was ist vermutlich das Problem?

Mögliche Antwort:

Die Anwendung ist stateful und speichert Sitzungsdaten lokal. Wenn der Benutzer bei einer späteren Anfrage auf einem anderen Webserver landet, kennt dieser den Warenkorb nicht. Lösungen sind Sticky Sessions oder ein zentraler Session-Speicher.


Prüfungsnahes Beispiel 4

Aufgabe:

Ein Administrator sagt: „Wir skalieren unsere Datenbank einfach wie unsere Webserver, indem wir mehrere Datenbankserver parallel hinter einen Load Balancer hängen.“

Frage:

Warum ist das problematisch?

Mögliche Antwort:

Datenbanken müssen Daten konsistent halten. Schreibzugriffe, Transaktionen und gleichzeitige Änderungen sind komplex. Datenbanken benötigen spezielle Replikations-, Cluster- oder Failover-Konzepte und können nicht immer wie einfache Webserver horizontal skaliert werden.


Prüfungsnahes Beispiel 5

Aufgabe:

Ein Unternehmen hat zwei Load Balancer, aber nur einer besitzt die aktive virtuelle IP-Adresse. Fällt dieser aus, übernimmt der zweite.

Frage:

Welches Prinzip wird genutzt?

Mögliche Antwort:

Es wird ein redundanter Load-Balancer-Aufbau mit virtueller IP-Adresse genutzt. Häufig wird dafür ein Verfahren wie VRRP eingesetzt. Der zweite Load Balancer übernimmt bei Ausfall die VIP.


Typische Prüfungsfrage: Was ist Load Balancing?

Mögliche Antwort:

Load Balancing bedeutet Lastverteilung. Ein Load Balancer verteilt eingehende Anfragen auf mehrere Backend-Server, damit die Last besser verteilt und die Verfügbarkeit erhöht wird.


Typische Prüfungsfrage: Warum sind Health Checks wichtig?

Mögliche Antwort:

Health Checks prüfen, ob Backend-Server erreichbar und funktionsfähig sind. Wenn ein Server ausfällt, kann der Load Balancer ihn aus der Verteilung nehmen und Anfragen nur noch an funktionierende Server senden.


Typische Prüfungsfrage: Unterschied Failover und Load Balancing

FailoverLoad Balancing
Übernahme bei AusfallVerteilung von Anfragen
Häufig eine aktive RessourceMehrere aktive Server
Ziel: AusfallsicherheitZiel: Lastverteilung und Verfügbarkeit
Beispiel: VM startet auf anderem HostBeispiel: Webanfragen auf mehrere Webserver

Typische Prüfungsfrage: Was ist Scale-Up?

Mögliche Antwort:

Scale-Up bedeutet vertikale Skalierung. Dabei wird ein einzelnes System leistungsfähiger gemacht, zum Beispiel durch mehr CPU, mehr RAM, schnelleren Storage oder eine größere VM.


Typische Prüfungsfrage: Was ist Scale-Out?

Mögliche Antwort:

Scale-Out bedeutet horizontale Skalierung. Dabei werden weitere Systeme hinzugefügt, zum Beispiel mehrere Webserver hinter einem Load Balancer.


Typische Prüfungsfrage: Unterschied Scale-Up und Scale-Out

Scale-UpScale-Out
Einzelnes System stärker machenMehr Systeme hinzufügen
Mehr RAM, CPU, StorageWeitere Server oder Instanzen
Einfacher, aber begrenztSkalierbarer, aber komplexer
Single Point of Failure bleibt möglichKann Verfügbarkeit verbessern

Typische Prüfungsfrage: Was bedeutet Sticky Session?

Mögliche Antwort:

Sticky Session bedeutet, dass ein Benutzer während einer Sitzung immer wieder demselben Backend-Server zugeordnet wird. Das ist nötig, wenn eine Anwendung Sitzungsdaten lokal auf dem Server speichert.


Typische Prüfungsfrage: Was bedeutet stateless?

Mögliche Antwort:

Stateless bedeutet, dass ein Server keinen wichtigen Sitzungszustand lokal speichert. Dadurch können Anfragen einfacher auf verschiedene Server verteilt werden, was Load Balancing und Skalierung erleichtert.


Typische Prüfungsfrage: Warum ist ein einzelner Load Balancer problematisch?

Mögliche Antwort:

Ein einzelner Load Balancer kann selbst ein Single Point of Failure sein. Wenn er ausfällt, ist der Dienst trotz mehrerer Backend-Server nicht erreichbar. Deshalb sollten Load Balancer redundant aufgebaut werden.


Typische Prüfungsfrage: Was ist ein Reverse Proxy?

Mögliche Antwort:

Ein Reverse Proxy nimmt Anfragen von Clients entgegen und leitet sie an interne Server weiter. Er kann zusätzlich TLS-Terminierung, Logging, Zugriffskontrolle und Load Balancing übernehmen.


Typische Prüfungsfrage: Was ist TLS-Terminierung?

Mögliche Antwort:

TLS-Terminierung bedeutet, dass der Load Balancer oder Reverse Proxy die HTTPS-Verbindung des Clients entgegennimmt und entschlüsselt. Danach leitet er die Anfrage intern an Backend-Server weiter.


Typische Prüfungsfrage: Warum sind Datenbanken schwieriger zu skalieren als Webserver?

Mögliche Antwort:

Datenbanken müssen Daten konsistent halten. Schreibzugriffe, Transaktionen und gleichzeitige Änderungen dürfen keine Widersprüche erzeugen. Deshalb benötigen Datenbanken spezielle Replikations- oder Clusterkonzepte.


Wichtige Begriffe

BegriffKurz erklärt
Load BalancingLastverteilung auf mehrere Server
Load BalancerSystem, das Anfragen verteilt
BackendZielserver hinter dem Load Balancer
FrontendAdresse oder Dienst, den Clients ansprechen
VIPVirtuelle IP-Adresse
Health CheckPrüfung eines Backends
Round RobinVerteilung der Reihe nach
Least ConnectionsServer mit wenigsten Verbindungen wird bevorzugt
Weighted Round RobinGewichtete Verteilung
IP HashZielserver anhand Client-IP
Sticky SessionBenutzer bleibt auf gleichem Backend
Session AffinitySitzung wird Backend zugeordnet
StatelessZustandslos
StatefulZustandsbehaftet
Scale-UpEinzelnes System stärker machen
Scale-OutWeitere Systeme hinzufügen
Reverse ProxyVermittler zwischen Client und internen Servern
TLS-TerminierungHTTPS wird am Proxy/Load Balancer beendet
VRRPVirtuelle IP für Redundanz
KeepalivedLinux-Software für VRRP
Rolling UpdateSysteme nacheinander aktualisieren
Blue-Green-DeploymentUmschaltung zwischen zwei Umgebungen
Canary DeploymentNeue Version zuerst für wenige Benutzer
AutoscalingAutomatische Skalierung
BottleneckEngpass
ThroughputDurchsatz
AntwortzeitZeit bis zur Antwort
WAFWeb Application Firewall
CDNContent Delivery Network

Wichtige Merksätze

Load Balancing verteilt Anfragen auf mehrere Server.

Load Balancing verbessert Lastverteilung und kann die Verfügbarkeit erhöhen.

Ein Load Balancer braucht Health Checks, damit defekte Backends erkannt werden.

Ein einzelner Load Balancer kann selbst ein Single Point of Failure sein.

Scale-Up bedeutet: ein System stärker machen.

Scale-Out bedeutet: mehrere Systeme hinzufügen.

Webserver lassen sich oft leichter horizontal skalieren als Datenbanken.

Stateless-Anwendungen sind einfacher zu skalieren als stateful Anwendungen.

Sticky Sessions können nötig sein, verschlechtern aber manchmal die Lastverteilung.

Ein Reverse Proxy kann auch als Load Balancer arbeiten.

Monitoring ist notwendig, um Engpässe und Überlastung zu erkennen.


Kurzzusammenfassung

Load Balancing und Skalierung helfen dabei, Dienste leistungsfähiger und besser verfügbar zu machen.

Ein Load Balancer verteilt Anfragen auf mehrere Backend-Server.

Wichtige Ziele sind:

ZielBedeutung
LastverteilungArbeit auf mehrere Server verteilen
VerfügbarkeitDefekte Server aus der Verteilung nehmen
SkalierbarkeitWeitere Server hinzufügen
WartbarkeitServer einzeln warten
PerformanceAntwortzeiten verbessern

Skalierung gibt es in zwei Grundformen:

ArtBedeutung
Scale-UpEinzelnes System stärker machen
Scale-OutMehr Systeme hinzufügen

Für die IHK ist besonders wichtig:

Prüfungsrelevanter PunktBedeutung
Load Balancing erklärenAnfragen werden verteilt
Health Checks verstehenDefekte Backends erkennen
Failover vs. Load Balancing unterscheidenÜbernahme vs. Verteilung
Scale-Up vs. Scale-Out unterscheidenStärker machen vs. mehr Systeme
Stateful vs. Stateless verstehenSitzungszustand wichtig für Skalierung
Sticky Sessions kennenBenutzer bleibt auf gleichem Server
Load Balancer als SPOF erkennenRedundanz nötig
Datenbank-Skalierung einordnenKomplexer als Webserver

Der nächste logische Schritt ist:

Prüfungszusammenfassung – Virtualisierung und Cluster