Escalar entornos

Cloud Composer 1 | Cloud Composer 2

En esta página, se describe cómo escalar entornos de Cloud Composer en Cloud Composer 2.

Otras páginas sobre el escalamiento:

Escalar verticalmente y horizontalmente

Opciones de escalamiento horizontal:

Opciones de escalamiento vertical:

Ajusta la cantidad mínima y máxima de trabajadores

Puedes configurar la cantidad mínima y máxima de trabajadores para tu entorno. Cloud Composer escala automáticamente tu entorno dentro de los límites establecidos. Puedes ajustar estos límites en cualquier momento.

Console

  1. Ve a la página Entornos en Google Cloud Console:

    Ir a la página Entornos

  2. Selecciona tu entorno.

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

  4. En el elemento Recursos > Configuración de cargas de trabajo (Workloads configuration), haz clic en Editar (Edit).

  5. En el diálogo Configuración de las cargas de trabajo, en la sección Ajuste de escala automático de los trabajadores, ajusta los límites para los trabajadores de Airflow:

    • En el campo Cantidad mínima de trabajadores, especifica la cantidad de trabajadores de Airflow que tu entorno debe ejecutar en todo momento. La cantidad de trabajadores en tu entorno no es inferior a esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.

    • En el campo Cantidad máxima de trabajadores, especifica la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

  6. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando gcloud composer:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --min-workers WORKERS_MIN \
  --max-workers WORKERS_MAX

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.
  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

Ejemplo:

gcloud composer environments update example-environment \
  --location us-central1 \
  --min-workers 2 \
  --max-workers 6

API

  1. Realiza una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica la máscara config.softwareConfig.workloadsConfig.worker.minCount,config.softwareConfig.workloadsConfig.worker.maxCount.

    2. En el cuerpo de la solicitud, en los campos minCount y maxCount, especifica los límites nuevos para los trabajadores.

"config": {
  "workloadsConfig": {
    "worker": {
      "minCount": WORKERS_MIN,
      "maxCount": WORKERS_MAX
    }
  }
}

Reemplaza lo siguiente:

  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.
  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.workloadsConfig.worker.minCount,
// config.workloadsConfig.worker.maxCount

"config": {
  "workloadsConfig": {
    "worker": {
      "minCount": 2,
      "maxCount": 6
    }
  }
}

Terraform

En los campos min_count y max_count del bloque workloadsConfig.worker, se especifica la cantidad mínima y máxima de trabajadores en tu entorno:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {
      worker {
        min_count = WORKERS_MIN
        max_count = WORKERS_MAX
      }
    }

  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.
  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    workloads_config {
      worker {
        min_count = 2
        max_count = 6
      }
    }

  }
}

Ajusta la cantidad de programadores

Tu entorno puede ejecutar más de un programador de Airflow al mismo tiempo. Usa varios programadores para distribuir la carga entre varias instancias del programador a fin de mejorar el rendimiento y la confiabilidad. Puedes especificar una cantidad de programadores hasta el número de nodos en tu entorno.

Aumentar la cantidad de programadores no siempre mejora el rendimiento de Airflow. Por ejemplo, tener solo un programador puede proporcionar un mejor rendimiento que tener dos. Esto puede suceder cuando no se usa el programador adicional y, por lo tanto, consume recursos de tu entorno sin contribuir al rendimiento general. El rendimiento real del programador depende de la cantidad de trabajadores de Airflow, la cantidad de DAG y tareas que se ejecutan en tu entorno y la configuración de Airflow y el entorno.

Recomendamos comenzar con dos programadores y, luego, supervisar el rendimiento del entorno. Si cambias la cantidad de programadores, siempre puedes volver a escalar el entorno a la cantidad original.

Para obtener más información sobre la configuración de varios programadores, consulta la documentación de Airflow.

Para cambiar la cantidad de programadores de tu entorno, sigue estos pasos:

Console

  1. Ve a la página Entornos en Google Cloud Console:

    Ir a la página Entornos

  2. Selecciona tu entorno.

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

  4. En el elemento Recursos > Configuración de cargas de trabajo (Workloads configuration), haz clic en Editar (Edit).

  5. En el cuadro de diálogo Configuración de las cargas de trabajo, en el campo Cantidad de programadores, establece la cantidad de programadores para tu entorno.

  6. Haz clic en Guardar.

gcloud

Ejecuta el siguiente comando gcloud composer:

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --scheduler-count SCHEDULER_COUNT

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • SCHEDULER_COUNT por la cantidad de programadores.

Ejemplo:

gcloud composer environments update example-environment \
  --location us-central1 \
  --scheduler-count 2

API

  1. Crea una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica la máscara config.softwareConfig.workloadsConfig.scheduler.

    2. En el cuerpo de la solicitud, en el campo count, especifica la cantidad de programadores.

"config": {
  "workloadsConfig": {
    "scheduler": {
      "count": SCHEDULER_COUNT
    }
  }
}

Reemplaza lo siguiente:

  • SCHEDULER_COUNT por la cantidad de programadores.

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environmentsexample-environment?updateMask=
// config.workloadsConfig.scheduler

