Introduzione al bilanciamento del carico per API Gateway
Questo tutorial mostra come creare un bilanciatore del carico delle applicazioni esterno globale per instradare le richieste ad API Gateway. La procedura di configurazione segue gli stessi passaggi utilizzati per configurare l'integrazione del bilanciatore del carico delle applicazioni esterno globale con altri prodotti serverless come Cloud Run, Cloud Run Functions e App Engine.
Sebbene un bilanciatore del carico non sia necessario per il funzionamento di API Gateway, consente al gateway di sfruttare i vantaggi di un bilanciatore del carico. Ad esempio, l'utilizzo di un bilanciatore del carico delle applicazioni esterno globale con API Gateway consente di:
- Utilizzare domini personalizzati.
- Sfruttare Google Cloud Armor come servizio di sicurezza di rete.
- Gestire un bilanciamento del carico efficiente tra i gateway in più località.
- Implementare la gestione avanzata del traffico.
Prima di iniziare
Se non l'hai ancora fatto, scarica e installa Google Cloud CLI.
Aggiorna i componenti
gcloud:gcloud components update
Segui la guida rapida di API Gateway per eseguire il deployment di un servizio Cloud Run e creare un gateway che rimandi a quel servizio.
Esegui il deployment di un servizio Cloud Run e di un'istanza di API Gateway
In questo tutorial, eseguirai il deployment di un servizio "hello-world" in Cloud Run, creerai un gateway che esegue il routing al servizio Cloud Run e configurerai un bilanciatore del carico delle applicazioni esterno globale per instradare le richieste a un dominio personalizzato.
Sebbene questo tutorial utilizzi Cloud Run come servizio di backend per API Gateway, questi passaggi si applicano anche a tutti i servizi di backend supportati da API Gateway.
Al termine della guida rapida di API Gateway, dovresti avere un URL del gateway di cui è stato eseguito il deployment che rimanda al servizio Cloud Run.
Configura le autorizzazioni
In questo tutorial, creerai un gruppo di endpoint di rete (NEG) serverless e un bilanciatore del carico delle applicazioni esterno globale in un progetto Cloud. Per questa operazione è necessario il ruolo di proprietario o editor del progetto oppure i seguenti ruoli IAM di Compute Engine:
| Attività | Ruolo richiesto |
|---|---|
| Creare il bilanciatore del carico e i componenti di rete | Network Admin |
| Creare e modificare i NEG | Compute Instance Admin |
| Creare e modificare certificati SSL | Security Admin |
Crea una risorsa del certificato SSL
Per creare un bilanciatore del carico delle applicazioni esterno globale, è necessario aggiungere una risorsa del certificato SSL al frontend del bilanciatore del carico. Crea una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.
Certificati gestiti da Google. L'utilizzo di certificati gestiti da Google è consigliato perché Google Cloud ottiene, gestisce e rinnova questi certificati automaticamente. Per creare un certificato gestito da Google, devi disporre di un dominio e dei record DNS per quel dominio affinché il certificato venga sottoposto a provisioning. Se non hai ancora un dominio, puoi ottenerne uno da Google Domains. Inoltre, dovrai aggiornare il record A DNS del dominio in modo che punti all'indirizzo IP del bilanciatore del carico creato in un passaggio successivo. Per istruzioni dettagliate, consulta Utilizzare i certificati gestiti da Google.
Certificati autofirmati. Se non vuoi configurare un dominio in questo momento, puoi utilizzare un certificato SSL autofirmato per i test.
Questo tutorial presuppone che tu abbia già creato una risorsa del certificato SSL.
Se vuoi testare questa procedura senza creare una risorsa del certificato SSL (o un dominio come richiesto dai certificati gestiti da Google), puoi comunque utilizzare le istruzioni riportate in questa pagina per configurare un bilanciatore del carico HTTP.
Crea il bilanciatore del carico delle applicazioni esterno globale
Crea un NEG serverless per API Gateway.
Un gruppo di endpoint di rete (NEG) specifica un gruppo di endpoint di backend per un bilanciatore del carico. Un NEG serverless è un backend che rimanda a un servizio come API Gateway, come mostrato nella figura seguente:

Per creare un NEG serverless per il gateway, esegui il comando seguente, dove:
- SERVERLESS_NEG_NAME è il nome del NEG serverless da creare.
- GATEWAY_ID specifica il nome del gateway.
- REGION_ID è la regione di deployment per il NEG serverless (deve corrispondere alla regione del gateway).
gcloud beta compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=REGION_ID \ --network-endpoint-type=serverless \ --serverless-deployment-platform=apigateway.googleapis.com \ --serverless-deployment-resource=GATEWAY_ID
Ad esempio:
gcloud beta compute network-endpoint-groups create api-gateway-serverless-neg \ --region=us-central1 \ --network-endpoint-type=serverless \ --serverless-deployment-platform=apigateway.googleapis.com \ --serverless-deployment-resource=my-gateway
Crea un servizio di backend per definire la modalità di distribuzione del traffico del bilanciatore del carico delle applicazioni esterno globale.
La configurazione del servizio di backend contiene un insieme di valori, come il protocollo utilizzato per connettersi ai backend, varie impostazioni di distribuzione e sessione, controlli di integrità e timeout, come mostrato nella figura seguente:

Per creare un servizio di backend, esegui il comando seguente:
gcloud compute backend-services create BACKEND_SERVICE_NAME --global
dove BACKEND_SERVICE_NAME è il nome del nuovo servizio di backend.
Ad esempio:
gcloud compute backend-services create api-gateway-backend-service --global
Per aggiungere il NEG serverless come backend al servizio di backend, esegui il comando seguente, dove:
- BACKEND_SERVICE_NAME è il nome del servizio di backend.
- SERVERLESS_NEG_NAME è il nome del NEG serverless creato nel passaggio precedente.
- REGION_ID è la regione di deployment per il NEG serverless (deve corrispondere alla regione del gateway).
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --global \ --network-endpoint-group=SERVERLESS_NEG_NAME \ --network-endpoint-group-region=REGION_ID
Ad esempio:
gcloud compute backend-services add-backend api-gateway-backend-service \ --global \ --network-endpoint-group=api-gateway-serverless-neg \ --network-endpoint-group-region=us-central1
Crea una mappa URL per instradare le richieste in entrata al servizio di backend, come mostrato nella figura seguente:

Per creare la mappa URL, esegui il comando seguente, dove:
- URL_MAP_NAME è il nome della mappa URL da creare.
- BACKEND_SERVICE_NAME è il nome del servizio di backend.
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME
Ad esempio:
gcloud compute url-maps create api-gateway-url-map \ --default-service api-gateway-backend-service
Questa mappa URL ha come target un solo servizio di backend che rappresenta un singolo gateway, quindi non sono necessarie regole host o matcher percorso. Se hai più di un servizio di backend, puoi utilizzare le regole host per indirizzare le richieste a servizi diversi in base al nome host. Utilizza i matcher percorso per indirizzare le richieste a servizi diversi in base al percorso della richiesta.
Ad esempio:
gcloud compute url-maps add-path-matcher api-gateway-url-map \ --path-matcher-name=my-pm2 \ --default-service=my-host-default-backend \ --path-rules="/video=video-service,/video/*=video-service" \ --new-hosts my-hosts.com
gcloud compute url-maps add-host-rule api-gateway-url-map \ --hosts=my-app-domain \ --path-matcher-name=my-app-path-matcher
Per saperne di più sulle regole host e sui matcher percorso, consulta la documentazione relativa alle mappe URL.
Crea un certificato SSL per il proxy di destinazione, come mostrato nella figura seguente:

Per creare un bilanciatore del carico delle applicazioni esterno globale, è necessaria una risorsa del certificato SSL per il proxy HTTP(S) di destinazione. Puoi creare una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito. È consigliabile utilizzare i certificati gestiti da Google. Se stai testando questa procedura senza una risorsa del certificato SSL e vuoi configurare un bilanciatore del carico HTTP, puoi saltare questo passaggio.
Per creare un certificato gestito da Google, devi disporre di un dominio. Se non hai un dominio, puoi utilizzare un certificato SSL autofirmato per i test.
Per creare una risorsa del certificato SSL gestito da Google:
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
Per creare una risorsa del certificato SSL autogestito:
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Crea un proxy HTTP(S) di destinazione per instradare le richieste alla mappa URL, come mostrato nella figura seguente:

Per creare il proxy di destinazione, utilizza il comando seguente, dove:
- TARGET_HTTPS_PROXY_NAME è il nome del proxy HTTP(S) di destinazione da creare.
- URL_MAP_NAME è il nome della mappa URL creata in un passaggio precedente.
- (Facoltativo) SSL_CERT_NAME è il nome del certificato SSL creato.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERT_NAME \ --url-map=URL_MAP_NAME
Ad esempio:
gcloud compute target-https-proxies create api-gateway-https-proxy \ --ssl-certificates=hello-cert \ --url-map=