Load Balancer
TCP- und HTTP-Traffic mit Health Checks auf mehrere Server verteilen.
Ein Load Balancer hat eine eigene öffentliche IPv4- und IPv6-Adresse und leitet Traffic gemäß seinen Services an seine Targets weiter. Load Balancer werden je nach Typ stündlich abgerechnet; siehe Preise.
Typen
Der Typ legt fest, wie viele Services, Targets und Verbindungen ein Load Balancer unterstützt. So listen Sie die Typen auf (öffentlich, kein Token nötig):
curl https://api.odinex.cloud/v1/load_balancer_types
odx load-balancer-type listDen Typ können Sie später ändern (change_type). Ein Wechsel auf einen kleineren Typ schlägt mit 409 limit_exceeded
fehl, wenn die vorhandenen Services oder Targets nicht hineinpassen.
Services
Ein Service lauscht auf einem Port und leitet an einen Port auf den Targets weiter.
| Feld | Bedeutung |
|---|---|
protocol | tcp oder http |
listen_port | Port auf dem Load Balancer, eindeutig pro Load Balancer |
destination_port | Port auf den Targets; Standard ist listen_port |
proxyprotocol | Sendet den PROXY-Protocol-Header an die Targets (nur tcp), damit diese die Adresse des Clients sehen |
health_check | protocol (tcp oder http), port, interval (Standard 15 s), timeout (Standard 10 s), retries (Standard 3); bei http zusätzlich ein path und erwartete status_codes wie ["2??", "3??"] |
http.sticky_sessions | Leitet einen Client jedes Mal an dasselbe Target (nur http) |
Der Load Balancer terminiert kein TLS. Für HTTPS verwenden Sie einen tcp-Service auf Port 443 und terminieren TLS
auf den Targets (fügen Sie proxyprotocol hinzu, wenn diese die Client-Adresse benötigen).
Der algorithm ist round_robin (Standard) oder least_connections.
Targets
| Typ | Bedeutung |
|---|---|
server | Ein Server am selben Standort |
label_selector | Alle Server im Projekt, deren Labels passen, z. B. role=web; wird automatisch aktualisiert, wenn Server hinzukommen oder wegfallen |
ip | Eine öffentliche IP-Adresse |
Jedes Target meldet pro Service-Port einen Health-Status (healthy, unhealthy oder unknown). Traffic geht nur an
gesunde Targets.
Standardmäßig erreicht ein Load Balancer seine Targets über deren öffentliche Adressen. Sie können ihn an ein privates Netzwerk anbinden, um den Traffic stattdessen an private Targets zu senden. Load Balancer und Targets müssen sich am selben Standort befinden, und die Firewall der Targets muss die Service- und Health-Check-Ports zulassen.
odx load-balancer create --name web-lb --type lb11 --location fra1 --network backend # at create
odx load-balancer attach-to-network --network backend web-lb # or later
odx load-balancer detach-from-network web-lbServer-Targets in diesem Netzwerk werden dann über ihre private Adresse erreicht und können somit Server ohne öffentliche Adressen sein.
odx load-balancer create --name lb-1 --type lb11 --location fra1
odx load-balancer add-service --protocol http --listen-port 80 --destination-port 8080 lb-1
odx load-balancer add-target --label-selector role=web lb-1Stellen Sie sicher, dass die Firewalls der Targets Traffic vom Load Balancer auf den Ziel- und Health-Check-Ports zulassen.