From 5696cdc7648dbefa14282d919fa0d97a653b4f70 Mon Sep 17 00:00:00 2001 From: Seena Fallah Date: Tue, 20 Aug 2024 22:20:19 +0200 Subject: [PATCH] memberlist: respect interface names config for advertise addr If interface names are specified in common config, use this to fulfill the instance_addr with it. Signed-off-by: Seena Fallah --- pkg/loki/modules.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pkg/loki/modules.go b/pkg/loki/modules.go index 60e2683b599ff..70e45b5880266 100644 --- a/pkg/loki/modules.go +++ b/pkg/loki/modules.go @@ -33,6 +33,7 @@ import ( "github.com/prometheus/client_golang/prometheus/collectors/version" "github.com/prometheus/common/model" + "github.com/grafana/dskit/netutil" "github.com/grafana/loki/v3/pkg/analytics" "github.com/grafana/loki/v3/pkg/bloombuild/builder" "github.com/grafana/loki/v3/pkg/bloombuild/planner" @@ -1449,6 +1450,15 @@ func (t *Loki) initMemberlistKV() (services.Service, error) { ) dnsProvider := dns.NewProvider(util_log.Logger, dnsProviderReg, dns.GolangResolverType) + var err error + t.Cfg.MemberlistKV.AdvertiseAddr, err = GetInstanceAddr( + t.Cfg.MemberlistKV.AdvertiseAddr, + t.Cfg.Common.InstanceInterfaceNames, + util_log.Logger, + ) + if err != nil { + return nil, err + } t.MemberlistKV = memberlist.NewKVInitService(&t.Cfg.MemberlistKV, util_log.Logger, dnsProvider, reg) t.Cfg.CompactorConfig.CompactorRing.KVStore.MemberlistKV = t.MemberlistKV.GetMemberlistKV @@ -2042,3 +2052,16 @@ func schemaHasBoltDBShipperConfig(scfg config.SchemaConfig) bool { return false } + +func GetInstanceAddr(addr string, netInterfaces []string, logger log.Logger) (string, error) { + if len(netInterfaces) == 0 { + return addr, nil + } + + addr, err := netutil.GetFirstAddressOf(netInterfaces, logger, false) + if err != nil { + return "", err + } + + return addr, nil +}