// ZooKeeper to KRaft migration

ZooKeeper to KRaft migration, done for you.
Patched ZooKeeper keeps the cluster covered until the cutover is final.

Kafka 4.0 removed ZooKeeper mode, so a ZooKeeper-mode cluster has to migrate to KRaft on a 3.x release before it can upgrade. OSSeva runs that migration for you, cluster by cluster, and ships patched ZooKeeper builds as the bridge: the brokers and the ensemble stay covered while each cluster waits for its change window and until the controllers are finalized. The same service moves ClickHouse to Keeper, Patroni to etcd and Pulsar to Oxia, and keeps ZooKeeper patched for Solr, HBase and Hadoop, which cannot leave it yet.

Kafka to KRaftPatched ZooKeeper bridgeClickHouse to KeeperPatroni to etcdPulsar to OxiaSolr, HBase, Hadoop on patched ZooKeeper

Trusted globally by enterprises

Henry ScheinEnbridgeGojekMicrosoft

Why a KRaft migration needs a bridge

The Kafka move is the common one, and it is not a single change. Other products leave ZooKeeper on their own schedules, and some cannot leave yet.

Kafka: migrate on 3.x, one change window at a time

Kafka 4.0 removed ZooKeeper mode entirely, so ZooKeeper clusters must migrate to KRaft before upgrading, and the community guidance is to do it on 3.9, the final ZooKeeper-capable line. The final step cannot be undone, so each cluster needs its own rehearsal and change window. The clusters waiting their turn still run brokers and a ZooKeeper ensemble that nobody upstream patches. That gap is what the patched bridge covers.

Ready to move: ClickHouse, Patroni

ClickHouse recommends ClickHouse Keeper, which speaks the ZooKeeper protocol on top of Raft. Patroni supports etcd, Consul and Kubernetes as well as ZooKeeper.

Moving: Pulsar

Pulsar has offered Oxia as a metadata store since 3.3.0. Pulsar 5.0, released on 5 October 2026, makes Oxia the recommended store and adds live ZooKeeper to Oxia migration (PIP-454), while ZooKeeper remains fully supported.

Not yet: Solr, HBase, Hadoop

Solr 10 still requires ZooKeeper, now through Apache Curator. HBase 3.0 still needs it on the server side, and the work to remove it from client connections is open against HBase 4.0. HDFS and YARN high availability in Hadoop 3.5 still elect leaders through ZooKeeper. These stay on a patched ensemble.

The dates that matter

  1. 2014

    The Raft paper, In Search of an Understandable Consensus Algorithm, wins Best Paper at USENIX ATC.

  2. 2021-12

    ClickHouse 21.12 declares clickhouse-keeper feature complete.

  3. 2023-01-30

    Patroni 3.0.0 deprecates its built-in Raft option in favour of an external DCS.

  4. 2025-03-18

    Kafka 4.0 removes ZooKeeper mode. KRaft only.

  5. 2026-02-21

    Kafka 3.9.2, the final release of the last ZooKeeper-capable line.

  6. 2026-03-03

    Solr 10.0.0 released. It still requires ZooKeeper.

  7. 2026-06-23

    Pulsar 5.0.0-M1 preview recommends Oxia and adds live migration from ZooKeeper.

  8. 2026-08-05

    HBase 3.0.0 released. The server side still requires ZooKeeper.

  9. 2026-10-05

    Pulsar 5.0.0 LTS released, with Oxia as the recommended metadata store.

What OSSeva delivers

1

The migration, run for you

Kafka ZooKeeper mode to KRaft before the 4.x upgrade, with each cluster rehearsed and a tested rollback until the controllers are finalized. The same team moves ClickHouse to ClickHouse Keeper with clickhouse-keeper-converter, Patroni to etcd v3, and Pulsar to Oxia on 5.0.

OSSeva AssureKRaft, Keeper, etcdOxia
2

Patched ZooKeeper bridge

Patched builds of ZooKeeper 3.4, 3.5, 3.6 and 3.7 and support for 3.8 and 3.9 keep the ensemble covered until the last client has moved, with third-party CVE attestation, including VEX. The same builds cover the Solr, HBase and Hadoop clusters that cannot leave ZooKeeper yet.

OSSeva PatchZooKeeper 3.4 to 3.9VEX attestation
3

A map of every ensemble

We find every ZooKeeper in your estate, bundled or standalone, and every product that talks to it, so you know which ensembles can be retired and which have to stay. 24/7 operations for the ensembles and their replacements are available.

Dependency mapShared ensemblesOSSeva Operate

Your options, compared

OptionWhat you getTrade-off
Migrate everything at onceA ZooKeeper-free estate on paperNot possible today. Solr, HBase and Hadoop still require ZooKeeper, and each Kafka cluster needs its own change window.
Do it yourself, in wavesFull control, using the community runbookThe clusters waiting their turn stay unpatched in Kafka and ZooKeeper.
Keep ZooKeeper, upgrade to 3.9A community-supported lineEach product's bundled client and Curator version has to be compatible first.
OSSeva migration and patched bridgeThe KRaft migration run for you, with patched Kafka and ZooKeeper until each cluster is doneA subscription covering both for as long as ZooKeeper remains.

Raft description from raft.github.io. Kafka dates from the Kafka 4.0 announcement, upgrade notes and downloads page. ClickHouse Keeper facts from the ClickHouse documentation and 2021 changelog. Pulsar facts from the 3.3.0, 5.0.0-M1 and 5.0.0 release notes. Solr, HBase and Hadoop facts from each project's news, downloads and documentation pages. Patroni facts from the Patroni release notes.

Frequently asked questions

What does a done-for-you ZooKeeper to KRaft migration include?

OSSeva inventories the clusters and the clients that talk to them, rehearses the migration on each cluster, runs it in the change window you choose, and keeps the brokers and the ZooKeeper ensemble patched until the controllers are finalized. Each cluster has a tested rollback until that final step, which cannot be undone.

Do we have to keep ZooKeeper running during the migration?

Yes. The migration is online, and ZooKeeper stays authoritative until the controllers leave migration mode. That is why the patched ZooKeeper bridge matters: the ensemble needs fixes for as long as it runs, including on clusters still waiting for their window.

ZooKeeper vs etcd: what is the difference?

Both are replicated, strongly consistent coordination stores. ZooKeeper is a Java service that uses its own ZAB protocol and a hierarchical znode tree. etcd is a Go service that uses Raft and a flat key-value space with a gRPC API. Neither is a drop-in replacement for the other, so the choice depends on what the product above supports.

Is there a ZooKeeper alternative for every product?

No. Kafka has KRaft, ClickHouse has Keeper, Patroni supports etcd and Consul, and Pulsar is moving to Oxia. Solr 10, HBase 3.0 and Hadoop 3.5 still require ZooKeeper, so those clusters stay on a patched ensemble.

Does Kafka 3.9 need to move to KRaft?

Before it can go to Kafka 4.0, yes. Kafka 4.0 removed ZooKeeper mode, and ZooKeeper-mode clusters must migrate to KRaft first. Kafka 3.9.2, released in February 2026, is the final release of the last ZooKeeper-capable line.

What happens to a shared ZooKeeper ensemble?

It stays until its last client moves. If Kafka and HBase share an ensemble, moving Kafka to KRaft does not retire it. OSSeva patches the ensemble for as long as any product still depends on it.

Let us run the KRaft migration. Keep ZooKeeper patched until it is done.

Book a discovery call and we will map every ZooKeeper in your estate, what depends on it, and which clusters can move first.