Implementa un servidor de aplicaciones recuperable en frío con discos persistentes regionales

Este documento está dirigido a arquitectos y personas que trabajan en equipos de operaciones y administrativos. En el documento, se describe un patrón de ejemplo que puedes usar para tus propias implementaciones en Google Cloud.

En este patrón, debes usar discos persistentes regionales con un grupo de instancias administrado a fin de implementar un patrón de conmutación por error en frío para un servidor web.

En este instructivo, crearás un grupo de instancias administrado que ejecuta una sola VM con un disco persistente regional que almacena datos. El balanceo de cargas de HTTP(S) externo dirige a los usuarios a la VM que se ejecuta en el grupo de instancias administrado, como se muestra en la siguiente imagen:

El balanceo de cargas de HTTP(S) externo dirige a los usuarios a una sola VM que se ejecuta en un grupo de instancias administrado, y un disco persistente regional se conecta a la VM.

Si se produce una falla en la instancia, el grupo de instancias administrado intenta volver a crear la VM en la misma zona. Si la falla es a nivel de zona, Cloud Monitoring o similar puede informarte que hay un problema y crear de forma manual otro grupo de instancias administrado en otra zona de trabajo. En cualquier situación de conmutación por error, la plataforma conecta el disco persistente regional a la VM nueva del grupo de instancias.

En este documento, usarás la dirección IP externa de la VM o el balanceador de cargas para ver una página básica en el servidor web. Este método te permite probar el patrón de conmutación por error en frío si no tienes un nombre de dominio registrado y sin ningún cambio de DNS. En un entorno de producción, crea y configura una zona y un registro de Cloud DNS que se resuelva en la dirección IP externa asignada al balanceador de cargas.

En esta situación, se equilibra la diferencia de costos entre ejecutar varias VM y mantener un cierto nivel de protección de datos. Los costos son más altos cuando ejecutas un disco persistente regional que proporciona replicación continua de datos entre dos zonas de una región, pero minimizas el riesgo de pérdida de datos si hay una falla a nivel de zona. Para reducir los costos de almacenamiento, considera implementar una aplicación en frío que se puede recuperar mediante instantáneas de disco persistente.

En la siguiente tabla, se describen algunas diferencias de alto nivel en las opciones de protección de datos para los enfoques recuperables en frío que usan discos persistentes regionales o instantáneas de discos persistentes. Para obtener más información, consulta Opciones de alta disponibilidad con discos persistentes.

Discos persistentes regionales Instantáneas de discos persistentes
Pérdida de datos: Objetivo de punto de recuperación (RPO) Cero para una sola falla, como la interrupción sostenida en una zona o la desconexión de la red. Todos los datos desde la última instantánea que se tomó, que suele ser de una hora o más.

La posible pérdida de datos depende de tu programación de instantáneas, que controla la frecuencia con la que se toman las instantáneas.
Objetivo de tiempo de recuperación (RTO). Tiempo de implementación para una nueva VM, más varios segundos a fin de que se vuelva a conectar el disco persistente regional. El tiempo de implementación de una VM nueva más el tiempo para crear un disco persistente nuevo a partir de la instantánea más reciente.

La hora de creación del disco depende del tamaño de la instantánea y puede tardar decenas de minutos u horas.
Costo Los costos de almacenamiento se duplican, ya que el disco persistente regional se replica de forma continua en otra zona. Solo debes pagar por la cantidad de espacio de instantáneas consumido.
Para obtener más información, consulta Precios de imágenes y discos.

Objetivos

  • Crear un grupo de instancias administrado para ejecutar una VM con un disco persistente regional.
  • Crear una plantilla de instancias y una secuencia de comandos de inicio
  • Crear y configurar el balanceo de cargas de HTTP(S) externo
  • Prueba la conmutación por error del servidor web en frío con un grupo de instancias administrado de reemplazo.

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos para obtener una prueba gratuita.

Antes de comenzar

  1. 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.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita la API Compute Engine.

    Habilita la API

  5. Instala e inicializa el SDK de Cloud.
  6. Puedes ejecutar la herramienta de línea de comandos de gcloud en Cloud Console sin instalar el SDK de Cloud. Para ejecutar la herramienta de gcloud en Cloud Console, usa Cloud Shell.

Prepare el entorno

En esta sección, defines algunas variables para los nombres y las ubicaciones de tus recursos. Los comandos de la herramienta de línea de comandos de gcloud usan estas variables a medida que implementas los recursos.

