docs/sources/reference-pyroscope-v2-architecture/deployment-modes/index.md
Pyroscope v2 can be deployed in different configurations depending on your scale and operational requirements.
In microservices mode, each component runs as a separate process. This is the recommended deployment for production environments at scale.
| Component | Instances | Stateful | Notes |
|---|---|---|---|
| Distributor | 2+ | No | Scale based on ingestion rate |
| Segment-writer | 2+ | No | Scale based on ingestion rate |
| Metastore | 3 or 5 | Yes | Odd number for Raft consensus |
| Compaction-worker | 2+ | No | Scale based on compaction backlog |
| Query-frontend | 2+ | No | Scale based on query load |
| Query-backend | 2+ | No | Scale based on query load |
Microservices mode requires object storage (Amazon S3, Google Cloud Storage, Azure Blob Storage, or OpenStack Swift). Local filesystem storage is not supported in this mode.
For evaluation, development, or small-scale deployments, Pyroscope v2 can run as a single process with all components enabled.
For Kubernetes deployments, use the Helm chart with v2 storage enabled.
helm install pyroscope grafana/pyroscope --version 1.20.3 \
--set architecture.storage.v1=false \
--set architecture.storage.v2=true
helm install pyroscope grafana/pyroscope --version 1.20.3 \
--set architecture.microservices.enabled=true \
--set architecture.storage.v1=false \
--set architecture.storage.v2=true
For migrating an existing v1 deployment, refer to the migration guide.
When deploying on Kubernetes:
Pyroscope v2 supports the following object storage backends:
Local filesystem storage is only supported for single-node deployments and is not suitable for production use in microservices mode.
The metastore is the only component requiring persistent storage:
All other components are stateless and primarily need:
Plan for object storage costs based on: