Stay organized with collections Save and categorize content based on your preferences.
External Application Load Balancers with Identity-Aware Proxy (IAP) are supported with the following backend types:
This setup guide shows you how to create an external Application Load Balancer with a
Compute Engine managed instance groupbackend with IAP enabled.
For general concepts, see the External Application Load Balancer overview.
If you are an existing user of the classic Application Load Balancer, make sure that you review Migration overview when you plan a new deployment with the global external Application Load Balancer.
Load balancer topologiesFor an HTTPS load balancer, you create the configuration shown in the following diagram.
Figure 1. External Application Load Balancer with a managed instance group (MIG) backend (click to enlarge).For an HTTP load balancer, you create the configuration shown in the following diagram.
Figure 2. External Application Load Balancer with a managed instance group (MIG) backend (click to enlarge).The sequence of events in the diagrams are as follows:
For an HTTPS load balancer, the forwarding rule directs the request to the target HTTPS proxy.
For an HTTP load balancer, the forwarding rule directs the request to the target HTTP proxy.
The target proxy uses the rule in the URL map to determine that the single backend service receives all requests.
The load balancer determines that the backend service has only one instance group and directs the request to a virtual machine (VM) instance in that group.
The VM serves the content requested by the user.
Complete the following steps before you create the load balancer.
Set up an SSL certificate resourceFor an HTTPS load balancer, create an SSL certificate resource as described in the following:
We recommend using a Google-managed certificate.
This example assumes that you already have an SSL certificate resource named www-ssl-cert
.
To complete the steps in this guide, you must have permission to create Compute Engine instances, firewall rules, and reserved IP addresses in a project. You must have either a project owner or editor role, or you must have the following Compute Engine IAM roles.
For more information, see the following guides:
Configure the network and subnetsTo create the example network and subnet, follow these steps.
ConsoleIn the Google Cloud console, go to the VPC networks page.
Click Create VPC network.
Enter a Name for the network.
For the Subnet creation mode, choose Custom.
In the New subnet section, configure the following fields:
Click Done.
To add a subnet in a different region, click Add subnet and repeat the previous steps.
Click Create.
Create the custom mode VPC network:
gcloud compute networks create NETWORK \ --subnet-mode=custom
Within the network, create a subnet for backends:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Replace the following:
NETWORK
: a name for the VPC network.
SUBNET
: a name for the subnet.
REGION
: the name of the region.
To set up a load balancer with a Compute Engine backend, your VMs need to be in an instance group. This guide describes how to create a managed instance group with Linux VMs that have Apache running, and then set up load balancing. A managed instance group creates each of its managed instances based on the instance templates that you specify.
The managed instance group provides VMs running the backend servers of an external HTTP(S) load balancer. For demonstration purposes, backends serve their own hostnames.
Before you create a managed instance group, create an instance template.
ConsoleTo support IPv4 traffic, use the following steps:
In the Google Cloud console, go to the Instance templates page.
Click Create instance template.
For Name, enter lb-backend-template
.
Ensure that the Boot disk is set to a Debian image, such as Debian GNU/Linux 12 (bookworm). These instructions use commands that are only available on Debian, such as apt-get
.
Expand Advanced options.
Expand Networking and configure the following fields:
allow-health-check
.NETWORK
SUBNET
Expand Management. In the Startup script field, enter the following script:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Click Create.
To support IPv4 traffic, run the following command:
gcloud compute instance-templates create TEMPLATE_NAME \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_ONLY \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'Terraform
To create the instance template, use the google_compute_instance_template
resource.
Create the managed instance group and select the instance template.
ConsoleIn the Google Cloud console, go to the Instance groups page.
Click Create instance group.
On the left, choose New managed instance group (stateless).
For Name, enter lb-backend-example
.
Under Location, select Single zone.
For Region, select your preferred region.
For Zone, select a zone.
Under Instance template, select the instance template lb-backend-template
.
For Autoscaling mode, select On: add and remove instances to the group.
Set Minimum number of instances to 2
, and set Maximum number of instances to 2
or more.
To create the new instance group, click Create.
Create the managed instance group based on the template.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
To create the managed instance group, use the google_compute_instance_group_manager
resource.
To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.
Add a named port to the instance groupFor your instance group, define an HTTP service and map a port name to the relevant port. The load balancing service forwards traffic to the named port. For more information, see Named ports.
ConsoleIn the Google Cloud console, go to the Instance groups page.
Click lb-backend-example.
On the instance group's Overview page, click editEdit.
In the Port mapping section, click Add port.
http
. For the port number, enter 80
.Click Save.
Use the gcloud compute instance-groups set-named-ports
command.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE_ATerraform
The named_port
attribute is included in the managed instance group sample.
In this example, you create the fw-allow-health-check
firewall rule. This is an ingress rule that allows traffic from the Google Cloud health checking systems (130.211.0.0/22
and 35.191.0.0/16
). This example uses the target tag allow-health-check
to identify the VMs.
In the Google Cloud console, go to the Firewall policies page.
Click Create firewall rule to create the firewall rule.
For Name, enter fw-allow-health-check
.
Select a Network.
Under Targets, select Specified target tags.
Populate the Target tags field with allow-health-check
.
Set Source filter to IPv4 ranges.
Set Source IPv4 ranges to 130.211.0.0/22
and 35.191.0.0/16
.
Under Protocols and ports, select Specified protocols and ports.
Select the TCP checkbox, and then type 80
for the port numbers.
Click Create.
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80Terraform
To create the firewall rule, use the google_compute_firewall
resource.
To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.
Reserve an external IP addressNow that your instances are up and running, set up a global static external IP address that your customers use to reach your load balancer.
ConsoleIn the Google Cloud console, go to the External IP addresses page.
To reserve an IPv4 address, click Reserve external static IP address.
For Name, enter lb-ipv4-1
.
Set Network Service Tier to Premium.
Set IP version to IPv4.
Set Type to Global.
Click Reserve.
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Note the IPv4 address that was reserved:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --globalTerraform
To reserve the IP address, use the google_compute_global_address
resource.
To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.
Set up the load balancerIn this example, you are using HTTPS (frontend) between the client and the load balancer. For HTTPS, you need one or more SSL certificate resources to configure the proxy. We recommend using a Google-managed certificate.
Even if you're using HTTPS on the frontend, you can use HTTP on the backend. Google automatically encrypts traffic between Google Front Ends (GFEs) and your backends that reside within Google Cloud VPC networks.
Console Start your configurationIn the Google Cloud console, go to the Load balancing page.
Basic configuration
For the load balancer Name, enter something like web-map-https
or web-map-http
.
Frontend configuration
IPv4
for IPv4 traffic. Set IP address to lb-ipv4-1
, which you created earlier.my-ssl-policy
.Enabling this checkbox creates an additional partial HTTP load balancer that uses the same IP address as your HTTPS load balancer and redirects incoming HTTP requests to your load balancer's HTTPS frontend.
This checkbox can only be selected when the HTTPS protocol is selected and a reserved IP address is used.
Backend configuration
web-backend-service
.http
.lb-backend-example
.80
.http-basic-check
.Optional: Configure a default backend security policy. The default security policy throttles traffic over a user-configured threshold. For more information about default security policies, see the Rate limiting overview.
None
in the backend security policy list menu.1
and 10,000
.Host and path rules
For Host and path rules, retain the default settings.
Review and finalize
Wait for the load balancer to be created.
If you created an HTTPS load balancer and selected the Enable HTTP to HTTPS Redirect checkbox, you will also see an HTTP load balancer created with a -redirect suffix.
gcloud compute health-checks create http http-basic-check \ --port 80
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Set up an HTTPS frontend
Skip this section for HTTP load balancers.
For HTTPS, create a target HTTPS proxy to route requests to your URL map. The proxy is the portion of the load balancer that holds the SSL certificate for an HTTPS load balancer, so you also load your certificate in this step.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0To attach the SSL policy to the global target HTTPS proxy:
gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
Set up an HTTP frontend
Skip this section for HTTPS load balancers.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
To create the health check, use the google_compute_health_check
resource.
To create the backend service, use the google_compute_backend_service
resource.
This example uses load_balancing_scheme="EXTERNAL_MANAGED"
, which sets up a global external Application Load Balancer with advanced traffic management capability. To create a classic Application Load Balancer, make sure you change the load_balancing_scheme
to EXTERNAL
before running the script.
To create the URL map, use the google_compute_url_map
resource.
To create the target HTTP proxy, use the google_compute_target_http_proxy
resource.
To create the forwarding rule, use the google_compute_global_forwarding_rule
resource.
This example uses load_balancing_scheme="EXTERNAL_MANAGED"
, which sets up a global external Application Load Balancer with advanced traffic management capability. To create a classic Application Load Balancer, make sure you change the load_balancing_scheme
to EXTERNAL
before running the script.
To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.
Enable IAP on the external Application Load BalancerNote: IAP isn't compatible with Cloud CDN.
You can configure IAP to be enabled or disabled (default). If enabled, you must provide values for oauth2-client-id
and oauth2-client-secret
.
To enable IAP, update the backend service to include the --iap=enabled
flag with the oauth2-client-id
and oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Optionally, you can enable IAP for a Compute Engine resource by using the Google Cloud console, gcloud CLI, or API.
Connect your domain to your load balancerAfter the load balancer is created, note the IP address that is associated with the load balancer—for example, 30.90.80.100
. To point your domain to your load balancer, create an A
record by using your domain registration service. If you added multiple domains to your SSL certificate, you must add an A
record for each one, all pointing to the load balancer's IP address. For example, to create A
records for www.example.com
and example.com
, use the following:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
If you use Cloud DNS as your DNS provider, see Add, modify, and delete records.
Test traffic sent to your instancesNow that the load balancing service is running, you can send traffic to the forwarding rule and watch the traffic be dispersed to different instances.
ConsoleIn the Google Cloud console, go to the Load balancing page.
In the Backend section, confirm that the VMs are healthy. The Healthy column should be populated, indicating that both VMs are healthy (2/2
). If you see otherwise, first try reloading the page. It can take a few moments for the Google Cloud console to indicate that the VMs are healthy. If the backends do not appear healthy after a few minutes, review the firewall configuration and the network tag assigned to your backend VMs.
https://IP_ADDRESS
(or http://IP_ADDRESS
). Replace IP_ADDRESS
with the load balancer's IP address.Page served from: lb-backend-example-xxxx
). If your browser doesn't render this page, review the configuration settings in this guide.gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
After a few minutes have passed, you can test the setup by running the following curl
command.
curl http://IP_ADDRESS
-OR-
curl https://HOSTNAMEWhat's next
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-07-02 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-07-02 UTC."],[[["External Application Load Balancers support various backend types, including instance groups, zonal network endpoint groups (NEGs), serverless NEGs, Internet NEGs, hybrid connectivity NEGs, and Private Service Connect NEGs, excluding backend buckets."],["The setup guide demonstrates creating an external Application Load Balancer with a Compute Engine managed instance group backend, where you can choose between HTTP or HTTPS load balancer."],["Before configuring the load balancer, users must set up an SSL certificate resource for HTTPS load balancers, configure necessary permissions, and establish the network and subnets."],["A managed instance group is required for Compute Engine backends and is created using an instance template that defines the configurations for each VM, such as network tags and startup scripts."],["Identity-Aware Proxy (IAP) can be enabled on the external Application Load Balancer by updating the backend service with the necessary client ID and secret, while also noting it is incompatible with Cloud CDN."]]],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4