A menos que se indique lo contrario, debes ingresar todos los comandos en Cloud Shell o en tu entorno de desarrollo local en este instructivo.

  1. Reemplaza PROJECT_ID con el ID de tu proyecto. Si lo deseas, proporciona tu propio sufijo de nombre para los recursos, como app.

    Especifica una región, como us-central1, y dos zonas dentro de esa región, como us-central1-a y us-central1-f. En estas zonas, se define dónde se implementan el disco persistente regional y el grupo de instancias administrado inicial, y dónde puedes realizar una conmutación por error manual si fuera necesario.

    PROJECT_ID=PROJECT_ID
    NAME_SUFFIX=app
    REGION=us-central1
    ZONE1=us-central1-a
    ZONE2=us-central1-f
    

Crea una VPC y una subred

Para proporcionar acceso de red a las VM, crea una nube privada virtual (VPC) y una subred. Como el grupo de instancias administrado funciona en varias zonas de una misma región, solo se crea una subred. Para obtener más información sobre las ventajas del modo de subred personalizado a fin de administrar los rangos de direcciones IP en uso en tu entorno, consulta Usa redes de VPC en modo personalizado.

  1. Crea la VPC con un modo de subred personalizado:

    gcloud compute networks create network-$NAME_SUFFIX \
        --subnet-mode=custom
    

    Si ves un mensaje de Cloud Shell, autoriza esta primera solicitud para realizar llamadas a la API.

  2. Crea una subred en la VPC nueva. Define tu propio rango de direcciones, como 10.1.0.0/20, que se ajuste al rango de tu red:

    gcloud compute networks subnets create subnet-$NAME_SUFFIX-$REGION \
        --network=network-$NAME_SUFFIX \
        --range=10.1.0.0/20 \
        --region=$REGION
    

Crea reglas de firewall

  1. Crea reglas de firewall para permitir el tráfico web y las verificaciones de estado del balanceador de cargas y los grupos de instancias administrados:

    gcloud compute firewall-rules create allow-http-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:80 \
        --source-ranges=0.0.0.0/0 \
        --target-tags=http-server
    
    gcloud compute firewall-rules create allow-health-check-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=allow-health-check \
        --rules=tcp:80
    

    La regla HTTP permite el tráfico a cualquier VM en la que se aplique la etiqueta http-server y desde cualquier fuente que use el rango 0.0.0.0/0. En el caso de la regla de verificación de estado, se establecen rangos predeterminados para Google Cloud a fin de permitir que la plataforma verifique de forma correcta el estado de los recursos.

  2. A fin de permitir el tráfico SSH para la configuración inicial de una imagen de VM base, apunta la regla de firewall a tu entorno mediante el parámetro --source-range. Es posible que debas trabajar con tu equipo de red para determinar qué rangos de origen usa tu organización.

    Reemplaza IP_ADDRESS_SCOPE por tus propios alcances de dirección IP:

    gcloud compute firewall-rules create allow-ssh-$NAME_SUFFIX \
        --network=network-$NAME_SUFFIX \
        --direction=INGRESS \
        --priority=1000 \
        --action=ALLOW \
        --rules=tcp:22 \
        --source-ranges=IP_ADDRESS_SCOPE
    
  3. Después de crear las reglas de firewall, verifica que se hayan agregado las tres reglas:

    gcloud compute firewall-rules list \
        --project=$PROJECT_ID \
        --filter="NETWORK=network-$NAME_SUFFIX"
    

    El siguiente resultado de ejemplo muestra que las tres reglas se crearon de forma correcta:

    NAME                    NETWORK      DIRECTION  PRIORITY  ALLOW
    allow-health-check-app  network-app  INGRESS    1000      tcp:80
    allow-http-app          network-app  INGRESS    1000      tcp:80
    allow-ssh-app           network-app  INGRESS    1000      tcp:22
    

Crea un disco persistente regional y una VM

