helm-charts icon indicating copy to clipboard operation
helm-charts copied to clipboard

Make control-plane deployment optional

Open cprass opened this issue 2 years ago • 9 comments

Hi, I'm using Quickwit in a distributed setup, using a S3 file-based metastore.

Server 1 has the following components:

  • control plane
  • indexer
  • metastore

Server 2 is using the helm chart to add the searcher UI with those components:

  • searchers
  • metastore
  • janitor

Since the values.yaml in cludes this part

control_plane:
  replicaCount: 1

I assumed if it is possible to disable the control-plane completely in such a distributed setup. The docs also say that the control-plane is only about indexing tasks. Now the replicaCount value doesn't seem to have any effect, it isn't used in the control-plane deployment file. It's using a hard-coded replicas: 1.

Would it make sense to have a deployment with only metastore, janitor and searchers and without control-plane? Would it even make sense to have multiple control planes or would a simple enable: true/false suffice?

cprass avatar Jul 03 '23 14:07 cprass

Hi @ChrisGitter,

The control plane is in charge of spinning and monitoring indexing tasks (pipelines) on indexers. Without this component, no indexing happens in a cluster. Consequently, the control plane is a mandatory service of a Quickwit deployment. We should clarify that in the documentation and make the Helm chart less ambiguous by removing the replicaCount option.

Secondly, if you are using a file-backed metastore, there should be only one metastore service in the cluster.

Finally, the janitor can potentially perform some CPU-heavy tasks (deletions), which can affect the performance of your searchers, so I would not collocate janitors and searchers.

Here's how I would deploy Quickwit with two nodes and three nodes with a file-backed metastore:

Two-node setup Node 1:

  • control-plane
  • indexer
  • janitor

Node 2:

  • metastore
  • searcher

Three-node setup Node 1:

  • control-plane
  • janitor

Node 2:

  • indexer

Node 3:

  • metastore
  • searcher

guilload avatar Jul 03 '23 14:07 guilload

@guilload thanks for the example. I think I should have used a better terminology. I have two (almost) completely isolated Quickwit clusters. Cluster 1 is only indexing the data from the logs on that server, there is no janitor and no searcher. Cluster 2 is only providing the searchers, I also added the Janitor there, because performance on the node is not a critical as in cluster 1.

cprass avatar Jul 03 '23 15:07 cprass

Are you using a file-backed metastore or Postgres?

guilload avatar Jul 03 '23 15:07 guilload

Currently the only option for me is a file-backed metastore.

cprass avatar Jul 03 '23 16:07 cprass

why not starting the control plane service on one indexer only? that would imply having a custom helm chart though.

fmassot avatar Jul 03 '23 16:07 fmassot

@guilload thanks for the example. I think I should have used a better terminology. I have two (almost) completely isolated Quickwit clusters. Cluster 1 is only indexing the data from the logs on that server, there is no janitor and no searcher. Cluster 2 is only providing the searchers, I also added the Janitor there, because performance on the node is not a critical as in cluster 1.

Ok, I see. So basically, you want a write cluster and a read cluster. The file-backed metastore does not support multiple concurrent writers so you'll have to place the janitor in the write cluster too:

Write cluster:

  • control-plane (at most one replica)
  • indexer (any number of replicas)
  • janitor (at most one replica)
  • metastore (at most one replica)

Read cluster:

  • searcher (any number of replicas)
  • metastore (at most one replica)

guilload avatar Jul 04 '23 01:07 guilload

why not starting the control plane service on one indexer only? that would imply having a custom helm chart though.

I guess that answers my question if the control-plane was necessary for a cluster with only searchers. In my current setup the write-cluster is done with a manual docker deployment, only the read-cluster is using the helm chart.

@guilload thanks I updated the setup to match the one you provided.

cprass avatar Jul 04 '23 13:07 cprass

I have a similar requirement: 2 clusters, one for read only, and the other as a full cluster. I'm using a shared RDS instance so both metastores are in sync.

I would like also to deactivate the control_plane on the read only (not used because it only works in joint with the indexer).

I will add a PR for this.

katlim-br avatar Jan 22 '25 15:01 katlim-br

Here this is the PR https://github.com/quickwit-oss/helm-charts/pull/122

katlim-br avatar Jan 22 '25 15:01 katlim-br