Een load balancer van Wolkra verdeelt binnenkomend verkeer over meerdere servers en stuurt het alleen naar targets die hun health checks doorstaan. Hij ondersteunt layer 4- (TCP) en HTTP-services, en targets kunnen servers, label selectors of IP-adressen zijn, inclusief servers die alleen in een privénetwerk bestaan.
Wanneer je er een nodig hebt
- Twee of meer appservers voor capaciteit of redundantie.
- Deploys zonder downtime: haal een server eruit, update hem en zet hem terug.
- Eén stabiel publiek toegangspunt vóór privéservers.
Een load balancer aanmaken
- Open Load balancers in de console en kies Create load balancer.
- Geef hem een naam, bijvoorbeeld
web-lb. - Koppel hem eventueel aan een privénetwerk, zodat hij servers zonder publiek IP kan bereiken.
- Voeg services toe (luisterpoorten).
- Voeg targets toe.
- Stel health checks in.
- Maak hem aan. De console toont de prijs voordat je bevestigt.
Services
Een service koppelt een poort op de load balancer aan een poort op de targets.
| Type | Gebruik voor | Voorbeeld |
|---|---|---|
| TCP (layer 4) | elk TCP-protocol, TLS-passthrough | 443 → 443 |
| HTTP | gewone HTTP-apps | 80 → 8080 |
Voeg één service per luisterpoort toe.
Targets
- Servers: kies afzonderlijke servers.
- Label selectors: bijvoorbeeld
role=web. Nieuwe servers met het label doen automatisch mee, en servers die het label verliezen vallen af. Dat werkt goed met servers die je vanuit een snapshot of via de API aanmaakt. - IP-adressen: voor backends die je op adres aanwijst.
Is de load balancer aan een privénetwerk gekoppeld, dan bereikt hij targets via hun privéadressen, zodat de targets helemaal geen publiek IP nodig hebben.
Health checks
Een health check bepaalt of een target verkeer krijgt. Stel in:
- Protocol: TCP (de poort accepteert verbindingen) of HTTP (een pad geeft een successtatus terug).
- Poort en, bij HTTP, een pad zoals
/healthz. - Interval, timeout en retries.
Een minimaal health-endpoint achter Caddy:
:8080 {
respond /healthz "ok" 200
reverse_proxy localhost:3000
}
Laat de health check de echte gereedheid weerspiegelen. Heeft de app een database nodig, laat /healthz dan falen als de database onbereikbaar is, zodat het verkeer naar een gezonde server gaat.
HTTPS
Voor HTTPS voeg je een TCP-service op poort 443 toe en termineer je TLS op de servers zelf, bijvoorbeeld met Caddy. Elke server heeft dan het certificaat nodig; Caddy kan het automatisch ophalen, of je deelt het tussen servers. Voeg een TCP- of HTTP-service op poort 80 toe, zodat certificaat-challenges en redirects de servers bereiken. De Caddy-guide behandelt de serverkant, inclusief het vertrouwen van doorgestuurde headers.
Firewalls
Sta de applicatiepoort op de targets alleen toe vanaf waar de load balancer verbinding maakt: de range van het privénetwerk als hij aan een netwerk is gekoppeld. Houd SSH zoals gebruikelijk beperkt. Zie firewalls.
Deployen zonder downtime
- Haal het label van de server (of de server zelf) weg uit de targets, of laat hem bewust zijn health check niet halen.
- Wacht tot bestaande verbindingen klaar zijn.
- Update en herstart de app.
- Zet het label terug en wacht tot de health check slaagt.
- Herhaal dit voor de volgende server.
Controleer of het werkt
for i in $(seq 1 6); do curl -s http://203.0.113.20/whoami; echo; done # example address
Antwoordt elke server op /whoami met zijn eigen hostname, dan zie je de antwoorden afwisselen.
Facturering
Load balancers worden net als servers per begonnen uur gefactureerd, met de maandprijs als maximum. Het verkeer dat erdoorheen gaat is onbemeterd. Zie prijzen.
API
Load balancers zijn beschikbaar via https://api.wolkra.com/v1/load_balancers. Zie API-tokens.
Meer op de productpagina: load balancers.
Veelgestelde vragen
Wat voor verkeer kan de load balancer verwerken?
Layer 4-services (TCP) voor elk protocol, en HTTP-services. Beide gebruiken health checks om verkeer alleen naar gezonde targets te sturen.
Kunnen targets servers zonder publiek IP zijn?
Ja. Koppel de load balancer aan hetzelfde privénetwerk, dan bereikt hij servers zonder publiek IP via dat netwerk.
Hoe voeg ik nieuwe servers automatisch toe?
Gebruik een label selector als target, zoals role=web. Elke server met dat label wordt een target zodra hij bestaat.
Waar wordt HTTPS getermineerd?
Een eenvoudige aanpak is een TCP-service op poort 443 die TLS doorgeeft aan je servers, waar Caddy of een andere proxy de certificaten beheert.