Un disco persistente regional proporciona replicación continua de datos entre dos zonas de una región. Luego, los grupos de instancias administrados que se ejecutan en las mismas dos zonas que el disco persistente regional pueden conectar el disco a una VM.

  1. Crea una SSD de 10 GiB. Comprende tus necesidades de almacenamiento y los costos asociados de pagar por el espacio aprovisionado, no el espacio consumido. Para obtener más información, consulta los precios de los discos persistentes.

    gcloud compute disks create disk-$NAME_SUFFIX \
        --region $REGION \
        --replica-zones $ZONE1,$ZONE2 \
        --size=10 \
        --type=pd-ssd
    
  2. Crea una VM base con el disco regional persistente conectado:

    gcloud compute instances create vm-base-$NAME_SUFFIX \
        --zone=$ZONE1 \
        --machine-type=n1-standard-1 \
        --subnet=subnet-$NAME_SUFFIX-$REGION \
        --tags=http-server \
        --image=debian-10-buster-v20210721 \
        --image-project=debian-cloud \
        --boot-disk-size=10GB \
        --boot-disk-type=pd-balanced \
        --boot-disk-device-name=vm-base-$NAME_SUFFIX \
        --disk=mode=rw,name=disk-$NAME_SUFFIX,device-name=disk-$NAME_SUFFIX,scope=regional
    

    Usa los parámetros definidos al comienzo de este documento para nombrar la VM y conectarte a la subred correcta. Los nombres también se asignan a partir de los parámetros del disco de arranque y el disco de datos.

  3. Para instalar y configurar el sitio web simple, primero conéctate a la VM base mediante SSH:

    gcloud compute ssh vm-base-$NAME_SUFFIX --zone=$ZONE1
    
  4. En la sesión SSH a la VM, crea una secuencia de comandos para configurar la VM en el editor que elijas. En el siguiente ejemplo, se usa Nano como editor:

    nano configure-vm.sh
    

    Pega la siguiente secuencia de comandos de configuración en el archivo. Actualiza la variable NAME_SUFFIX para que coincida con el valor establecido al comienzo de este documento, como app:

    #!/bin/bash
    
    NAME_SUFFIX=app
    
    # Create directory for the basic website files
    sudo mkdir -p /var/www/example.com
    sudo chmod a+w /var/www/example.com
    sudo chown -R www-data: /var/www/example.com
    
    # Find the disk name, then format and mount it
    DISK_NAME="google-disk-$NAME_SUFFIX"
    DISK_PATH="$(find /dev/disk/by-id -name "${DISK_NAME}" | xargs -I '{}' readlink -f '{}')"
    
    sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard $DISK_PATH
    sudo mount -o discard,defaults $DISK_PATH /var/www/example.com
    
    # Install Apache
    sudo apt-get update && sudo apt-get -y install apache2
    
    # Write out a basic HTML file to the mounted persistent disk
    sudo tee -a /var/www/example.com/index.html >/dev/null <<'EOF'
    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test web server with regional persistent disks!</p>
    </body>
    </html>
    EOF
    
    # Write out an Apache configuration file
    sudo tee -a /etc/apache2/sites-available/example.com.conf >/dev/null <<'EOF'
    <VirtualHost *:80>
            ServerName www.example.com
    
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/example.com
    
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    EOF
    
    # Enable the Apache configuration file and reload service
    sudo a2dissite 000-default
    sudo a2ensite example.com.conf
    sudo systemctl reload apache2
    
  5. Escribe el archivo y sal del editor. Por ejemplo, en Nano, usa Ctrl-O para escribir el archivo y, luego, sal con Ctrl-X.

  6. Haz que la secuencia de comandos de configuración sea ejecutable y, luego, ejecútala:

    chmod +x configure-vm.sh
    ./configure-vm.sh
    
  7. Salga de la sesión SSH en la VM.

    exit
    
  8. Obtén la dirección IP de la VM y usa curl para ver la página web básica:

    curl $(gcloud compute instances describe vm-base-$NAME_SUFFIX \
        --zone $ZONE1 \
        --format="value(networkInterfaces.accessConfigs.[0].natIP)")
    

    Se muestra el sitio web básico, como se muestra en el siguiente resultado de ejemplo:

    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test web server with regional persistent disks!</p>
    </body>
    </html>
    

    Este paso confirma que Apache esté configurado correctamente y que la página se cargue desde el disco persistente regional conectado. En las siguientes secciones, crearás una imagen con esta VM base y configurarás una plantilla de instancias con una secuencia de comandos de inicio.

Crea una imagen de VM y una plantilla de instancias

