Realizar pruebas de conmutación por error en entornos de alta resiliencia

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En esta página se describe cómo realizar pruebas de conmutación por error de bases de datos y clústeres en entornos de alta resiliencia.

Las pruebas de conmutación por error de tu entorno simulan una interrupción completa de una zona en un centro de datos. En ese caso, puede que se produzca una interrupción zonal de un clúster y una interrupción zonal de una base de datos al mismo tiempo. Al realizar las dos pruebas de conmutación por error, puedes monitorizar cómo se lleva a cabo la conmutación por error en tu entorno de alta disponibilidad y comprobar cómo afecta a tus DAGs y tareas.

Antes de empezar

  • Para realizar pruebas de conmutación por error, tu cuenta de Google debe tener los siguientes roles y permisos:

  • Si usas redes autorizadas, debes ejecutar los comandos kubectl desde una máquina que pueda acceder al endpoint del plano de control del clúster de GKE. En función de cómo configures el acceso al endpoint del plano de control de tu entorno, puedes usar varias opciones. Para obtener más información, consulta Ejecutar comandos en un entorno de IP privada.

Comprobar que el entorno es correcto

Asegúrate de realizar pruebas de conmutación por error solo en entornos correctos. Para comprobar que tu entorno está en buen estado, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Vaya a la pestaña Monitorización.

  4. Asegúrate de que todas las métricas de salud estén en verde.

Realizar una prueba de conmutación por error de la base de datos

Puedes realizar una prueba de conmutación por error de la base de datos, que simula una interrupción zonal, activándola con un comando de la CLI de Google Cloud. Por ejemplo, puedes hacerlo para medir el tiempo que tarda la base de datos de tu entorno en cambiar a otra zona.

Para realizar una prueba de conmutación por error de la base de datos en tu entorno, sigue estos pasos:

  1. Asegúrate de que tu entorno esté en buen estado.

  2. Obtén la zona principal de la base de datos de tu entorno:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Haz los cambios siguientes:

    • ENVIRONMENT_NAME: el nombre de tu entorno de Cloud Composer.
    • LOCATION: la región en la que se encuentra el entorno.

    Ejemplo:

    gcloud composer environments fetch-database-properties \
        example-environment \
        --location us-central1
    
  3. Inicia la prueba de conmutación por error de la base de datos:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    Haz los cambios siguientes:

    • ENVIRONMENT_NAME: el nombre de tu entorno de Cloud Composer.
    • LOCATION: la región en la que se encuentra el entorno.

    Ejemplo:

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. Espera a que finalice la prueba de conmutación por error de la base de datos. El proceso puede tardar hasta 3 minutos.

  5. Comprueba que la zona principal de la base de datos de tu entorno ha cambiado:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. Consulta las métricas de salud de tu entorno para asegurarte de que está en buen estado.

  7. La base de datos de tu entorno estará lista para otra conmutación por error cuando la métrica del entorno Base de datos disponible para conmutación por error (composer.googleapis.com/environment/database/available_for_failover) pase a True. Para obtener más información sobre cómo ver las métricas de tu entorno en Cloud Monitoring, consulta el artículo Monitorizar entornos.

Realizar la prueba de conmutación por error del clúster de tu entorno

Puedes realizar una prueba de conmutación por error del clúster de tu entorno, que simula una interrupción zonal. Por ejemplo, puede que quieras hacerlo para medir el tiempo que tarda tu entorno en cambiar a otra zona.

Comprobar que el entorno es correcto

Antes de empezar la prueba, asegúrate de que tu entorno esté en buen estado.

Configurar las credenciales del clúster de tu entorno

Para obtener las credenciales del clúster, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Haz clic en Ver detalles del clúster.

  5. Haz clic en Connect (Conectar).

  6. Copia y ejecuta el comando de Google Cloud CLI que se muestra.

    Por ejemplo:

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

Inspeccionar el clúster de tu entorno

Consulta las zonas y los nodos en los que se ejecutan las cargas de trabajo del clúster de tu entorno. Utiliza esta información para simular una interrupción zonal más adelante. También puedes volver a ejecutar estos comandos mientras realizas la prueba de conmutación por error para ver cómo lleva a cabo la conmutación por error el clúster de tu entorno.

  1. Comprueba los nodos y las zonas:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. Comprueba los pods:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. Para ver información más detallada sobre los pods, haz lo siguiente:

    kubectl get pods --all-namespaces -o wide \
    --field-selector metadata.namespace!=kube-system
    

Drenar nodos

Elige una zona en la que quieras simular un corte. Si realizas la prueba de conmutación por error del clúster junto con la prueba de conmutación por error de la base de datos, puedes elegir la zona principal de la instancia de Cloud SQL de alta disponibilidad de tu entorno. Por ejemplo, si la instancia principal de Cloud SQL se ejecuta en us-central1-a, puedes simular una interrupción en toda la zona us-central1-a. Para ello, primero realiza la prueba de conmutación por error de la base de datos y, después, la prueba de conmutación por error del clúster en us-central1-a.

El siguiente comando simula que un conjunto de nodos deja de estar disponible en una zona específica. Fuerza la expulsión de los pods de los nodos de la zona especificada e impide que se vuelvan a programar en esos nodos. Como no se pueden programar nuevos pods, se añaden nuevos nodos al clúster.

Este comando no afecta a las cargas de trabajo que se ejecutan en el espacio de nombres composer-system. Es posible que veas mensajes de error relacionados en el resultado del comando. Esto no afecta a la prueba de conmutación por error. Los nodos que existen en la zona seleccionada siguen marcados como no programables.

Para simular un fallo de zona de clúster en la zona seleccionada, haz lo siguiente:

kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction

Haz los cambios siguientes:

  • ZONE: la zona en la que quieres simular un fallo de zona de clúster.

Consultar las métricas del entorno

Métricas del entorno durante una interrupción simulada de una zona
Figura 1. Métricas del entorno durante una interrupción simulada de una zona (haz clic para ampliar)
  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Vaya a la pestaña Monitorización.

  4. Comprueba que las siguientes métricas tengan el estado "verde" durante la operación de conmutación por error o que mantengan el estado "rojo" durante varios minutos como máximo.

    • Estado del entorno
    • Señal de latido del programador
    • Estado del servidor web
    • Estado de la base de datos
    • Trabajadores activos
    • Programadores activos
    • Servidores web activos
    • Activadores activos

    Ten en cuenta que la interrupción simulada se marca como "Operación de mantenimiento del clúster".

  5. No tienes que hacer nada más para que el clúster de tu entorno vuelva a estar preparado para la conmutación por error después de la prueba. Durante la prueba, el clúster del entorno añade automáticamente nodos nuevos que sustituyen a los afectados por la interrupción simulada.

Siguientes pasos