mirror of https://github.com/status-im/consul.git
166a8b2a58
Co-authored-by: Matt Keeler <mkeeler@users.noreply.github.com> Currently when passing hostname clusters to Envoy, we set each service instance registered with Consul as an LbEndpoint for the cluster. However, Envoy can only handle one per cluster: [2020-06-04 18:32:34.094][1][warning][config] [source/common/config/grpc_subscription_impl.cc:87] gRPC config for type.googleapis.com/envoy.api.v2.Cluster rejected: Error adding/updating cluster(s) dc2.internal.ddd90499-9b47-91c5-4616-c0cbf0fc358a.consul: LOGICAL_DNS clusters must have a single locality_lb_endpoint and a single lb_endpoint, server.dc2.consul: LOGICAL_DNS clusters must have a single locality_lb_endpoint and a single lb_endpoint Envoy is currently handling this gracefully by only picking one of the endpoints. However, we should avoid passing multiple to avoid these warning logs. This PR: * Ensures we only pass one endpoint, which is tied to one service instance. * We prefer sending an endpoint which is marked as Healthy by Consul. * If no endpoints are healthy we emit a warning and skip the cluster. * If multiple unique hostnames are spread across service instances we emit a warning and let the user know which will be resolved. |
||
---|---|---|
.. | ||
testdata | ||
clusters.go | ||
clusters_test.go | ||
config.go | ||
config_test.go | ||
endpoints.go | ||
endpoints_test.go | ||
failover_math.go | ||
failover_math_test.go | ||
golden_test.go | ||
listeners.go | ||
listeners_test.go | ||
naming.go | ||
response.go | ||
routes.go | ||
routes_test.go | ||
server.go | ||
server_oss.go | ||
server_test.go | ||
testing.go | ||
xds.go |