Para crear VM idénticas que se puedan implementar de forma automática sin una configuración adicional requerida, usa una imagen de VM personalizada. Esta imagen captura la configuración de SO y Apache. Cada VM creada en el grupo de instancias administrado en los siguientes pasos usa esta imagen.

  1. Antes de crear una imagen, debes detener la VM:

    gcloud compute instances stop vm-base-$NAME_SUFFIX --zone=$ZONE1
    
  2. Crea una imagen de la VM base configurada en la sección anterior:

    gcloud compute images create image-$NAME_SUFFIX \
        --source-disk=vm-base-$NAME_SUFFIX \
        --source-disk-zone=$ZONE1 \
        --storage-location=$REGION
    
  3. Crea una plantilla de instancias que defina la configuración de cada VM:

    gcloud compute instance-templates create template-$NAME_SUFFIX \
        --machine-type=n1-standard-1 \
        --subnet=projects/$PROJECT_ID/regions/$REGION/subnetworks/subnet-$NAME_SUFFIX-$REGION \
        --tags=http-server \
        --image=image-$NAME_SUFFIX \
        --region=$REGION \
        --metadata=^,@^startup-script=\!\#\ /bin/bash$'\n'echo\ UUID=\`blkid\ -s\ UUID\ -o\ value\ /dev/sdb\`\ /var/www/example.com\ ext4\ discard,defaults,nofail\ 0\ 2\ \|\ tee\ -a\ /etc/fstab$'\n'mount\ -a
    

    La imagen creada en el paso anterior se define como el origen de cada VM, y también se define una secuencia de comandos de inicio que activa el disco persistente regional.

Crea un grupo de instancias administrado

Un grupo de instancias administrado ejecuta las VM. El grupo de instancias administrado se ejecuta en una zona definida y supervisa el estado de las VM. Si se produce un error en la instancia y la VM deja de ejecutarse, el grupo de instancias administrado intenta volver a crear otra VM en la misma zona y conecta el disco persistente regional. Si la falla está a nivel de la zona, debes realizar la conmutación por error en frío y crear otro grupo de instancias administrado en una zona diferente de forma manual. La misma imagen personalizada y plantilla de instancias configuran la VM de forma idéntica y automática.

  1. Crea una verificación de estado para supervisar las VM del grupo de instancias administrado. Esta verificación de estado se asegura de que la VM responda en el puerto 80. Para tus propias aplicaciones, supervisa los puertos adecuados a fin de verificar el estado de la VM.

    gcloud compute health-checks create http http-basic-check-$NAME_SUFFIX --port 80
    
  2. Crea un grupo de instancias administrado, inicialmente con cero VM, que use la plantilla de instancias que se creó en el paso anterior.

    gcloud compute instance-groups managed create instance-group-$NAME_SUFFIX-$ZONE1 \
        --base-instance-name=instance-vm-$NAME_SUFFIX \
        --template=template-$NAME_SUFFIX \
        --size=0 \
        --zone=$ZONE1 \
        --health-check=http-basic-check-$NAME_SUFFIX
    
  3. Ahora, crea una sola VM en el grupo de instancias administrado y adjunta el disco persistente regional. Si hay una falla de esta VM, el grupo de instancias administrado intenta volver a crearla en la misma zona y vuelve a conectar el disco persistente.

    gcloud compute instance-groups managed create-instance instance-group-$NAME_SUFFIX-$ZONE1 \
        --instance instance-vm-$NAME_SUFFIX \
        --zone=$ZONE1\
        --stateful-disk device-name=disk-$NAME_SUFFIX,source=projects/$PROJECT_ID/regions/$REGION/disks/disk-$NAME_SUFFIX
    

En esta situación de aplicación recuperable en frío, no crees reglas de ajuste de escala automático para aumentar la cantidad de VM que se ejecutan en el grupo de instancias administrado.

Crea y configura un balanceador de cargas

Para que los usuarios accedan a tu sitio web, debes permitir el tráfico a través de las VM que se ejecutan en el grupo de instancias administrado. También debes redireccionar de manera automática el tráfico a VM nuevas si hay una falla de zona en un grupo de instancias administrado.

En la siguiente sección, crearás un balanceador de cargas externo con un servicio de backend para el tráfico HTTP en el puerto 80, y usarás la verificación de estado creada en los pasos anteriores. una dirección IP externa al servicio de backend

