@@ -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