Realiza pruebas de conmutación por error para entornos de alta resiliencia

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

Las pruebas de conmutación por error para el entorno simulan una interrupción completa de una zona en un centro de datos. En este caso, una interrupción zonal de un clúster y una interrupción zonal de una base de datos pueden ocurrir al mismo tiempo. Si realizas las dos pruebas de conmutación por error, puedes supervisar cómo tu entorno de alta resiliencia realiza una conmutación por error y verificar cómo esto afecta tus DAG y tareas.

Antes de comenzar

  • Para realizar pruebas de conmutación por error, tu cuenta debe tener las siguientes funciones y permisos:

    • composer.environments.update permiso Consulta Control de acceso con la IAM para obtener una lista de las funciones con este permiso.

    • La función de administrador de clústeres de Kubernetes Engine (roles/container.clusterAdmin) para ejecutar comandos de kubectl en el clúster del entorno Como alternativa, puedes aprovisionar funciones de RBAC de Kubernetes directamente en GKE.

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

Comprueba que tu entorno esté en buen estado

Asegúrate de realizar pruebas de conmutación por error de clústeres de la base de datos y del entorno solo en entornos en buen estado.

Para verificar que tu entorno esté en buen estado, haz lo siguiente:

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

    Ir a Entornos

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

  3. Ve a la pestaña Monitoring.

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

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

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

Sigue estos pasos para realizar una prueba de conmutación por error de la base de datos para tu entorno:

  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
    

    Reemplaza lo siguiente:

    • ENVIRONMENT_NAME: Es el nombre de tu entorno de Cloud Composer.
    • LOCATION: Es 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
    

    Reemplaza lo siguiente:

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

    Ejemplo:

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

  5. Verifica que la zona principal de la base de datos de tu entorno esté modificada:

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

  7. La base de datos de tu entorno se prepara para otra conmutación por error cuando la métrica del entorno Base de datos disponible para la conmutación por error (composer.googleapis.com/environment/database/available_for_failover) se convierte en True. Para obtener más información sobre cómo ver las métricas de tu entorno en Cloud Monitoring, consulta Supervisa entornos.

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

Puedes realizar una prueba de conmutación por error para el clúster de tu entorno, lo que simula una interrupción zonal. Por ejemplo, es posible que desees hacerlo para medir la cantidad de tiempo que tarda tu entorno en cambiar a otra zona.

Comprueba que tu entorno esté en buen estado

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

Configura las credenciales para el clúster de tu entorno

Para obtener credenciales de clúster, sigue estos pasos:

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

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu 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 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
    

Inspecciona el clúster de tu entorno

Verifica las zonas y los nodos en los que se ejecutan las cargas de trabajo en el clúster de tu entorno. Usarás 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 el clúster de tu entorno realiza la conmutación por error.

  1. Verifica los nodos y las zonas:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. Verifica 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. Consulta información más detallada sobre los Pods:

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

Desviar nodos

Elige una zona en la que deseas simular una interrupción. 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, te recomendamos elegir la zona principal de la instancia de Cloud SQL con 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 debes realizar la prueba de conmutación por error de la base de datos y, luego, la prueba de conmutación por error del clúster en us-central1-a.

El siguiente comando simula un conjunto de nodos que no están disponibles en una zona específica. Expulsa de manera forzosa los Pods de los nodos en la zona especificada y evita que se reprogramen los Pods en estos nodos. Debido a que no se pueden programar Pods nuevos, se agregan nodos nuevos al clúster.

Este comando no afecta 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 la prueba de conmutación por error. Los nodos que existen en la zona seleccionada siguen marcados como no programables.

Para simular una falla de la zona del 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

Reemplaza lo siguiente:

  • ZONE: Es la zona en la que deseas simular una falla de zona del clúster.

Verifica las métricas del entorno

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

    Ir a Entornos

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

  3. Ve a la pestaña Monitoring.

  4. Verifica que las siguientes métricas sean “verdes” durante la operación de conmutación por error o que permanezcan en estado “rojo” durante varios minutos como máximo.

    • Estado del entorno
    • Señal de monitoreo de funcionamiento 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 una “operación de mantenimiento del clúster”.

  5. No necesitas realizar ninguna acción adicional para que el clúster de tu entorno vuelva a estar listo para la conmutación por error después de la prueba. Durante la prueba, el clúster del entorno agrega de forma automática nodos nuevos que reemplazan a los afectados por la interrupción simulada.

¿Qué sigue?