From 2864a4f728878df083a6a80352e22f58f58804cc Mon Sep 17 00:00:00 2001 From: Trevor Whitney Date: Tue, 26 Oct 2021 00:52:30 -0600 Subject: [PATCH] enable virtual read write targets (#4498) Co-Authored-By: Mauro Stettler Co-authored-by: Mauro Stettler --- pkg/loki/loki.go | 5 +++++ pkg/loki/modules.go | 5 ++++- pkg/querier/worker_service.go | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkg/loki/loki.go b/pkg/loki/loki.go index 51d4d0cfd5..ddd51485fe 100644 --- a/pkg/loki/loki.go +++ b/pkg/loki/loki.go @@ -425,7 +425,10 @@ func (t *Loki) setupModuleManager() error { mm.RegisterModule(Compactor, t.initCompactor) mm.RegisterModule(IndexGateway, t.initIndexGateway) mm.RegisterModule(QueryScheduler, t.initQueryScheduler) + mm.RegisterModule(All, nil) + mm.RegisterModule(Read, nil) + mm.RegisterModule(Write, nil) // Add dependencies deps := map[string][]string{ @@ -446,6 +449,8 @@ func (t *Loki) setupModuleManager() error { IndexGateway: {Server}, IngesterQuerier: {Ring}, All: {QueryScheduler, QueryFrontend, Querier, Ingester, Distributor, Ruler}, + Read: {QueryScheduler, QueryFrontend, Querier, Ruler}, + Write: {Ingester, Distributor}, } // Add IngesterQuerier as a dependency for store when target is either ingester or querier. diff --git a/pkg/loki/modules.go b/pkg/loki/modules.go index a8b62b0c3e..529bf66e9a 100644 --- a/pkg/loki/modules.go +++ b/pkg/loki/modules.go @@ -81,6 +81,8 @@ const ( IndexGateway string = "index-gateway" QueryScheduler string = "query-scheduler" All string = "all" + Read string = "read" + Write string = "write" ) func (t *Loki) initServer() (services.Service, error) { @@ -194,7 +196,7 @@ func (t *Loki) initDistributor() (services.Service, error) { // Register the distributor to receive Push requests over GRPC // EXCEPT when running with `-target=all` or `-target=` contains `ingester` - if !t.Cfg.isModuleEnabled(All) && !t.Cfg.isModuleEnabled(Ingester) { + if !t.Cfg.isModuleEnabled(All) && !t.Cfg.isModuleEnabled(Write) && !t.Cfg.isModuleEnabled(Ingester) { logproto.RegisterPusherServer(t.Server.GRPC, t.distributor) } @@ -221,6 +223,7 @@ func (t *Loki) initQuerier() (services.Service, error) { querierWorkerServiceConfig := querier.WorkerServiceConfig{ AllEnabled: t.Cfg.isModuleEnabled(All), + ReadEnabled: t.Cfg.isModuleEnabled(Read), GrpcListenPort: t.Cfg.Server.GRPCListenPort, QuerierMaxConcurrent: t.Cfg.Querier.MaxConcurrent, QuerierWorkerConfig: &t.Cfg.Worker, diff --git a/pkg/querier/worker_service.go b/pkg/querier/worker_service.go index 4fff395ee1..697abb0b66 100644 --- a/pkg/querier/worker_service.go +++ b/pkg/querier/worker_service.go @@ -21,6 +21,7 @@ import ( type WorkerServiceConfig struct { AllEnabled bool + ReadEnabled bool GrpcListenPort int QuerierMaxConcurrent int QuerierWorkerConfig *querier_worker.Config @@ -144,12 +145,13 @@ func registerRoutesExternally(routes []string, externalRouter *mux.Router, inter } func querierRunningStandalone(cfg WorkerServiceConfig) bool { - runningStandalone := !cfg.QueryFrontendEnabled && !cfg.QuerySchedulerEnabled && !cfg.AllEnabled + runningStandalone := !cfg.QueryFrontendEnabled && !cfg.QuerySchedulerEnabled && !cfg.ReadEnabled && !cfg.AllEnabled level.Debug(util_log.Logger).Log( "msg", "determining if querier is running as standalone target", "runningStandalone", runningStandalone, "queryFrontendEnabled", cfg.QueryFrontendEnabled, "queryScheduleEnabled", cfg.QuerySchedulerEnabled, + "readEnabled", cfg.ReadEnabled, "allEnabled", cfg.AllEnabled, )