consul/agent
Dan Upton 1c2c975b0b
xDS Load Balancing (#14397)
Prior to #13244, connect proxies and gateways could only be configured by an
xDS session served by the local client agent.

In an upcoming release, it will be possible to deploy a Consul service mesh
without client agents. In this model, xDS sessions will be handled by the
servers themselves, which necessitates load-balancing to prevent a single
server from receiving a disproportionate amount of load and becoming
overwhelmed.

This introduces a simple form of load-balancing where Consul will attempt to
achieve an even spread of load (xDS sessions) between all healthy servers.
It does so by implementing a concurrent session limiter (limiter.SessionLimiter)
and adjusting the limit according to autopilot state and proxy service
registrations in the catalog.

If a server is already over capacity (i.e. the session limit is lowered),
Consul will begin draining sessions to rebalance the load. This will result
in the client receiving a `RESOURCE_EXHAUSTED` status code. It is the client's
responsibility to observe this response and reconnect to a different server.

Users of the gRPC client connection brokered by the
consul-server-connection-manager library will get this for free.

The rate at which Consul will drain sessions to rebalance load is scaled
dynamically based on the number of proxies in the catalog.
2022-09-09 15:02:01 +01:00
..
ae sdk: add TestLogLevel for setting log level in tests 2022-02-03 13:42:28 -05:00
auto-config peering: initial sync (#12842) 2022-04-21 17:34:40 -05:00
cache test: update mockery use to put mocks into test files (#13656) 2022-07-05 16:57:15 -05:00
cache-types peering: default to false (#13963) 2022-08-01 15:22:36 -04:00
checks UDP check for service stanza #12221 (#12722) 2022-06-06 15:13:19 -04:00
config Various cleanups. 2022-09-08 10:51:50 -05:00
configentry proxycfg-glue: server-local implementation of ResolvedServiceConfig 2022-09-06 23:27:25 +01:00
connect Add SpiffeID for Consul server agents (#14485) 2022-09-06 17:58:13 -06:00
consul xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
debug bulk rewrite using this script 2022-01-20 10:46:23 -06:00
dns test: fix incorrect use of t instead of r in retry test (#13146) 2022-05-19 14:00:07 -05:00
exec re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
grpc-external xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
grpc-internal grpc: rename public/private directories to external/internal (#13721) 2022-07-13 16:33:48 +01:00
grpc-middleware grpc: rename public/private directories to external/internal (#13721) 2022-07-13 16:33:48 +01:00
local Merge pull request #13499 from maxb/delete-unused-metric 2022-08-01 12:31:05 -06:00
metadata Change serf-tag references to field references. 2022-08-31 16:38:42 -05:00
mock
pool grpc: rename public/private directories to external/internal (#13721) 2022-07-13 16:33:48 +01:00
proxycfg proxycfg-glue: server-local implementation of IntentionUpstreamsDestination 2022-09-06 23:27:25 +01:00
proxycfg-glue proxycfg-glue: server-local implementation of IntentionUpstreamsDestination 2022-09-06 23:27:25 +01:00
proxycfg-sources proxycfg-sources: fix hot loop when service not found in catalog 2022-08-02 15:42:29 +01:00
router sdk: add TestLogLevel for setting log level in tests 2022-02-03 13:42:28 -05:00
routine-leak-checker Remove references to "master" ACL tokens in tests (#11751) 2021-12-07 12:48:50 +00:00
rpc xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
rpcclient/health proxycfg-glue: server-local implementation of the `Health` interface 2022-07-14 18:22:12 +01:00
structs move port and default check logic to locked step (#14057) 2022-09-06 19:35:31 -05:00
submatview proxycfg: terminate stream on irrecoverable errors 2022-08-23 20:17:49 +01:00
systemd
token agent/token: rename `agent_master` to `agent_recovery` (internally) (#11744) 2021-12-07 12:12:47 +00:00
uiserver Enable/Disable Peering Support in the UI (#13816) 2022-07-25 11:50:11 -04:00
xds xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
acl.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
acl_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
acl_endpoint_legacy.go http: update legacy ACL endpoints to return an error 2021-08-17 13:09:29 -04:00
acl_endpoint_legacy_test.go agent: Ensure partition is considered in agent endpoints (#11427) 2021-10-26 15:20:57 -04:00
acl_endpoint_test.go [OSS] Add new peering ACL rule (#13848) 2022-07-22 14:42:23 -06:00
acl_oss.go agent: support `X-Consul-Results-Filtered-By-ACLs` header in agent-local endpoints (#11610) 2021-12-03 20:36:28 +00:00
acl_test.go chore: removed unused method AddService (#13905) 2022-07-26 16:54:53 -04:00
agent.go xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
agent_endpoint.go Merge branch 'main' of github.com:hashicorp/consul into derekm/split-grpc-ports 2022-09-08 14:53:08 -05:00
agent_endpoint_oss.go Fixup acl.EnterpriseMeta 2022-04-05 15:11:49 -07:00
agent_endpoint_oss_test.go Add oss test 2022-05-09 10:07:19 -07:00
agent_endpoint_test.go Merge branch 'main' of github.com:hashicorp/consul into derekm/split-grpc-ports 2022-09-06 10:51:04 -05:00
agent_oss.go proxycfg: replace direct agent cache usage with interfaces (#13320) 2022-06-01 16:18:06 +01:00
agent_test.go Merge branch 'main' of github.com:hashicorp/consul into derekm/split-grpc-ports 2022-09-08 14:53:08 -05:00
apiserver.go
apiserver_test.go
catalog_endpoint.go [OSS] Support merge-central-config option in node services list API (#13450) 2022-06-15 08:30:31 -07:00
catalog_endpoint_oss.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
catalog_endpoint_test.go block PeerName register requests (#13887) 2022-07-29 14:36:22 -07:00
check.go Fixup acl.EnterpriseMeta 2022-04-05 15:11:49 -07:00
config_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
config_endpoint_test.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
connect_auth.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
connect_ca_endpoint.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
connect_ca_endpoint_test.go Update go version to 1.18.1 2022-04-18 11:41:10 -04:00
coordinate_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
coordinate_endpoint_test.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
delegate_mock_test.go Move ACLResolveResult into acl/resolver package (#13467) 2022-06-17 10:24:43 +01:00
denylist.go
denylist_test.go
discovery_chain_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
discovery_chain_endpoint_test.go Cluster peering failover disco chain changes (#14296) 2022-08-23 09:13:43 -04:00
dns.go Parse peer name for virtual IP DNS queries (#13602) 2022-07-06 10:30:04 -06:00
dns_oss.go Parse peer name for virtual IP DNS queries (#13602) 2022-07-06 10:30:04 -06:00
dns_test.go block PeerName register requests (#13887) 2022-07-29 14:36:22 -07:00
enterprise_delegate_oss.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
event_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
event_endpoint_test.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
federation_state_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
health_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
health_endpoint_test.go block PeerName register requests (#13887) 2022-07-29 14:36:22 -07:00
http.go Reuse http.DefaultTransport in UIMetricsProxy (#14521) 2022-09-08 11:02:05 -04:00
http_decode_test.go add test cases for h2ping_use_tls default behavior 2021-10-09 17:12:52 -04:00
http_oss.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
http_oss_test.go Remove references to "master" ACL tokens in tests (#11751) 2021-12-07 12:48:50 +00:00
http_register.go peering: rename initiate to establish in the context of the APIs (#13419) 2022-06-10 11:10:46 -05:00
http_test.go Add separate grpc_tls port. 2022-08-29 13:43:43 -05:00
intentions_endpoint.go oss: peering, http: get peer service intentions (#2098) 2022-06-22 16:25:09 -07:00
intentions_endpoint_oss_test.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
intentions_endpoint_test.go oss: peering, http: get peer service intentions (#2098) 2022-06-22 16:25:09 -07:00
keyring.go Allows keyring operations on client agents 2022-02-24 17:24:57 +00:00
keyring_test.go Remove references to "master" ACL tokens in tests (#11751) 2021-12-07 12:48:50 +00:00
kvs_endpoint.go Fix KVSGet method to handle QueryOptions properly (#13344) 2022-06-02 12:26:18 -04:00
kvs_endpoint_test.go
metrics.go agent: move agent tls metric monitor to a more appropriate place 2021-10-27 16:26:09 -04:00
metrics_test.go no 1.9 style metrics (#13532) 2022-06-29 09:46:37 -07:00
nodeid.go
nodeid_test.go
notify.go
notify_test.go
operator_endpoint.go Unify various status errors into one HTTP error type. (#12594) 2022-04-29 13:42:49 -04:00
operator_endpoint_oss.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
operator_endpoint_test.go
peering_endpoint.go Add ACL enforcement to peering endpoints 2022-07-25 09:34:29 -06:00
peering_endpoint_oss_test.go [sync oss] api: add peering api module (#12911) 2022-05-02 11:49:05 -07:00
peering_endpoint_test.go Implement/Utilize secrets for Peering Replication Stream (#13977) 2022-08-01 10:33:18 -04:00
prepared_query_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
prepared_query_endpoint_test.go Add Cluster Peering Failover Support to Prepared Queries (#13835) 2022-07-22 09:14:43 -04:00
reload.go
remote_exec.go
remote_exec_test.go Remove references to "master" ACL tokens in tests (#11751) 2021-12-07 12:48:50 +00:00
retry_join.go fix: shadowed err in retryJoin() (#14112) 2022-08-10 10:53:57 -04:00
retry_join_test.go
service_checks_test.go
service_manager.go Add support for merge-central-config query param (#13001) 2022-05-25 13:20:17 -07:00
service_manager_test.go Add support for merge-central-config query param (#13001) 2022-05-25 13:20:17 -07:00
session_endpoint.go Revert getPathSuffixUnescaped (#13256) 2022-06-01 13:17:14 -04:00
session_endpoint_test.go
setup.go xDS Load Balancing (#14397) 2022-09-09 15:02:01 +01:00
setup_oss.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
sidecar_service.go move port and default check logic to locked step (#14057) 2022-09-06 19:35:31 -05:00
sidecar_service_test.go move port and default check logic to locked step (#14057) 2022-09-06 19:35:31 -05:00
signal_unix.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
signal_windows.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
snapshot_endpoint.go
snapshot_endpoint_test.go
status_endpoint.go
status_endpoint_test.go
streaming_test.go regenerate expired certs (#11462) 2021-11-01 11:40:16 -04:00
testagent.go Add separate grpc_tls port. 2022-08-29 13:43:43 -05:00
testagent_test.go
translate_addr.go
txn_endpoint.go fix(txn api): missing proxy config in registering proxy service (#14471) 2022-09-02 14:28:05 -04:00
txn_endpoint_test.go fix(txn api): missing proxy config in registering proxy service (#14471) 2022-09-02 14:28:05 -04:00
ui_endpoint.go Reuse http.DefaultTransport in UIMetricsProxy (#14521) 2022-09-08 11:02:05 -04:00
ui_endpoint_oss_test.go re-run gofmt on 1.17 (#11579) 2021-11-16 12:04:01 -06:00
ui_endpoint_test.go block PeerName register requests (#13887) 2022-07-29 14:36:22 -07:00
user_event.go Vendor in rpc mono repo for net/rpc fork, go-msgpack, msgpackrpc. (#12311) 2022-02-14 09:45:45 -08:00
user_event_test.go chore: removed unused method AddService (#13905) 2022-07-26 16:54:53 -04:00
util.go Remove some usage of md5 from the system (#11491) 2021-11-04 13:07:54 -07:00
util_test.go Remove some usage of md5 from the system (#11491) 2021-11-04 13:07:54 -07:00
watch_handler.go
watch_handler_test.go