@@ -3,7 +3,9 @@ package worker
33import  (
44	"context" 
55	"flag" 
6+ 	"net" 
67	"os" 
8+ 	"strconv" 
79	"sync" 
810	"time" 
911
@@ -14,7 +16,9 @@ import (
1416	"github.com/weaveworks/common/httpgrpc" 
1517	"google.golang.org/grpc" 
1618
19+ 	"github.com/cortexproject/cortex/pkg/ring" 
1720	"github.com/cortexproject/cortex/pkg/util" 
21+ 	"github.com/cortexproject/cortex/pkg/util/flagext" 
1822	"github.com/cortexproject/cortex/pkg/util/grpcclient" 
1923	"github.com/cortexproject/cortex/pkg/util/services" 
2024)
@@ -33,6 +37,10 @@ type Config struct {
3337	GRPCClientConfig  grpcclient.Config  `yaml:"grpc_client_config"` 
3438
3539	TargetHeaders  []string  `yaml:"-"`  // Propagated by config. 
40+ 
41+ 	InstanceInterfaceNames  []string  `yaml:"instance_interface_names"` 
42+ 	ListenPort              int       `yaml:"-"` 
43+ 	InstanceAddr            string    `yaml:"instance_addr" doc:"hidden"` 
3644}
3745
3846func  (cfg  * Config ) RegisterFlags (f  * flag.FlagSet ) {
@@ -46,6 +54,10 @@ func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
4654	f .StringVar (& cfg .QuerierID , "querier.id" , "" , "Querier ID, sent to frontend service to identify requests from the same querier. Defaults to hostname." )
4755
4856	cfg .GRPCClientConfig .RegisterFlagsWithPrefix ("querier.frontend-client" , "" , f )
57+ 
58+ 	cfg .InstanceInterfaceNames  =  []string {"eth0" , "en0" }
59+ 	f .Var ((* flagext .StringSlice )(& cfg .InstanceInterfaceNames ), "querier.instance-interface-names" , "Name of network interface to read address from." )
60+ 	f .StringVar (& cfg .InstanceAddr , "querier.instance-addr" , "" , "IP address of the querier" )
4961}
5062
5163func  (cfg  * Config ) Validate (log  log.Logger ) error  {
@@ -109,7 +121,14 @@ func NewQuerierWorker(cfg Config, handler RequestHandler, log log.Logger, reg pr
109121		level .Info (log ).Log ("msg" , "Starting querier worker connected to query-scheduler" , "scheduler" , cfg .SchedulerAddress )
110122
111123		address  =  cfg .SchedulerAddress 
112- 		processor , servs  =  newSchedulerProcessor (cfg , handler , log , reg )
124+ 
125+ 		ipAddr , err  :=  ring .GetInstanceAddr (cfg .InstanceAddr , cfg .InstanceInterfaceNames , log )
126+ 		if  err  !=  nil  {
127+ 			return  nil , err 
128+ 		}
129+ 		querierAddr  :=  net .JoinHostPort (ipAddr , strconv .Itoa (cfg .ListenPort ))
130+ 
131+ 		processor , servs  =  newSchedulerProcessor (cfg , handler , log , reg , querierAddr )
113132
114133	case  cfg .FrontendAddress  !=  "" :
115134		level .Info (log ).Log ("msg" , "Starting querier worker connected to query-frontend" , "frontend" , cfg .FrontendAddress )
0 commit comments