Para obtener más información, consulta Cómo configurar un balanceador de cargas de HTTP externo simple.

  1. Crea y configura el balanceador de cargas para tu aplicación:

    # Configure port rules for HTTP port 80
    gcloud compute instance-groups set-named-ports \
        instance-group-$NAME_SUFFIX-$ZONE1 \
        --named-ports http:80 \
        --zone $ZONE1
    
    # Create a backend service and add the managed instance group to it
    gcloud compute backend-services create \
        web-backend-service-$NAME_SUFFIX \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check-$NAME_SUFFIX \
        --global
    
    gcloud compute backend-services add-backend \
        web-backend-service-$NAME_SUFFIX \
        --instance-group=instance-group-$NAME_SUFFIX-$ZONE1 \
        --instance-group-zone=$ZONE1 \
        --global
    
    # Create a URL map for the backend service
    gcloud compute url-maps create web-map-http-$NAME_SUFFIX \
        --default-service web-backend-service-$NAME_SUFFIX
    
    # Configure forwarding for the HTTP traffic
    gcloud compute target-http-proxies create \
        http-lb-proxy-$NAME_SUFFIX \
        --url-map web-map-http-$NAME_SUFFIX
    
    gcloud compute forwarding-rules create \
        http-content-rule-$NAME_SUFFIX \
        --global \
        --target-http-proxy=http-lb-proxy-$NAME_SUFFIX \
        --ports=80
    
  2. Obtén la dirección IP de la regla de reenvío para el tráfico web:

    IP_ADDRESS=$(gcloud compute forwarding-rules describe http-content-rule-$NAME_SUFFIX \
        --global \
        --format="value(IPAddress)")
    
  3. Usa curl o abre tu navegador web para ver el sitio web mediante la dirección IP del balanceador de cargas del paso anterior:

    curl $IP_ADDRESS
    

    El balanceador de cargas tarda unos minutos en terminar la implementación y dirigir el tráfico a tu backend de forma correcta. Se muestra un error HTTP 404 o 502 si el balanceador de cargas todavía se está implementando. Si es necesario, espera unos minutos y vuelve a acceder al sitio web.

    Se muestra el sitio web básico, como se muestra en el siguiente resultado de ejemplo:

    <!doctype html>
    
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test web server with regional persistent disks!</p>
    </body>
    </html>
    

Simula una falla y recuperación de zona

Revisemos las implementaciones de recursos antes de simular una falla a nivel de zona. Todos los recursos se crearon para admitir el entorno, como se muestra en la siguiente imagen:

El balanceo de cargas de HTTP(S) externo dirige a los usuarios a una sola VM que se ejecuta en un grupo de instancias administrado, y un disco persistente regional se conecta a la VM.

  • Una VM con ejecuciones en un grupo de instancias administrado, con un disco persistente regional conectado que almacena un sitio web básico
  • Se aplica una secuencia de comandos de inicio a una plantilla de instancias para que las VM creadas en el grupo de instancias administrado activen el disco persistente regional.
  • Una verificación de estado supervisa el estado de la VM dentro del grupo de instancias administrado.
  • El balanceo de cargas de HTTP(S) externo dirige a los usuarios a la VM que se ejecuta en el grupo de instancias administrado.
  • Si la VM falla, el grupo de instancias administrado intenta volver a crear una VM en la misma zona. Si el error se produce a nivel de la zona, debes crear de forma manual un grupo de instancias administrado de reemplazo en otra zona de trabajo.

En un entorno de producción, es posible que recibas una alerta mediante Cloud Monitoring o cualquier otra solución de supervisión cuando exista un problema. Esta alerta le pide a una persona que comprenda el alcance de la falla antes de que crees un grupo de instancias administrado de reemplazo de forma manual en otra zona de trabajo. Un enfoque alternativo es usar la solución de supervisión para responder de forma automática a las interrupciones con el grupo de instancias administrado.

