Skip to content

Commit 094d3ba

Browse files
committed
switch to filtering addresses by region
1 parent 21d9a4a commit 094d3ba

File tree

2 files changed

+16
-34
lines changed

2 files changed

+16
-34
lines changed

client/client.go

+14-33
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import (
5858
vaultapi "github.com/hashicorp/vault/api"
5959
"github.com/shirou/gopsutil/v3/host"
6060
"golang.org/x/exp/maps"
61+
"golang.org/x/exp/slices"
6162
)
6263

6364
const (
@@ -2906,14 +2907,8 @@ func (c *Client) consulDiscoveryImpl() error {
29062907
dcs = dcs[0:helper.Min(len(dcs), datacenterQueryLimit)]
29072908
}
29082909

2909-
// Query for servers in this client's region only. Note this has to be an
2910-
// unauthenticated request because we haven't registered yet.
2910+
// Query for servers in this client's region only
29112911
region := c.Region()
2912-
rpcargs := structs.GenericRequest{
2913-
QueryOptions: structs.QueryOptions{
2914-
Region: region,
2915-
},
2916-
}
29172912

29182913
serviceName := c.GetConfig().ConsulConfig.ServerServiceName
29192914
var mErr multierror.Error
@@ -2934,41 +2929,27 @@ DISCOLOOP:
29342929
}
29352930

29362931
for _, s := range consulServices {
2937-
port := strconv.Itoa(s.ServicePort)
2938-
addrstr := s.ServiceAddress
2939-
if addrstr == "" {
2940-
addrstr = s.Address
2941-
}
2942-
addr, err := net.ResolveTCPAddr("tcp", net.JoinHostPort(addrstr, port))
2943-
if err != nil {
2944-
mErr.Errors = append(mErr.Errors, err)
2945-
continue
2946-
}
2947-
2948-
srv := &servers.Server{Addr: addr}
2949-
nomadServers = append(nomadServers, srv)
2950-
2951-
// Query the client-advertise RPC addresses from the region that
2952-
// Consul gave us
2953-
var resp *structs.RPCServersResponse
2954-
if err := c.connPool.RPC(region, addr, "Status.RPCServers", rpcargs, &resp); err != nil {
2955-
mErr.Errors = append(mErr.Errors, err)
2956-
continue
2957-
}
2958-
for _, member := range resp.Addresses {
2959-
addr, err := net.ResolveTCPAddr("tcp", member)
2932+
if slices.Contains(s.ServiceTags, region) {
2933+
port := strconv.Itoa(s.ServicePort)
2934+
addrstr := s.ServiceAddress
2935+
if addrstr == "" {
2936+
addrstr = s.Address
2937+
}
2938+
addr, err := net.ResolveTCPAddr("tcp", net.JoinHostPort(addrstr, port))
29602939
if err != nil {
29612940
mErr.Errors = append(mErr.Errors, err)
29622941
continue
29632942
}
2943+
29642944
srv := &servers.Server{Addr: addr}
29652945
nomadServers = append(nomadServers, srv)
29662946
}
2947+
}
29672948

2968-
if len(nomadServers) > 0 {
2969-
break DISCOLOOP
2970-
}
2949+
if len(nomadServers) > 0 {
2950+
break DISCOLOOP
29712951
}
2952+
29722953
}
29732954
if len(nomadServers) == 0 {
29742955
if len(mErr.Errors) > 0 {

command/agent/agent.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,8 @@ func (a *Agent) setupServer() error {
891891
rpcServ := &structs.Service{
892892
Name: a.config.Consul.ServerServiceName,
893893
PortLabel: a.config.AdvertiseAddrs.RPC,
894-
Tags: append([]string{consul.ServiceTagRPC}, a.config.Consul.Tags...),
894+
Tags: append([]string{consul.ServiceTagRPC, a.config.Region},
895+
a.config.Consul.Tags...),
895896
Checks: []*structs.ServiceCheck{
896897
{
897898
Name: a.config.Consul.ServerRPCCheckName,

0 commit comments

Comments
 (0)