Keycloak can be deployed in a number of high-availability architectures, allowing system administrators to pick the deployment type most suitable for their needs. Ease of deployment, cost and fault-tolerance guarantees are important considerations when determining the correct architecture for your deployments.
This document describes the high availability architectures in which to deploy Keycloak.
Deploy Keycloak in a single cluster, optionally across multiple availability-zones or data centers with the required network latency and database configuration, using Single-cluster deployments.
No external dependencies
Deployment in a single Kubernetes cluster or a set of virtual machines with transparent networking
Tolerate availability-zone failure or data center failure, if deployed to multiple availability zones or data centers
Kubernetes cluster is a single point of failure:
Control-plane failures could impact all Keycloak pods
Connect two Keycloak clusters deployed for example in different Kubernetes clusters in two availability zones or data centers with the required network latency and database configuration using Multi-cluster deployments (v1).
Tolerate availability-zone failure
Tolerate Kubernetes cluster failure
Bridge two networks that do not offer transparent networking
Regulatory compliance when distinct deployments are required
Complexity:
External load-balancer required
Separate Infinispan cluster required on each site
Cost:
Additional load-balancer required
Additional compute is required for external Infinispan clusters
Two Kubernetes control-planes must be provisioned
Not supported with three or more availability zones
| This section is describing a feature which is currently in preview. Please provide your feedback by joining this discussion while we’re continuing to work on this. |
Connect two or more Keycloak clusters without an external Infinispan cluster using Multi-cluster deployments (v2).
Tolerate availability-zone failure
Tolerate cluster failure
Simpler architecture: no external Infinispan cluster required
No requirement for a specific environment such as Kubernetes or AWS
Complexity:
External load-balancer required
Cost:
Additional load-balancer required
Two or more control-planes must be provisioned
Higher database load as session data is stored in the database and less data is cached. You might see approximately twice the CPU usage and write IOPS on your database, though your results might vary based on your use case.