Configure deployment mode
Grafana Mimir supports multiple deployment modes. By default, the provided Jsonnet deploys in microservices mode. Monolithic mode is not supported in Jsonnet.
Use Read-Write deployment mode
Warning
Read-Write deployment mode is experimental.
Requirements
Read-write deployment mode requires that you use multi-zone ingesters and multi-zone store gateways. Additionally, rule evaluation is performed within mimir-backend
, so you must disable ruler remote evaluation.
You can set the deployment mode via the deployment_mode
configuration variable:
{
_config+:: {
deployment_mode: 'read-write',
mimir_write_replicas: 15,
mimir_read_replicas: 6,
mimir_backend_replicas: 9,
// Requirements.
multi_zone_ingester_enabled: true,
multi_zone_store_gateway_enabled: true,
ruler_remote_evaluation_enabled: false,
// Disable microservices autoscaling.
autoscaling_querier_enabled: false,
autoscaling_ruler_querier_enabled: false,
}
}
You can configure autoscaling for the read path:
{
_config+:: {
autoscaling_mimir_read_enabled: true,
autoscaling_mimir_read_min_replicas: 2,
autoscaling_mimir_read_max_replicas: 20,
}
}
CLI flags for read-write components are inherited from the microservices. For example:
{
_config+:: {
// This change also applies to mimir-backend.
store_gateway_args+:: {
'blocks-storage.bucket-store.sync-interval': '5m',
},
}
}
⚠️ Pitfall: Kubernetes resources’ overrides are not inherited. Remember to apply overrides to both microservices and read-write components, if you make changes to any of the following items:
- Container specification, for example environment variables
- Deployment
- StatefulSet
- Service
- PodDisruptionBudget
For example:
{
_config+:: {
// This change will NOT be applied to mimir-write too.
ingester_container+::
container.withEnvMixin(
[envVar.new('GOGC', '50')]
),
mimir_write_container+::
container.withEnvMixin(
[envVar.new('GOGC', '50')]
),
}
}