Cuando tú o tu solución de supervisión determinen que la acción más adecuada es realizar una conmutación por error, crea un grupo de instancias administrado de reemplazo. En este documento, crearás este recurso de reemplazo de forma manual.

  1. Para simular una falla a nivel de la zona, borra el backend del balanceador de cargas y el grupo de instancias administrado:

    gcloud compute backend-services remove-backend \
        web-backend-service-$NAME_SUFFIX \
        --instance-group=instance-group-$NAME_SUFFIX-$ZONE1 \
        --instance-group-zone=$ZONE1 \
        --global
    
    gcloud compute instance-groups managed delete instance-group-$NAME_SUFFIX-$ZONE1 \
          --zone=$ZONE1
    

    Cuando se te solicite, confirma la solicitud para borrar el grupo de instancias administrado.

    En un entorno de producción, el sistema de supervisión genera una alerta que ahora solicita una acción de conmutación por error en frío.

  2. Usa curl o el navegador web de nuevo para acceder a la dirección IP del balanceador de cargas:

    curl $IP_ADDRESS --max-time 5
    

    La solicitud curl falla porque no hay objetivos en buen estado para el balanceador de cargas.

  3. Para simular la conmutación por error en frío, crea un grupo de instancias administrado en una zona diferente:

    gcloud compute instance-groups managed create instance-group-$NAME_SUFFIX-$ZONE2 \
        --base-instance-name=instance-vm-$NAME_SUFFIX \
        --template=template-$NAME_SUFFIX \
        --size=0 \
        --zone=$ZONE2 \
        --health-check=http-basic-check-$NAME_SUFFIX
    
    gcloud compute instance-groups managed create-instance instance-group-$NAME_SUFFIX-$ZONE2 \
        --instance instance-vm-$NAME_SUFFIX \
        --zone=$ZONE2 \
        --stateful-disk device-name=disk-$NAME_SUFFIX,source=projects/$PROJECT_ID/regions/$REGION/disks/disk-$NAME_SUFFIX
    

    La imagen de VM, la plantilla de instancias y el disco persistente regional mantienen toda la configuración de la instancia de la aplicación.

  4. Actualiza el balanceador de cargas para agregar la VM y el grupo de instancias administrado nuevos:

    gcloud compute instance-groups set-named-ports \
        instance-group-$NAME_SUFFIX-$ZONE2 \
        --named-ports http:80 \
        --zone $ZONE2
    
    gcloud compute backend-services add-backend \
        web-backend-service-$NAME_SUFFIX \
        --instance-group=instance-group-$NAME_SUFFIX-$ZONE2 \
        --instance-group-zone=$ZONE2 \
        --global
    
  5. Usa curl o tu navegador web una vez más para acceder a la dirección IP del balanceador de cargas que dirige el tráfico a la VM que se ejecuta en el grupo de instancias administrado:

    curl $IP_ADDRESS
    

    La VM tarda unos minutos en terminar de implementar y conectar el disco persistente regional. Si es necesario, espera unos minutos y vuelve a acceder al sitio web.

    En la siguiente respuesta de ejemplo, se muestra la página web que se ejecuta de forma correcta en la VM:

    <!doctype html>
    <html lang=en>
    <head>
    <meta charset=utf-8>
        <title>HA / DR example</title>
    </head>
    <body>
        <p>Welcome to a test web server with regional persistent disks!</p>
    </body>
    </html>
    

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Para borrar los recursos individuales creados en este documento, completa los siguientes pasos.

  1. Borra la configuración del balanceador de cargas:

    gcloud compute forwarding-rules delete \
        http-content-rule-$NAME_SUFFIX --global --quiet
    
    gcloud compute target-http-proxies delete \
        http-lb-proxy-$NAME_SUFFIX --quiet
    
    gcloud compute url-maps delete web-map-http-$NAME_SUFFIX --quiet
    
    gcloud compute backend-services delete \
        web-backend-service-$NAME_SUFFIX --global --quiet
    
  2. Borra el grupo de instancias administrado y la verificación de estado:

    gcloud compute instance-groups managed delete instance-group-$NAME_SUFFIX-$ZONE2 \
        --zone=$ZONE2 --quiet
    
    gcloud compute health-checks delete http-basic-check-$NAME_SUFFIX --quiet
    
  3. Borra la plantilla de instancias, la imagen, la VM base y el disco persistente:

    gcloud compute instance-templates delete template-$NAME_SUFFIX --quiet
    
    gcloud compute images delete image-$NAME_SUFFIX --quiet
    
    gcloud compute instances delete vm-base-$NAME_SUFFIX --zone=$ZONE1 --quiet
    
    gcloud compute disks delete disk-$NAME_SUFFIX --region=$REGION --quiet
    
  4. Borra las reglas de firewall:

    gcloud compute firewall-rules delete allow-health-check-$NAME_SUFFIX --quiet
    
    gcloud compute firewall-rules delete allow-ssh-$NAME_SUFFIX --quiet
    
    gcloud compute firewall-rules delete allow-http-$NAME_SUFFIX --quiet
    
  5. Borra la dirección IP externa estática, la subred y la VPC:

    gcloud compute networks subnets delete \
        subnet-$NAME_SUFFIX-$REGION --region=$REGION --quiet
    
    gcloud compute networks delete network-$NAME_SUFFIX --quiet
    

¿Qué sigue?