"config": {
  "workloadsConfig": {
    "scheduler": {
      "count": 2
    }
  }
}

Terraform

El campo count en el bloque workloadsConfig.scheduler especifica la cantidad de programadores en el entorno.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {
      scheduler {
        count = SCHEDULER_COUNT
      }
    }

  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • SCHEDULER_COUNT por la cantidad de programadores.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    workloads_config {

      scheduler {
        count = 2
      }

    }
  }
}

Ajusta los parámetros de rendimiento y escalamiento del trabajador, el programador y el servidor web

Puedes especificar la cantidad de CPU, memoria y espacio en el disco que usa tu entorno. De esta manera, puedes aumentar el rendimiento de tu entorno, además del escalamiento horizontal proporcionado mediante el uso de varios trabajadores y programadores.

Console

  1. Ve a la página Entornos en Google Cloud Console:

    Ir a la página Entornos

  2. Selecciona tu entorno.

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

  4. En el elemento Recursos > Configuración de cargas de trabajo (Workloads configuration), haz clic en Editar (Edit).

  5. En el cuadro de diálogo Configuración de las cargas de trabajo, en los campos CPU, Memoria y Almacenamiento, se especifica la cantidad de instancias de CPU, memoria y almacenamiento para los programadores, el servidor web y los trabajadores de Airflow.

  6. Haz clic en Guardar.

gcloud

Los siguientes argumentos controlan los parámetros de CPU, memoria y espacio en el disco de los programadores, el servidor web y los trabajadores de Airflow. Cada programador y trabajador usa la cantidad especificada de recursos.

  • --scheduler-cpu especifica la cantidad de CPU para un programador de Airflow.
  • --scheduler-memory especifica la cantidad de memoria para un programador de Airflow.
  • --scheduler-storage especifica la cantidad de espacio en disco para un programador de Airflow.
  • --web-server-cpu especifica la cantidad de CPU para el servidor web de Airflow.
  • --web-server-memory especifica la cantidad de memoria para el servidor web de Airflow.
  • --web-server-storage especifica la cantidad de espacio en disco para el servidor web de Airflow.
  • --worker-cpu especifica la cantidad de CPU para un trabajador de Airflow.
  • --worker-memory especifica la cantidad de memoria para un trabajador de Airflow.
  • --worker-storage especifica la cantidad de espacio en el disco para un trabajador de Airflow.
gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --scheduler-cpu SCHEDULER_CPU \
    --scheduler-memory SCHEDULER_MEMORY \
    --scheduler-storage SCHEDULER_STORAGE \
    --web-server-cpu WEB_SERVER_CPU \
    --web-server-memory WEB_SERVER_MEMORY \
    --web-server-storage WEB_SERVER_STORAGE \
    --worker-cpu WORKER_CPU \
    --worker-memory WORKER_MEMORY \
    --worker-storage WORKER_STORAGE

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador.
  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.
  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web.
  • WEB_SERVER_STORAGE por la cantidad de memoria para el servidor web.
  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.
  • WORKER_MEMORY por la cantidad de memoria para un trabajador.
  • WORKER_STORAGE por el tamaño del disco de un trabajador.

Ejemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --scheduler-cpu 0.5 \
    --scheduler-memory 2.5 \
    --scheduler-storage 2 \
    --web-server-cpu 1 \
    --web-server-memory 2.5 \
    --web-server-storage 2 \
    --worker-cpu 1 \
    --worker-memory 2 \
    --worker-storage 2 \

API

  1. Crea una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica los campos que deseas actualizar. Por ejemplo, para actualizar todos los parámetros de los programadores, especifica la máscara config.softwareConfig.workloadsConfig.scheduler.cpu,config.softwareConfig.workloadsConfig.scheduler.memoryGb,config.softwareConfig.workloadsConfig.scheduler.storageGB.

    2. En el cuerpo de la solicitud, especifica los parámetros de escalamiento y rendimiento.

  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": SCHEDULER_CPU,
        "memoryGb": SCHEDULER_MEMORY,
        "storageGb": SCHEDULER_STORAGE
      },
      "webServer": {
        "cpu": WEB_SERVER_CPU,
        "memoryGb": WEB_SERVER_MEMORY,
        "storageGb": WEB_SERVER_STORAGE
      },
      "worker": {
        "cpu": WORKER_CPU,
        "memoryGb": WORKER_MEMORY,
        "storageGb": WORKER_STORAGE
      }
    }
  }

Reemplaza lo siguiente:

  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador, en GB.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador, en GB.
  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.
  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web, en GB.
  • WEB_SERVER_STORAGE por el tamaño del disco del servidor web, en GB.
  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.
  • WORKER_MEMORY por la cantidad de memoria para un trabajador, en GB.
  • WORKER_STORAGE por el tamaño del disco de un trabajador, en GB.

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.workloadsConfig.scheduler.cpu,
// config.workloadsConfig.scheduler.memoryGB,
// config.workloadsConfig.scheduler.storageGb,
// config.workloadsConfig.webServer.cpu,
// config.workloadsConfig.webServer.memoryGb,
// config.workloadsConfig.webServer.storageGb,
// config.workloadsConfig.worker.cpu,
// config.workloadsConfig.worker.memoryGb,
// config.workloadsConfig.worker.storageGb

