Choosing a Load Balancer
Once you know all the load balancing products, picking one is a two-step narrowing: first the traffic type, then external vs internal and global vs regional. This page is the decision guide - for the family overview and how a request flows, see Load Balancing.
Start with the traffic type
Then narrow by two more attributes:
- External or internal? Internet-facing, or reachable only inside your VPC.
- Global or regional? Backends deployed worldwide, or in a single region.
Application LBs and proxy Network LBs terminate the connection, so backends see the load balancer's IP (the real client IP moves to X-Forwarded-For). A passthrough Network LB does not proxy - backends see the true client IP, and it can carry UDP, ESP, and ICMP, not just TCP. If the requirement says "expose client IP to the application" or "load balance UDP", it is passthrough.
Summary table
If you prefer a table to the flow chart, this maps every deployment mode to its traffic type, network service tier, and load-balancing scheme.
The load-balancing scheme
The load-balancing scheme is an attribute on the load balancer's forwarding rule and backend service. It says whether the load balancer serves internal or external traffic, and whether it runs as a managed service.
- EXTERNAL / INTERNAL - the older, non-managed schemes (classic external Application LB, passthrough Network LBs).
- EXTERNAL_MANAGED / INTERNAL_MANAGED - the newer managed schemes for the modern Application and proxy Network LBs.
- MANAGED means the data plane runs on a Google-operated service - either Google Front Ends (GFEs) or the open-source Envoy proxy - and requests are routed through the GFE or Envoy proxy.
A *_MANAGED scheme is not just a naming convention - it means the load balancer terminates and routes through a GFE or Envoy proxy fleet Google runs for you. Passthrough Network LBs (EXTERNAL / INTERNAL) are not managed in this sense: they forward packets without a proxy, which is exactly why they preserve the client IP.