Skip to main content
Keep one Rootprint instance and scale Quickwit: move its metastore to PostgreSQL, move index storage to shared object storage, then add Quickwit nodes. For what each store holds and what to back up, see What’s stored where.

What you can run in parallel

  • Rootprint: run one active instance. Do not add load-balanced Rootprint replicas.
  • Quickwit: add nodes to grow ingest and search capacity.
  • Rootprint database: move it to external or managed Postgres if you like. It needs its own database, separate from Quickwit’s metastore.
Point QUICKWIT_URL at a Quickwit REST endpoint, a load balancer, or a Kubernetes service.

Move the metastore and index storage

The bundled file-backed metastore is not distributed, and the local Docker volume is single-node only. On every Quickwit node, set:
  • QW_METASTORE_URI (or metastore_uri) to a PostgreSQL database.
  • QW_DEFAULT_INDEX_ROOT_URI to shared object storage, with the same storage credentials and flavor on every node.
The Quickwit database must already exist. Quickwit creates and migrates its own tables on startup. For other storage backends, see Other storage backends. For connection-string options, see Quickwit metastore configuration.
Changing these settings doesn’t move existing logs or index metadata. Quickwit starts with an empty metastore, and earlier logs no longer appear in search. Make this change on a fresh deployment, or re-send historical logs after the switch. Keep the original volume and metastore until you’ve verified historical searches.

Connect the Quickwit nodes

Before you add indexers or searchers, set on every Quickwit node:
  • QW_PEER_SEEDS: addresses of one or more other nodes, used for cluster discovery. On Kubernetes, point it at a headless service.
  • QW_ADVERTISE_ADDRESS: the address other nodes use to reach this one. The Quickwit image listens on 0.0.0.0 and guesses a private IP to advertise. Set this when other nodes can’t reach that IP.
  • QW_LISTEN_ADDRESS: set it to a reachable interface when you run Quickwit outside its image. The default 127.0.0.1 can’t form a cluster.
Nodes talk over gossip on UDP 7280 and gRPC on TCP 7281. Open both between nodes on a private network only. Rootprint reaches Quickwit over REST on TCP 7280. See Quickwit ports configuration.

Scale the Quickwit cluster to your load

Choose each node’s services with quickwit run --service ... or QW_ENABLED_SERVICES.
  • Add indexers when ingest throughput is the bottleneck.
  • Add searchers when search or aggregations are. Size them by query concurrency.
  • One control plane, one metastore service, and one janitor are usually enough.
For starting-point CPU, memory, and disk numbers, see Quickwit cluster sizing. For Kubernetes, start from the official Quickwit Helm chart.