Why OpenMetadata high availability is harder than adding replicas
Making OpenMetadata highly available is not a matter of running more copies of the server. The catalog now feeds lineage, ownership and data quality decisions, so when it stops, people who never open the interface lose answers they rely on: which table feeds a dashboard, who owns a column, and whether a quality check passed. The reader needs to plan availability across every component the platform depends on, not only the stateless application tier. OpenMetadata high availability spans four parts: the server, the database that holds catalog state, the search index that powers discovery, and the ingestion scheduler that pulls metadata from sources on a timetable. Each fails differently. The server can be restarted or scaled without losing data, but the database holds the system of record, and the search index is derived data that must be rebuilt or kept in sync. The scheduler is a separate concern because its jobs keep running on their schedule even while the server is being replaced, so a restart can interrupt or duplicate work in progress. The supported production targets are Kubernetes on AWS EKS, Azure AKS, Google GKE and on-premises clusters, and bare metal without Kubernetes. The bare metal prerequisites are Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. Bare metal and Kubernetes share the same component set, so the availability design questions are the same on both. The difference is who operates the failover mechanics: your platform team on Kubernetes, or your own process managers and load balancers on bare metal. Three things make the topic harder than it looks. First, the database and search cluster are stateful, so their replication, storage classes, backups and failover rules need to be designed separately from the server's replica count. Second, a search index that is lost or falls behind requires reindexing, which can be heavy on the cluster and must be scheduled so it does not compete with peak use. Third, scheduled ingestion keeps running across restarts, so the team needs to decide how overlapping or interrupted runs are handled and who is alerted when a run fails. Before committing to a design, confirm with your platform team and with the OpenMetadata release you plan to run which high availability patterns the chosen version and Helm chart support, which database and search versions are approved in your environment, and how your organization will test failover. Ask for a written recovery procedure for each component, and treat the ingestion scheduler as its own item on the availability plan.
Which OpenMetadata components need redundancy and why
OpenMetadata high availability depends on four components that fail differently: the server, the relational database, the search service and the ingestion layer. Each one has a distinct role, so a single outage affects users, search, or scheduled connector runs in different ways. The cards below set out what each component does, what a failure looks like, and what to confirm before you size the cluster.
OpenMetadata server replicas
The server serves the web interface, REST APIs and SDK calls, and it is the only entry point for users and automation. It runs on Java 21 and holds no catalog state of its own, so multiple replicas behind a load balancer can share the same database and search service. A single failed replica without a second one behind the load balancer means users see errors or timeouts across the whole catalog. Check how your Kubernetes probes and rolling update settings handle replica restarts during an upgrade.
Relational database as the system of record
The relational database, MySQL 8.0.42 or later or PostgreSQL 15 or later, stores entity definitions, ownership, glossary terms, tests and configuration. It is the one component whose loss cannot be rebuilt from connectors, so it carries the highest recovery stakes. A database outage stops reads and writes for every server replica at once. Confirm whether your managed service provides automated failover, point-in-time recovery and backup retention that match your recovery targets.
Search service for catalog discovery
The search service, Elasticsearch 9.x or OpenSearch 3.x, indexes entities so that users can find tables, dashboards and glossary terms. Search is derived data, so it can be reindexed from the database, but a long reindex leaves discovery incomplete for users. Losing a single search node can degrade results or slow queries without stopping the server. Check the cluster's shard replication settings and the time your team needs for a full reindex before choosing node counts.
Ingestion workflows on Airflow
The ingestion layer runs connector workflows as scheduled Apache Airflow 3.3.0 DAGs on 2.0 images running Python 3.12. When this layer is down, metadata stops refreshing from sources, and lineage, profiling and freshness checks based on those runs fall behind without any visible error in the catalog. Missed runs are the main risk, since they can go unnoticed for days. Confirm with the vendor which ingestion components can run in more than one instance, because the material available to us does not settle this and it determines whether the scheduler can be made redundant.
Custom ingestion images and version alignment
Teams that build custom ingestion images must rebuild them for Python 3.12 when moving to the 2.0 line, and each image must match the server version it reports to. A mismatch can cause workflows to fail on start even when every node is healthy. Plan image builds and rollback images as part of the redundancy design, not as an afterthought. Confirm the supported image tags and the upgrade order with the vendor before any cutover.
Which deployment and database choices fit your availability target
This table compares the main deployment and data tier decisions for an OpenMetadata high availability setup, with the conditions that favor each option and the operating work it adds. Read each row as a trade-off: the option that suits a platform team with Kubernetes experience may be a poor fit for a team that lacks database operations staff. Confirm version support and sizing against the current OpenMetadata documentation before committing to a design.
| Decision | When it fits | Operational cost to plan for |
|---|---|---|
| Server tier: Kubernetes | Your platform team already runs Kubernetes and needs several server replicas behind a load balancer | Cluster upgrades, probe and resource tuning, and keeping chart and image versions aligned with the release you run |
| Server tier: bare metal | Your standards do not include Kubernetes or you need a small, explicitly managed footprint | Your team owns the Java 21 runtime, OS patching, service restarts and any failover arrangement you build yourself |
| Database: managed MySQL or PostgreSQL | Your organization already buys managed relational databases with backups and patch windows | Confirm the managed engine version falls within the ranges OpenMetadata supports, and check restore procedures and backup retention |
| Database: self-run MySQL or PostgreSQL | You need full control of placement, parameters and maintenance timing | Your team owns backups, replication, failover testing, minor version patching and capacity growth |
| Search: OpenSearch 3.x or Elasticsearch 9.x | You want a clustered search tier that matches a supported major version in your environment | Pin the version to the supported range, monitor shard health, and plan reindexing after upgrades or restores |
| Ingestion scheduler placement | Pipelines must keep running when one server replica is replaced | Confirm where the scheduler runs, how it recovers after a node loss, and who restarts failed ingestion jobs |
| Placement: single zone | Recovery time and data loss limits are modest, and a zone outage would be tolerable for the business | Lower infrastructure cost, but a zone failure takes down the server, database and search tiers together |
| Placement: multi-zone | Catalog availability matters to downstream consumers and you can run replicas across zones | Higher infrastructure and cross-zone traffic cost, plus more testing of failover and search index consistency |
How to build an HA OpenMetadata stack step by step
This sequence takes an OpenMetadata installation from a single server to one that keeps serving search, sign-in and scheduled ingestion when a server replica, a search node or an ingestion run fails. Each step closes with a check your team can run and record before moving on. Several steps depend on the Helm chart or deployment guide version you select.
Confirm versions against supported ranges
The platform owner confirms the target OpenMetadata release and checks it against the documented prerequisites: Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. If the target is 2.0, also review its breaking changes, including embedding credentials, the Databricks auth format, Python 3.12 ingestion images and the Great Expectations 1.3 migration. Confirm that the Helm chart or deployment guide you select supports the same ranges. Done when a signed-off version matrix exists.
Size the database and search services
Set sizing for the server, database and search services at or above the documented minimums: 2 vCPUs, 4 GB RAM and 20 GB storage for the server, and at least 2 vCPUs, 2 GB RAM and 30 GB storage each for the database and search services. Treat these as floors. Size production from your expected catalog volume and ingestion load, and ask the maintainers or your vendor which figures apply to your release. Check requested and limit values against your node capacity and storage class. Done when every pod and managed service has a documented size.
Provision managed database and clustered search
Create a managed MySQL or PostgreSQL instance with automated backups, and a clustered Elasticsearch or OpenSearch deployment with the node count your topology requires. Enable the high availability options your provider offers, such as multi-zone placement where available. Record endpoints, credentials and TLS settings in your secrets inventory. Confirm that the server's network path reaches both services. Done when you can connect to the database and query cluster health from the subnet the server will use.
Deploy server replicas behind a load balancer
Deploy the OpenMetadata server with more than one replica using the Kubernetes path your team selected in the deployment guide, and point every replica at the same database and search endpoints. Expose the replicas through a load balancer or ingress configured with the health check path that your deployment guide specifies. Keep all configuration in version control so each replica starts from identical settings. Done when every replica reports healthy and each one reaches the database.
Configure shared sign-in and authentication state
Configure SSO against one identity provider, because OpenMetadata does not support combining SSO with basic authentication at the same time. Register the redirect URL using the load balancer hostname, and confirm in your deployment guide whether session handling needs any shared storage in your release. Hold bot tokens and connector secrets in your secrets manager and reference them from the chart. Done when a signed-in session keeps working after a request is routed to a different replica.
Wire the ingestion scheduler to the metadata store
Point the ingestion scheduler at the same OpenMetadata server endpoint and metadata store that the replicas use, following the scheduler setup in your chosen Helm chart or guide version. If you run 2.0, rebuild custom ingestion images for Python 3.12 with Apache Airflow 3.3.0 before deploying them. Set the schedule and retry settings your team agreed. Done when a scheduled run is recorded against the shared store and its status is visible through every replica.
Run first full ingestion and failover checks
Run a full ingestion against a representative set of sources, then confirm that search returns expected assets. Restart one search node and repeat the search query to confirm results still return. Start a scheduled ingestion, stop one server replica during the run, and confirm the run completes. Record the results and the versions tested in the runbook. Done when search returns expected assets after the node restart and the scheduled run finishes after the replica stops.
How the setup changes across single node, HA Kubernetes, bare metal and air-gapped
A single node setup runs one OpenMetadata server, one database and one search service, usually on one host or a small set of virtual machines. It suits evaluation and small teams that can accept downtime during restarts and upgrades. The Docker path is for local trials only and should not be treated as a production layout.
- Replicas: one server instance means no failover. A crash or host restart stops the catalog until the process returns.
- Database and search: one MySQL or PostgreSQL instance and one Elasticsearch 9.x or OpenSearch 3.x instance, sized at or above the documented minimums.
- Image sourcing: pull the release images or packages for the version you chose and pin that version so upgrades are deliberate.
- Ingestion scheduling: ingestion shares the host with the server, so large crawls or heavy profiling can slow the interface. Schedule them outside working hours.
- Team provisions: the host, the Java 21 runtime for a bare metal install, backups of the database and search indexes, and a documented restart procedure.
Before accepting this layout, confirm with your team how much downtime is tolerable during upgrades and who restores service after a host failure.
On EKS, AKS, GKE or an on-premises cluster, the server runs as several replicas behind a load balancer, and the database and search layers are clustered or managed services. Availability depends on every layer, so a highly available server pod group still fails if its database or search tier has a single point of failure.
- Replicas: several server pods behind a Kubernetes Service, with scheduling rules that spread them across nodes. Confirm the replica and session settings in the deployment guide for your version.
- Database: a managed MySQL or PostgreSQL service with automatic failover, at or above the minimum versions listed for OpenMetadata. Ask the provider exactly how failover is handled.
- Search: a clustered Elasticsearch 9.x or OpenSearch 3.x deployment with index replicas. A single search node is a single point of failure for search and discovery.
- Image sourcing: mirror images into your own registry and pin tags. If you run 2.0 or later, custom ingestion images must be rebuilt for Python 3.12.
- Ingestion scheduling: confirm how your version prevents duplicate workflow runs when several replicas are active.
- Team provisions: the cluster, the managed database, the search cluster, ingress and TLS certificates, secrets, backups and monitoring.
Before sign-off, test a pod deletion, a database failover and a search node restart in a non-production environment and record what the users see.
Bare metal without Kubernetes runs the server as a service on Linux hosts you manage. Redundancy comes from additional server hosts behind a load balancer, and nothing restarts a failed process unless you configure supervision. Plan the host layout before choosing the number of servers.
- Prerequisites: Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. Install these before the server.
- Sizing minimums: the server needs at least 2 vCPUs, 4 GB RAM and 20 GB storage. The database and search services each need at least 2 vCPUs, 2 GB RAM and 30 GB storage. These are minimums, not production sizing.
- Replicas: use systemd or an equivalent supervisor and a load balancer health check on each host. Confirm the multi-host configuration for your version before you rely on it.
- Image sourcing: install from release artifacts that you verify and store in your own artifact repository. No container registry is required.
- Ingestion scheduling: run ingestion on a separate host where possible, scheduled through cron or another scheduler you operate. Confirm the supported scheduling approach for your version.
- Team provisions: operating system patching, process supervision, log rotation, database and search backups, and certificate renewal.
Before go-live, ask your team who owns each host, how a failed server process is detected, and how long a restore from backup takes in your environment.
In an air-gapped network, every image, package, connector dependency and search or database artifact enters through an approved transfer process. Nothing downloads at runtime, so each installation and upgrade bundle becomes a controlled artifact with its own review. The topology can follow a Kubernetes or bare metal pattern inside the enclosure, but the supply chain changes completely.
- Replicas: choose the Kubernetes or bare metal pattern that your version supports offline. Confirm which high availability patterns are supported in the enclosure before designing around them.
- Database and search: provision both inside the enclosure. Confirm that the database and search versions can be sourced and patched without internet access.
- Image sourcing: mirror all images and packages into an internal registry and repository, with checksum or signature verification. Connectors pull their own libraries, so build a full dependency list for each connector you plan to run.
- Ingestion scheduling: connectors can reach only sources inside the enclosure. Confirm whether any feature makes outbound calls, such as hosted AI features, and disable or document each one.
- Team provisions: the internal registry, the artifact mirror, the transfer and approval procedure, offline documentation and an agreed update cadence.
Do not assume any feature works offline until the vendor or DeployOpen confirms it for your exact version and connector set.
What fails over cleanly and what needs manual attention
Treat each component in an OpenMetadata high availability design as its own failure path. Losing one server replica, failing over the database, losing a search node, restoring a search cluster and interrupting an ingestion run each leave the platform in a different state, and only some of those states recover without help. The supplied material does not describe OpenMetadata's failover internals, so the behavior below is what you must verify, not what you can assume. Before go-live, run each path in a non-production environment that mirrors your Kubernetes layout, your managed MySQL or PostgreSQL service and your Elasticsearch or OpenSearch cluster, and record what users, APIs and scheduled jobs actually experience. A server replica loss is the path most teams expect to be invisible. In a healthy multi-replica deployment, the Kubernetes Service should route new requests to surviving replicas, and in-flight browser requests may simply be retried by the user. Confirm with Collate or your own test results whether any server-side operation, such as a bulk metadata import or a long-running API call, is lost when its replica terminates. Also confirm that background tasks are not pinned to a single replica, because a scheduled job tied to a dead pod can stop without an obvious error. A database failover depends on your managed service and how OpenMetadata reconnects after the primary changes. Connections that were open at the moment of promotion may fail, and writes that were in flight may be rejected rather than retried. Ask your database provider how long promotion takes and whether the connection endpoint stays the same. Then test whether OpenMetadata reconnects on its own or needs its pods restarted, and whether any writes acknowledged just before the failover are missing afterward.
A search node loss is usually less disruptive than a database failover, because a clustered Elasticsearch or OpenSearch deployment is designed to keep serving shards from surviving nodes. Search is an index over metadata, not the system of record, so the practical risk is degraded search results, slower queries or indexing that stops until the cluster returns to a healthy state. Check cluster health thresholds, replica shard counts and the time your cluster takes to rebalance. A full search cluster restore is different: it brings back an index that may be older than the database, so search results can disagree with the metadata users see on their pages. After any search restore, plan to reindex from the database. Do not assume the restored index is current. Decide who triggers the reindex, when it runs relative to business hours, and how users are told that search may be incomplete while it finishes. Ask Collate how reindexing is triggered and how long it takes at your metadata volume, and measure it in your test environment before you rely on it for recovery. An ingestion run interrupted mid-way is the path most likely to need a human. Requests that hit a temporarily unavailable API may retry, but a metadata ingestion workflow that loses its connection partway through is generally not resumed from its last step. Confirm whether the scheduler re-runs the workflow automatically, whether partially ingested assets are left in a consistent state and whether the next run is a full or incremental pass. Assign a named owner to review failed runs after any infrastructure event. Identity state needs its own check. If the identity provider is not shared across replicas or is reconfigured per pod, a user may hold a session that one replica accepts and another rejects, which appears as random sign-outs or permission errors. Confirm how OpenMetadata stores session state, test a replica restart during an active browser session and document the steps users should take when they see an authentication error. Because OpenMetadata does not allow SSO and basic authentication at the same time, a fallback login path cannot be used to work around an identity outage, so plan that recovery path before a failure occurs.
Build a short runbook that maps each failure path to a detection signal, an owner and a recovery action. Include the checks you ran in the non-production environment, the results and the open questions you sent to the vendor. Most of the manual work in this design sits in three places: confirming which in-flight operations are lost, rebuilding search after a restore and re-triggering ingestion runs that did not finish. Scope those tasks into your rollout plan and into your support arrangements, because a fixed-scope engagement or retainer will only cover them if they are written into the agreed deliverables. When you ask Collate or your platform team for confirmation, ask specific questions: which API operations are idempotent, whether a workflow resumes or restarts, what state the search index is in after a restore, and which settings control replica count and session storage. Record each answer with the version you tested, because release-to-release behavior can change between OpenMetadata releases and patch versions.
What drives the effort and cost of an HA OpenMetadata build
This table lists the factors that change how much work a highly available OpenMetadata build takes, with what raises effort and how to keep it down for each. Use it to scope a quote, since the same platform can take very different effort depending on the environment around it. The main takeaway is that the minimum sizing is only a starting point, and production sizing must be worked out from your own source estimates and metadata volume.
| Driver | What raises effort | How to keep it down |
|---|---|---|
| Source systems and connectors | Each warehouse, BI tool, pipeline or ML platform adds a connector to configure, a credential to issue, a schedule to tune and a regression test to repeat on every upgrade. OpenMetadata lists more than 130 connectors, so the count you actually need matters more than what is available. | Onboard in waves ordered by business value. Confirm which connectors you need against the current connector list before scoping, and retire unused sources early. |
| Metadata volume and search index size | Large table counts, wide schemas and frequent ingestion runs increase database growth, Elasticsearch or OpenSearch index size and the memory the server and search nodes need. Sizing for production depends on these numbers, not on the minimums. | Measure table and column counts per source in a pilot, then run a sizing exercise for the server, database and search tiers. Scope ingestion frequency to what owners actually use. |
| Number of environments | Dev, test, production and disaster recovery each need their own cluster, database, search service, secrets and ingestion schedules. Keeping them aligned through upgrades is recurring work. | Use infrastructure as code and one Helm or manifest set with per-environment values. Limit DR to what your recovery targets require and confirm those targets before scoping. |
| Identity provider integration | Connecting SSO through a provider such as Okta, Azure, Google, Keycloak or a custom OIDC provider requires client registration, redirect configuration, group or role mapping and testing with each user population. OpenMetadata does not run SSO and basic authentication together, so cutover must be planned. | Agree the identity provider and group model before build starts. Map teams to roles once, and schedule the switch from basic authentication as a single cutover event. |
| Network segmentation between sources and the platform | Each source database, warehouse or API may sit behind its own firewall rules, private endpoints or allow lists. The ingestion scheduler, server and search nodes all need defined paths, and each path needs review. | Document required flows (ingestion to sources, server to database and search, users to the ingress) before the build. Use one approved network pattern per source type and confirm it with your network team early. |
| Compliance evidence requirements | Assessors may expect records of access controls, change history, backup and restore tests, and configuration baselines. Producing and retaining this evidence adds work to every stage. DeployOpen prepares evidence for auditors but does not issue audit reports or certifications. | Ask your compliance lead which controls apply and what format they expect before the build. Capture evidence as part of each step, not at the end, and confirm the requirements with your independent auditor. |
| Teams needing access during cutover | Data owners, stewards, platform engineers, security reviewers and the people who run ingestion each need access and sign-off during cutover. More teams mean more coordination, more test accounts and more change windows. | Name one accountable owner per team and a single cutover decision-maker. Limit the cutover to the teams whose sign-off is required, and agree the rollback plan with them in advance. |
Securing redundant OpenMetadata nodes without weakening access control
Adding replicas multiplies the places where authentication, secrets and network paths can drift or be exposed. The controls below apply the same access rules to every node, every credential and every copy of the catalog data, so redundancy does not become a wider attack surface.
Identical SSO on every replica
OpenMetadata documents SSO with Auth0, Azure, Google, Okta, Amazon Cognito, OneLogin, Keycloak and custom OIDC providers. In a multi-replica deployment, every server pod must carry the same provider, client, issuer and redirect settings, otherwise a user may be accepted on one replica and rejected on another. Confirm the configuration is rendered from one source of truth and check login through the load balancer after each change.
Basic authentication switched off
OpenMetadata does not support running multiple authentication mechanisms at once, such as SSO combined with basic authentication. Leaving basic authentication enabled as a fallback is therefore not an option in a clustered setup. Plan the cutover so local accounts are retired deliberately, and confirm with the OpenMetadata security documentation which bot and service accounts still need a token-based path.
Database and search credentials in the secret store
The server connects to MySQL or PostgreSQL and to Elasticsearch or OpenSearch using credentials that every replica needs. Store them in the cluster's secret store, not in values files or container images, and scope each credential to the minimum privileges the server requires. Ask your platform team how rotation is handled without restarting all replicas at once.
TLS at the load balancer and between services
Terminate TLS at the load balancer for user and API traffic, then decide whether traffic between the load balancer, the OpenMetadata servers, the database and the search cluster is also encrypted. Internal encryption is easy to skip in a private cluster and hard to add later. Verify certificate chains, expiry monitoring and the trust store used by each replica and by the ingestion scheduler.
Network policies on database and search ports
Restrict ingress to the database and search ports so only the OpenMetadata server pods and approved administration hosts can connect. Ingestion workers and other workloads should reach those ports only where a documented need exists. Test the policy by attempting connections from namespaces that should be blocked, and record the results alongside the rule set.
Sensitivity of replicated secrets and backups
Replicated secrets, database backups and search index snapshots carry the same sensitivity as the catalog contents, which can describe personal data fields, access patterns and internal systems. Apply the same encryption, access review and retention rules to every copy, including snapshots taken for disaster recovery. Ask your team who can restore these copies and where they are stored.
How to test OpenMetadata high availability before go-live
Your go-live decision for OpenMetadata high availability should rest on tests run against your own deployment, not on the replica count in a manifest. Run a fixed set of failure tests before cutover, and agree the pass criteria in writing with the platform, data and security owners before the first test starts. Each test should name the component it breaks, the checks that run during the failure, and the result that counts as a pass.
Start with the OpenMetadata server replicas on Kubernetes. Stop one replica at a time while a scripted loop calls the REST APIs (for example, searching for a table and fetching its lineage) and a second loop logs into the UI and opens an asset page. Record any failed request, the replica that served it if your ingress exposes that, and the time until responses return to normal. Repeat with each replica so that no single pod is the only one you have exercised.
Next, fail over the database. With a managed MySQL or PostgreSQL service, trigger the provider's failover method and confirm that the OpenMetadata servers reconnect without a manual restart. Write a test asset before the failover and read it back afterward. Confirm the engine versions you run meet the bare metal prerequisites published for OpenMetadata (MySQL 8.0.42 or later, or PostgreSQL 15 or later), and ask your database provider to confirm how failover affects open connections in your tier.
Then remove one search node, either Elasticsearch 9.x or OpenSearch 3.x, and run the same search queries you used for the baseline. Compare result counts and ranking for the test assets. Check that a scheduled ingestion run still reports a valid status and does not stall. Restart the ingestion scheduler while a run is in progress, then confirm whether the run resumes or is marked failed and rerun, and check for duplicate entities. Confirm the scheduler behavior in your exact version, because it is the behavior you will depend on in production.
Finally, restore the most recent backup into a separate environment and compare counts of entities, lineage edges and data quality test results against a snapshot taken from the source at the same point. Any difference must have a documented explanation. Keep the evidence for every test in one place: timestamped test logs, the recovery times you measured in your environment, and the configuration versions in effect (server image tag, Helm chart version, database and search engine versions, Java 21 runtime and ingestion image). A failed test should block go-live until the cause is found, fixed, and the failed test and the full suite pass again with the evidence recorded.
What buyers and engineers ask before building OpenMetadata high availability
What drives the cost of an OpenMetadata high availability build?
The main drivers are the number of environments, the database and search topology you choose, how many existing identity and cloud controls must be integrated, and how much testing you need before cutover. OpenMetadata itself is released under the Apache License 2.0, so the build cost is mostly services and infrastructure, not licensing. Costs fall into two groups. One-time costs cover design, deployment, configuration, failover testing and documentation. Recurring costs cover the database, search cluster, Kubernetes or server capacity, backups and patching. Ask any provider for a quote that separates these groups, names who performs each task, and lists the assumptions about your environment. The quote should follow from a written scope, since DeployOpen does not publish a price list.
How long does an OpenMetadata high availability build take?
Duration depends on scope, and no fixed timeline applies to every environment. The biggest factors are whether you run Kubernetes or bare metal, whether you use a managed database and search service or build those yourself, how many authentication and network integrations are needed, and how quickly your internal owners can review and approve changes. Work on existing cloud accounts with clear access usually moves faster than work that waits on new network paths or procurement. Ask for a schedule that lists each phase, the owner of each dependency, and the points where your team must sign off. Confirm any timeline against your own change calendar and security review process before you commit to a date.
What does our internal team need to provide for the build?
Plan for four groups of input. First, cloud or data center access with the rights to create clusters, load balancers, storage and secrets in the target environment. Second, ownership of the database and search services, including who approves sizing, backups, maintenance windows and failover settings. Third, an administrator for your identity provider who can create the application registration, group mappings and test accounts. Fourth, data owners who can confirm that the catalog reflects their domains and who will sign off on glossary, ownership and access decisions. OpenMetadata's minimum sizing is 2 vCPUs, 4 GB RAM and 20 GB storage for the server, with the database and search services each needing at least 2 vCPUs, 2 GB RAM and 30 GB storage. Production sizing should be confirmed with your own load and retention needs.
Can our own team build OpenMetadata high availability alone?
Yes, a team can build it alone if it already runs Kubernetes or Linux services, operates a managed database and a search cluster, and understands OpenIDConnect or SAML configuration. The skills that matter most are container orchestration, database replication and backup, search cluster operations, certificate and secret management, and identity administration. Gaps usually appear in failover testing, upgrade sequencing and connector credential handling, not in the initial install. Your team should also plan who will run releases after go-live. Collate offers commercial enterprise capabilities and premium support for OpenMetadata, which is a separate decision from building it. A fixed-scope engagement with DeployOpen can cover part of the build, with the remaining work kept in your team's hands.
Does OpenMetadata high availability work on bare metal too?
OpenMetadata documents production deployments on Kubernetes, including AWS EKS, Azure AKS, Google GKE and on-premises clusters, and it also documents a bare metal deployment without Kubernetes. Bare metal needs Java 21, MySQL 8.0.42 or later or PostgreSQL 15 or later, and Elasticsearch 9.x or OpenSearch 3.x. Running several server replicas on bare metal means you must add your own load balancing, health checks, process supervision and shared database and search endpoints. Confirm with the current bare metal documentation how the server handles multiple instances and which settings are required, because the high availability pattern differs from the Kubernetes pattern. Test failover on your own hosts before relying on it.
Do we need a partner to keep OpenMetadata patched?
You do not need a partner to patch OpenMetadata, but someone must own the work. OpenMetadata publishes maintenance releases after major versions, and the 2.0 series has moved through patch releases from 2.0.1 to 2.0.5 at about one- to two-week intervals. Each patch needs a test in a non-production environment, a check of database and search compatibility, and a rollback plan. Connector and ingestion images also need rebuilds when the base runtime changes. Ongoing support, upgrades and continuous testing are available from DeployOpen as retainers, and Collate offers premium support for its commercial offering. Decide before go-live whether your team, a retainer or a vendor will own patch approval, and write that ownership into your runbook.
What changes for high availability when upgrading from 1.x to 2.0?
OpenMetadata 2.0.0 was released on August 24, 2026. For a high availability cluster, the main change is that the upgrade needs preparation before cutover. Documented breaking changes include moving embedding credentials into an llmConfiguration block, a new Databricks authentication format, and rebuilding custom ingestion images for Python 3.12. Ingestion moves to Apache Airflow 3.3.0 in the same release. The release notes also say Great Expectations must be migrated to 1.3 before the upgrade. Plan a staging upgrade that covers every replica, the ingestion scheduler and each custom connector, and confirm the sequence against the 2.0 release notes before scheduling production work.
Running and upgrading HA OpenMetadata after launch
After go-live, the high availability design only protects you if someone watches it. Assign an owner for each signal in the cluster: the OpenMetadata server replicas on Kubernetes, the MySQL or PostgreSQL database, the Elasticsearch or OpenSearch cluster, and the ingestion scheduler. For the servers, track pod restarts, readiness failures and response times at the load balancer. For the database, track connection saturation, replication lag if you run replicas, and storage growth. For the search cluster, track cluster health status, unassigned shards, heap pressure and index size. Ingestion needs the most attention because a failed run leaves the catalog quietly out of date. Review run outcomes daily, route failed workflows to the data owners who depend on them, and treat repeated failures from one connector as a defect to fix, not as background noise. Confirm which alert channels and escalation paths your operations team already uses before adding OpenMetadata to them.
Backups must cover the database and the search indexes as separate assets, and the restore procedure must be tested for both. The database holds the authoritative metadata, so its backup schedule and retention should follow your recovery point and recovery time objectives, agreed with the business owners of the catalog. Search indexes hold derived data, but rebuilding them after a loss takes time and load on the cluster, so decide whether a snapshot schedule for the search cluster is worth the storage cost. Ask your implementation partner to confirm which reindexing options your OpenMetadata version provides after a restore, and how long a full reindex takes on your data volume. Run a restore into a separate environment on a fixed schedule, record the result, and keep the record with the runbook. An untested backup is an assumption, and auditors will ask for evidence that the restore worked.
Plan upgrades around the release cadence rather than around a fixed annual window. OpenMetadata 2.0.0 was released on August 24, 2026, and maintenance releases 2.0.1 to 2.0.5 have followed at about one to two week intervals. Each patch should be read in its release notes, tested in a staging cluster with a copy of production metadata, and promoted on a planned date. Keep the server, ingestion and search versions recorded together so that a rollback has a known target. Before each upgrade, take a fresh database backup, confirm the restore test from the last cycle is current, and check that the connector set used in production still runs against the new ingestion images. Agree in advance who approves each promotion and how long the team will hold the previous version before retiring it.
The 2.0 release contains breaking changes that must be handled before the upgrade, not during it. Embedding credentials moved into an llmConfiguration block, so any configuration that still holds them in the old location needs to be updated and tested. The Databricks connector uses a new authentication format, so service credentials and connection definitions for Databricks sources must be rewritten and verified against a test workspace. Custom ingestion images must be rebuilt for Python 3.12 because the official ingestion images moved to Python 3.12 with Apache Airflow 3.3.0. Great Expectations must be migrated to 1.3 before you upgrade, which means data quality test suites that depend on it need to be reviewed on a staging system first. Build this work into the upgrade plan as its own tracked item, with an owner and a test result for each change.
Keep documentation current enough that an auditor or a new operator can follow the platform without interviewing the original builders. The core set is an architecture diagram of the replicas, database, search cluster and scheduler, a runbook covering monitoring, alert response and escalation, and a change log recording each OpenMetadata version applied, the date, the approver and the staging test result. Add backup schedules, retention settings and the dated results of each restore test, along with an inventory of configuration items and where their secrets are stored, without the secret values themselves. Record how ingestion failures are triaged and who owns each connector. DeployOpen can prepare these records and the controls behind them, but independent auditors decide whether your controls meet the standard you are assessed against.
How DeployOpen works on this
DeployOpen plans, implements, hardens, documents and supports OpenMetadata high availability inside your own infrastructure, whether that is a Kubernetes cluster, cloud account or data center. Engagements are fixed-scope, with the scope, deliverables and timeline agreed in writing before work starts.
How we scope
- Written scope that names the Kubernetes target, server replica count and load balancer design for OpenMetadata
- Database choice between managed MySQL or PostgreSQL, with versions checked against the OpenMetadata prerequisites
- Search layout for Elasticsearch 9.x or OpenSearch 3.x, plus ingestion scheduler placement and failover expectations
How we build
- Deploy OpenMetadata server replicas, database and clustered search as code, sized from the documented minimums and your workload
- Configure shared session, authentication and secret handling so any replica can serve any user request
- Test failover of a server pod, a database node and a search node, recording behavior and recovery steps for each
How we hand over
- Runbooks covering scaling, node replacement, certificate rotation and restoring the database and search indexes
- Architecture diagram, configuration baseline and a record of failover test results for your audit file
- Knowledge transfer sessions for your platform and data engineering staff, with questions answered against your environment
How we support
- Ongoing support available as a retainer for monitoring, patching and upgrades across OpenMetadata releases
- Review of each OpenMetadata release for breaking changes before your high availability cluster is upgraded
- Confirm with your team which platform, database and search vendor support terms apply to your chosen versions

