Zum Inhalt springen
Odinex Cloud
Konzepte

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 list

Den 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.

FeldBedeutung
protocoltcp oder http
listen_portPort auf dem Load Balancer, eindeutig pro Load Balancer
destination_portPort auf den Targets; Standard ist listen_port
proxyprotocolSendet den PROXY-Protocol-Header an die Targets (nur tcp), damit diese die Adresse des Clients sehen
health_checkprotocol (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_sessionsLeitet 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

TypBedeutung
serverEin Server am selben Standort
label_selectorAlle Server im Projekt, deren Labels passen, z. B. role=web; wird automatisch aktualisiert, wenn Server hinzukommen oder wegfallen
ipEine ö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-lb

Server-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-1

Stellen Sie sicher, dass die Firewalls der Targets Traffic vom Load Balancer auf den Ziel- und Health-Check-Ports zulassen.

Auf dieser Seite