HA Multi-AZ Setup :: Kloudfuse Docs
HA Multi-AZ Setup
If you need High Availability(HA) for a Kloudfuse cluster, you have the option of deploying it across multiple availability zones (multi-AZ). A multi-AZ setup minimizes downtime and maintains observability workflows in the event of a zone failure. Each zone must have at least 2 pods to run the supported components.
Benefits of Multi-AZ Deployment
- Protects against zone-level failures
- Ensures service continuity
- Balances workload across zones
- Aligns with SRE best practices
Prerequisites
Before you begin:
Kubernetes Cluster Infrastructure
A fresh installation. A Kloudfuse cluster cannot be upgraded to a Multi-AZ setup.
- Nodes to be set up across 3 availability zones (required)
- Each availability zone must have an equal number of nodes (required)
- The total number of nodes must be a multiple of 6 (required)
- Nodes cannot have additional taints outside what is used by Kloudfuse (required) Additional taints will cause validations to fail and those will not be used
Cloud Managed PostgreSQL instance
Cloud Provider managed PostgreSQL instance:
- AWS RDS
- GCP Cloud SQL
- Azure Database for PostgreSQL
- PostgreSQL must be available to all 3 availability zones.
- PostgreSQL version 14.11+
- Kubernetes Secret with PostgreSQL credentials
AWS-only
A NLB and Kloudfuse DNS mapping
- Use a NLB (Network Load Balancer) for Kloudfuse DNS mapping. Elastic IPs are AZ-specific, the DNS for the Kloudfuse endpoint must be a CNAME pointing to the NLB DNS to ensure traffic routing during a zone failure.
Step 1: Configure Helm Values
In the custom_values.yaml, configure the following fields:
global:
cloudProvider: <aws | gcp | azure>
numNodes: <Total number of nodes across all zones>
multiAzDeployment:
enabled: true
configDB:
host: <Postgres host for configDB>
orchestratorDB:
host: <Postgres host for orchestratorDB>
installKfusePgCredentials: false
This configuration ensures Kloudfuse uses external PostgreSQL and skips deploying its own credentials secret.
Step 2: Disable Embedded PostgreSQL
To use cloud-managed PostgreSQL, disable the internal PostgreSQL services:
ingester:
postgresql:
enabled: false
kfuse-configdb:
enabled: false
Step 3: Automatic Scaling and Anti-Affinity Rules
When multiAzDeployment.enabled is set to true, Kloudfuse will automatically:
- Adjusts
replicaCountfor services based onglobal.numNodes - Applies pod anti-affinity rules to distribute replicas across availability zones
Do not manually set replicaCount for most services.
Service Behavior in Multi-AZ Mode
These services will auto-scale based on the number of nodes that are being used in the cluster.
- advance-functions-service
- events-query-service
- ingester
- kafka
- llm-evaluation-service
- llm-query-service
- logs-parser
- logs-query-service
- logs-transformer
- kfuse-observability-agent
- kfuse-vector
- metrics-transformer
- pinot
- query-service
- rum-query-service
- trace-query-service
- trace-transformer
- zapper
Services that, by default, will have 3 replicas (1 per zone)
- beffe
- ingress-nginx
- kafka zookeeper
- kfuse-profiling-server (requires cloud storage)
- pinot zookeeper
- redis
- ui
Services that always use 1 replica
These components remain single-instance. On zone failure, Kubernetes reschedules the pod to a healthy node in another zone.
- az-service
- config-mgmt-service
- grafana
- hydration-service
- kfuse-auth
- kfuse-cloud-exporter (scraper and exporters)
- kfuse-profiler
- kfuse-saml
- rule-manager
- user-mgmt-service
Additional Notes
- Replication factors will be automatically managed for Kafka and Pinot
- Do not override
replicaCountunless given specific guidance to do so global.numNodesis used to influence replica scaling.