"config": {
  "workloadsConfig": {
    "scheduler": {
      "cpu": 0.5,
      "memoryGb": 2.5,
      "storageGb": 2
    },
    "webServer": {
      "cpu": 0.5,
      "memoryGb": 2.5,
      "storageGb": 2
    },
    "worker": {
      "cpu": 1,
      "memoryGb": 2,
      "storageGb": 2
    }
  }
}

Terraform

Los siguientes bloques del bloque workloadsConfig controlan los parámetros de CPU, memoria y espacio en el disco de los programadores, el servidor web y los trabajadores de Airflow. Cada programador y trabajador usa la cantidad especificada de recursos.

  • El campo scheduler.cpu especifica la cantidad de CPU para un programador de Airflow.
  • El campo scheduler.memoryGb especifica la cantidad de memoria para un programador de Airflow.
  • El campo scheduler.storageGb especifica la cantidad de espacio en el disco de un programador.
  • El campo webServer.cpu especifica la cantidad de CPU para el servidor web de Airflow.
  • El campo webServer.memoryGb especifica la cantidad de memoria para el servidor web de Airflow.
  • El campo webServer.storageGb especifica la cantidad de espacio en el disco para el servidor web de Airflow.
  • En el campo worker.cpu, se especifica la cantidad de CPU para un trabajador de Airflow.
  • En el campo worker.memoryGb, se especifica la cantidad de memoria para un trabajador de Airflow.
  • worker.storageGb especifica la cantidad de espacio en el disco para un trabajador de Airflow.
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {

      scheduler {
        cpu = SCHEDULER_CPU
        memory_gb = SCHEDULER_MEMORY
        storage_gb = SCHEDULER_STORAGE
      }
      web_server {
        cpu = WEB_SERVER_CPU
        memory_gb = WEB_SERVER_MEMORY
        storage_gb = WEB_SERVER_STORAGE
      }
      worker {
        cpu = WORKER_CPU
        memory_gb = WORKER_MEMORY
        storage_gb = WORKER_STORAGE
      }
    }

  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador, en GB.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador, en GB.
  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.
  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web, en GB.
  • WEB_SERVER_STORAGE por el tamaño del disco del servidor web, en GB.
  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.
  • WORKER_MEMORY por la cantidad de memoria para un trabajador, en GB.
  • WORKER_STORAGE por el tamaño del disco de un trabajador, en GB.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    workloads_config {

      scheduler {
        cpu = 0.5
        memory_gb = 1.875
        storage_gb = 1
      }
      web_server {
        cpu = 0.5
        memory_gb = 1.875
        storage_gb = 1
      }
      worker {
        cpu = 0.5
        memory_gb = 1.875
        storage_gb = 1
      }
    }

  }
}

Ajusta el tamaño del entorno

El tamaño del entorno controla los parámetros de rendimiento de la infraestructura administrada de Cloud Composer que incluye la base de datos de Airflow. Considera seleccionar un tamaño de entorno más grande si deseas ejecutar una gran cantidad de DAG y tareas.



Console

  1. Ve a la página Entornos en Google Cloud Console:

    Ir a la página Entornos

  2. Selecciona tu entorno.

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

  4. En el elemento Recursos > Infraestructura principal, haz clic en Editar.

  5. En el cuadro de diálogo Infraestructura principal, en el campo Tamaño del entorno, especifica el tamaño del entorno.

  6. Haz clic en Guardar.

gcloud

El argumento --environment-size controla el tamaño del entorno:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --environment-size ENVIRONMENT_SIZE

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • ENVIRONMENT_SIZE por small, medium o large.

Ejemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --environment-size medium

API

  1. Crea una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica la máscara config.environmentSize.

    2. En el cuerpo de la solicitud, especifica el tamaño del entorno.

  "config": {
    "environmentSize": "ENVIRONMENT_SIZE"
  }

Reemplaza lo siguiente:

  • ENVIRONMENT_SIZE por el tamaño del entorno, ENVIRONMENT_SIZE_SMALL, ENVIRONMENT_SIZE_MEDIUM o ENVIRONMENT_SIZE_LARGE.

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.environmentSize

"config": {
  "environmentSize": "ENVIRONMENT_SIZE_MEDIUM"
}

Terraform

El campo environment_size en el bloque config controla el tamaño del entorno:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    environment_size = "ENVIRONMENT_SIZE"

  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región donde se encuentra el entorno
  • ENVIRONMENT_SIZE por el tamaño del entorno, ENVIRONMENT_SIZE_SMALL, ENVIRONMENT_SIZE_MEDIUM o ENVIRONMENT_SIZE_LARGE.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    environment_size = "ENVIRONMENT_SIZE_SMALL"

    }
  }
}

¿Qué sigue?