Onko jollain kokemusta, että miten Keycloakin high availability toteutetaan ilman Kubernetesiä?
Kokemusta ei ole, mutta pikaisen dokumentaation lukemisen perusteella ei näytä ihmeelliseltä. Katsopas tuolta:
Keycloak is an open source identity and access management solution
www.keycloak.org
Aluksi tarvitaan Keycloak-instansseille yhteinen tietokanta, jonka HA järjestetään sitten kukkaron ja valitun tietokantatyypin (MariaDB, MySQL, Postgres, MS-SQL, Oracle) määräämällä tavalla.
Jos tavoitteena on kokonaisen konesalin menetyksen kestävä ratkaisu, sitten pitää valita sellainen tietokantaratkaisu joka itsessään täyttää tämän vaatimuksen myös.
Sitä käyttämään haluttu määrä (kaksi tai enemmän) Keycloak-instansseja, jotka vaihtavat tilatietoja keskenään käyttäen haluttua transport-stackia (oletus UDP + IP-multicast) ja haluttua hajautettua cacheteknologiaa (oletus on Infinispan).
Näiden eteen tarvitaan vielä joku reverse-proxy/kuormantasausratkaisu, mieluiten sellainen joka osaa ohjata samalta asiakkaalta tulevat pyynnöt samalle instanssille sikäli kun se on pystyssä, jolloin tilatiedon siirtelyn tarve instanssien välillä minimoituu.
Reverse-proxy/kuormantasaaja on parempi määrittää niin, että asiakaskoneilta sen kautta pääsee läpi vain varsinaiseen autentikointipalveluun liittyvät pyynnöt, ja Keycloakin admin REST-APIa tai hallintakonsolia tavoittelevat pyynnöt estetään jo tällä tasolla. Hallintayhteydet sitten erikseen.
Sitten pitää vielä päättää viedäänkö aktiivisten istuntojen tilatieto kantaan asti vai ei. Jos viedään, se hidastaa toimintaa hiukan, mutta toisaalta istunnot eivät huku vaikka kaikki Keycloak-instanssit kaatuisivat ja käynnistettäisiin uusiksi yhtä aikaa. Jos aktiiviset istunnot jätetään pelkän hajautetun cachen varaan, toiminta on vähän nopeampaa mutta silloin pitää joko olla riittävän varma että ainakin yksi Keycloak-instansseista jää henkiin missä tahansa odotettavissa olevassa vikatilanteessa, tai sitten istunnon hukkumisesta syntyvän aikaviiveen tai muun haitan pitää olla tarpeeksi vähäinen, ettei käyttäjien hihat pala istuntojen katkeamisen takia silloin kun Keycloak-ympäristössä tehdään isompaa versiopäivitystä tai muuta täyskatkoa vaativaa huoltoa, tai se Iso Vika iskee.
On sitten ihan oma asia miten nuo Keycloak-instanssit haluaa järjestää: tekeekö niistä oldskool-klusteripaketteja, tekeekö jokaisesta oman pienen virtuaalikoneen isolle virtualisointialustalle (tai pilveen), vai miten. Toki kannattaa laittaa joku valvontaratkaisu, joka alkaa varoittaa jos joku instansseista kyykkää, jottei vikatilannetta huomata vasta sitten kun se viimeinenkin jäljellä oleva instanssi oikaisee koipensa...