En esta guía, se muestra cómo implementar un servicio de Cloud Run multirregional y de alta disponibilidad con conmutación por error y recuperación automáticas para el tráfico externo. Puedes configurar un servicio de Cloud Run con estas funciones configurando NEG sin servidores, un balanceador de cargas de aplicaciones externo global y una sonda de disponibilidad. Para obtener más información, consulta Entrega tráfico desde varias regiones.
Objetivos
En este instructivo, podrás:
Antes de comenzar
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Habilita las APIs de Artifact Registry, Cloud Build, Cloud Run Admin, Network Services y Compute Engine.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.- Instala y, luego, inicializa gcloud CLI.
- Actualiza los componentes, como se indica a continuación:
gcloud components update
- Establece las variables de configuración que se usan en este instructivo:
Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud .PROJECT_ID= gcloud config set core/project PROJECT_ID PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") SERVICE=health-example REGION_A=us-west1 REGION_B=europe-west1
Establece los roles requeridos
Para realizar la implementación desde la fuente con compilación, tú o tu administrador deben otorgar a la cuenta de servicio de Cloud Build los siguientes roles de IAM.
Haz clic para ver los roles necesarios para la cuenta de servicio de Cloud Build
Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como la cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y el recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build pueda compilar tus fuentes, pídele a tu administrador que otorgue el rol de Compilador de Cloud Run (roles/run.builder) a la cuenta de servicio predeterminada de Compute Engine en tu proyecto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Reemplaza PROJECT_NUMBER por el número de tu proyecto Google Cloudy PROJECT_ID por el ID del proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID del proyecto y el número de tu proyecto, consulta Crea y administra proyectos.
El otorgamiento del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.
Para obtener los permisos que tu identidad de servicio necesita para acceder al archivo y al bucket de Cloud Storage, pídele a tu administrador que otorgue a la identidad de servicio el rol de Administrador de almacenamiento (roles/storage.admin).
Si deseas obtener más detalles sobre los roles y los permisos de Cloud Storage, consulta IAM para Cloud Storage.
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con lasGoogle Cloud APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta los permisos de implementación y cómo administrar el acceso.
Prepara la aplicación de ejemplo
A fin de recuperar la muestra de código para su uso, haz lo siguiente:
Clona el repositorio de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/golang-samplesVe al directorio que contiene el código de muestra de Cloud Run:
cd golang-samples/run/service-health
Implementa el servicio de Cloud Run en dos regiones con sondeos de disponibilidad
Las conmutaciones por error requieren al menos dos servicios de regiones diferentes. Para implementar tus servicios desde el código fuente en dos regiones diferentes con sondeos de disponibilidad, ejecuta los siguientes comandos:
Implementa tu servicio
health-exampleenus-west1yeurope-west1desde el directorio del código fuente. Necesitas al menos una instancia mínima para configurar el estado del servicio con sondeos de disponibilidad:gcloud beta run deploy $SERVICE \ --source=. \ --regions=$REGION_A,$REGION_B \ --min=10 \ --readiness-probe httpGet.path="/are_you_ready"Responde a cualquier solicitud para instalar las API obligatorias. Para ello, responde
ycuando se te solicite. Solo debes hacer esto una vez en un proyecto. Para responder a otras solicitudes, suministra la plataforma y la región si no configuraste los valores predeterminados de estas como se describe en la sección Antes de comenzar.
Configurar un balanceador de cargas de aplicaciones externo global
Para configurar un balanceador de cargas de aplicaciones externo global que enrute el tráfico entre us-west1 y europe-west1, sigue estos pasos:
Crea un servicio de backend:
gcloud compute backend-services create $SERVICE-bs \ --load-balancing-scheme=EXTERNAL_MANAGED \ --globalConfigura una dirección IP externa estática global para acceder a tu balanceador de cargas:
gcloud compute addresses create $SERVICE-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --globalCrea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend:
gcloud compute url-maps create $SERVICE-lb \ --default-service $SERVICE-bsCrea un Proxy HTTP de destino para enrutar las solicitudes a tu mapa de URLs:
gcloud compute target-http-proxies create $SERVICE-hp \ --url-map=$SERVICE-lbCrea una regla de reenvío para enrutar las solicitudes entrantes al proxy:
gcloud compute forwarding-rules create $SERVICE-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=$SERVICE-ip \ --target-http-proxy=$SERVICE-hp \ --global \ --ports=80
Agrega tus servicios a través de un NEG sin servidores
Para agregar los servicios que implementaste en us-west1 y europe-west1 con el NEG sin servidores, sigue estos pasos:
Crea un grupo de extremos de red (NEG) sin servidores para tu servicio de Cloud Run en
us-west1yeurope-west1:gcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_A \ --region $REGION_A \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEgcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_B \ --region $REGION_B \ --network-endpoint-type=serverless \ --cloud-run-service=$SERVICEAgrega el NEG sin servidores como un backend a los servicios de backend en
us-west1yeurope-west1:gcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_A \ --network-endpoint-group-region=$REGION_Agcloud compute backend-services add-backend $SERVICE-bs \ --global \ --network-endpoint-group=$SERVICE-neg-$REGION_B \ --network-endpoint-group-region=$REGION_B
Para obtener más opciones de configuración, consulta Configura un balanceador de cargas de aplicaciones externo global con Cloud Run.
Prueba la conmutación por error
Para probar la conmutación por error y garantizar la confiabilidad y la resiliencia de tus servicios de Cloud Run, sigue estos pasos:
Ejecuta el siguiente comando para obtener la dirección IP de tu balanceador de cargas:
LBIP=$(gcloud compute addresses describe $SERVICE-ip --global --format='value(address)')Opcional: Envía una solicitud a tu balanceador de cargas si tus servicios requieren autenticación:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $LBIPEjecuta el comando
echo $LBIPpara obtener el valor de la variable LBIP. Esto genera la dirección IP del balanceador de cargas. Por ejemplo,11.22.33.44Para probar una conmutación por error, navega a la URL
http://LOAD_BALANCER_IP, donde LOAD_BALANCER_IP es el valor que obtuviste en el paso anterior. Haz clic en el botón de activación de tu región en la sección Serving Regions. Esto designa la región en buen estado y la instancia que entrega tráfico:
Realiza una limpieza
Para evitar cargos adicionales en tu cuenta de Google Cloud , borra todos los recursos que implementaste con este instructivo.
Borra el proyecto
Si creaste un proyecto nuevo para este instructivo, bórralo. Si usaste un proyecto existente y necesitas conservarlo sin los cambios que agregaste en este instructivo, borra los recursos que creaste para el instructivo.
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, sigue estos pasos:
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Elimina recursos de instructivos
Borra el servicio de Cloud Run que implementaste en este instructivo. Los servicios de Cloud Run no generan costos hasta que reciben solicitudes.
Para borrar tu servicio de Cloud Run, ejecuta el siguiente comando:
gcloud run services delete SERVICE-NAME
SERVICE-NAME por el nombre del servicio
También puedes borrar los servicios de Cloud Run desde la consola deGoogle Cloud .
Quita la configuración de región predeterminada de
gcloudque agregaste durante la configuración del instructivo:gcloud config unset run/regionQuita la configuración del proyecto:
gcloud config unset project
¿Qué sigue?
Obtén más información sobre las configuraciones multirregión en otros productos de Google Cloud :
Obtén más información para configurar verificaciones de estado para los servicios de Cloud Run
Configura un balanceador de cargas de aplicaciones externo global con Cloud Run