Expand description
The balancerd service is a horizontally scalable, stateless, multi-tenant ingress router for pgwire and HTTPS connections.
It listens on pgwire and HTTPS ports. When a new pgwire connection starts, the requested user is authenticated with frontegg from which a tenant id is returned. From that a target internal hostname is resolved to an IP address, and the connection is proxied to that address which has a running environmentdβs pgwire port. When a new HTTPS connection starts, its SNI hostname is used to generate an internal hostname that is resolved to an IP address, which is similarly proxied.
ModulesΒ§
StructsΒ§
- Balancer
Config - Balancer
Metrics - Prometheus monitoring metrics.
- Balancer
Service - Counting
Conn π - Frontegg
Resolver - Gauge
Guard π - Wraps an IntGauge and automatically
incs on init anddrops on drop. Callers should not callinc().. Useful for handling multiple task exit points, for example in the case of a panic. - Https
Balancer π - Internal
Http πServer - Pgwire
Balancer π - Resolved
Addr π - Server
Metrics π - Server
Metrics πConfig - SniTemplate
- Template for constructing the destination hostname from a TLS SNI
servername.
{}is replaced with the first label of the servername. - Tenant
DnsResolver - Resolves tenant hostnames for pgwire and HTTPS routing.
EnumsΒ§
- Balancer
Resolver - Cancellation
Resolver - Resolve
Error π - An error resolving a connectionβs destination.
ConstantsΒ§
- BUILD_
INFO - Balancer build information.
TraitsΒ§
- Client
Stream π
FunctionsΒ§
- cancel_
request π - Broadcasts cancellation to all matching environmentds.
conn_idβs bits [31..20] are the lower 12 bits of a UUID for an environmentd/organization. Using that and the template incancellation_resolverwe generate a hostname. That hostname resolves to all IPs of envds that match the UUID (cloud k8s infrastructure maintains that mapping). This function creates a new task for each envd and relays the cancellation message to it, broadcasting it to any envd that might match the connection. - create_
resolver π - Creates a resolver from the system DNS configuration.
- extract_
tenant_ πfrom_ cname - Extracts the tenant ID from an environmentd CNAME target.
- handle_
readiness_ πcheck - strip_
ipv6_ πbrackets - Strips the surrounding brackets from an IPv6 host literal, e.g.
[::1]becomes::1. Leaves other hosts unchanged. This lets a bracketed IPv6 literal in an address template parse as anIpAddrand resolve, matching whattokio::net::lookup_hostaccepts.