Topicus KeyHub kan in een cluster draaien voor hoge beschikbaarheid. Voor de hoogste betrouwbaarheid dient dit cluster te bestaan uit een oneven aantal nodes met een minimum van 3. Een externe load balancer is nodig voor inkomend verkeer.
Voor een uitgebreide beschrijving van de KeyHub clustering raden wij aan om de handleiding goed door te nemen.
In dit artikel zal een voorbeeld gegeven worden van de load balance configuratie met HAProxy.
High level design
Detail plaatje nodes
KeyHub poorten overzicht
443/tcp (Console): Endpoint voor de user interface.
50443/tcp (Appliance manager): Endpoint voor de appliance manager (beheer interface).
50022/tcp (ssh): SSH toegang en communicatie poort voor nodes onderling.
51871/udp (wireguard): Communicatiepoort voor de nodes onderling (Data).
Certificaten
Server certificate (per node): Alle nodes hebben een geldig certificaat nodig met een correct subject alternative name.
Root Certificate bundle (1st node & loadbalancer): Alle serveer certificates moeten door hetzelfde root certificate getekend worden. Dit root certificate moet ook aanwezig zijn in de loadbalancers voor de communicatie met de nodes.
KeyHub certificate (single node or loadbalancer): Er moet een geldig certificaat aanwezig zijn op de loadbalancer voor de communicatie met de eindgebruiker.
Allow Lists
KeyHub heeft 3 separate allow lists. Voor het management geldt deze voor een aantal standaard poorten. Voor de monitoring en backup zijn deze configureerbaar.
- Management standaard 389/tcp, 50022/tcp, 50443/tcp
- Backup geen standaard
- Monitoringstandaard 9443/tcp
HAProxy config example
Onderstaande is een voorbeeld van de HAProxy config van een clustered setup met 3 nodes. De sticky sessions zijn nodig omdat in deze setup gebruik wordt gemaakt van round robin load balancing. De option httpchk leest de status op het endpoint op poort 9443. De status “up” is geeft http code 200 en de status “down” geeft http code 503.
De HAProxy handelt in dit voorbeeld de SSL af. Het externe certificaat en key zijn gebundeld in keyhub.keyhub.local.crt op de frontend.
Alle nodes hebben hun eigen certificaat. Het trusted root certificate wordt opgegeven in de backend in dit voorbeeld rootCA.pem
haproxy.cfg
global |
NOTE: Als SELinux aanstaat kan het nodig zijn om HAProxy toestemming te geven om meerdere uitgaande sessies te starten. Gebruik hiervoor het volgende commando:
sudo setsebool -P haproxy_connect_any 1