Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> MapReduce Service> Referencia de la API> API V1.1> Las API de escalado automático> Configuración de una regla de escalado automático
Actualización más reciente 2023-07-28 GMT+08:00

Configuración de una regla de escalado automático

Función

Esta API se utiliza para configurar reglas de escalado automático.

La API utilizada para la creación de clústeres y la ejecución de trabajos también se puede utilizar para crear una regla de escalado automático.

Restricciones

Ninguna

Depuración

Puede depurar esta API a través de la autenticación automática en API Explorer. API Explorer puede generar automáticamente código SDK de ejemplo y proporcionar la depuración de código SDK de ejemplo.

URI

  • Formato

    POST /v1.1/{project_id}/autoscaling-policy/{cluster_id}

  • Descripción de parámetro
    Tabla 1 Parámetros de URI

    Parámetro

    Obligatorio

    Tipo

    Descripción

    project_id

    String

    ID del proyecto. Para obtener más información sobre cómo obtener el ID del proyecto, consulte Obtención de un ID de proyecto.

    cluster_id

    String

    ID de clúster. Para obtener más información acerca de cómo obtener el ID de clúster, consulte Obtención de la información del clúster MRS.

Parámetros de solicitud

Tabla 2 Parámetros de body de solicitud

Parámetro

Obligatorio

Tipo

Descripción

node_group

String

Tipo del nodo al que se aplica una regla de escalado automático. Actualmente, solo los nodos Task admiten reglas de escalado automático, es decir, el valor de solicitud es task_node_default_group.

auto_scaling_policy

AutoScalingPolicy object

La política de escalado automático. Tabla 3 describe estos parámetros.

Tabla 3 AutoScalingPolicy

Parámetro

Obligatorio

Tipo

Descripción

auto_scaling_enable

Boolean

Si se activa la regla de escalado automático.

min_capacity

Integer

Número mínimo de nodos que quedan en el grupo de nodos.

Rango de valores: 0 a 500

max_capacity

Integer

Número máximo de nodos en el grupo de nodos.

Rango de valores: 0 a 500

resources_plans

No

List

Lista de planes de recursos. Para obtener más información, consulte Tabla 4. Si este parámetro se deja en blanco, el plan de recursos se deshabilita.

Cuando se habilita el escalado automático, se debe configurar un plan de recursos o una regla de escalado automático.

exec_scripts

No

List

Lista de scripts de automatización de escalado personalizados. Para obtener más información, consulte Tabla 5. Si este parámetro se deja en blanco, se deshabilita un script de hook.

rules

No

List

Lista de reglas de escalado automático. Para obtener más información, consulte Tabla 6.

Cuando se habilita el escalado automático, se debe configurar un plan de recursos o una regla de escalado automático.

Tabla 4 ResourcesPlan

Parámetro

Obligatorio

Tipo

Descripción

period_type

String

Tipo de ciclo de un plan de recursos. Actualmente, solo se admite el siguiente tipo de ciclo:

daily

start_time

String

Hora de inicio de un plan de recursos. El valor tiene el formato de hour:minute, lo que indica que el tiempo varía de 0:00 a 23:59.

end_time

String

Hora de finalización de un plan de recursos. El valor tiene el mismo formato que el de start_time. El intervalo entre end_time y start_time debe ser mayor o igual a 30 minutos.

min_capacity

Integer

Número mínimo de nodos conservados en un grupo de nodos en un plan de recursos.

Rango de valores: 0 a 500

max_capacity

Integer

Número máximo de nodos conservados en un grupo de nodos de un plan de recursos.

Rango de valores: 0 a 500

Tabla 5 ScaleScript

Parámetro

Obligatorio

Tipo

Descripción

name

String

Nombre de un script de automatización personalizado. Debe ser único en un mismo clúster.

El valor solo puede contener dígitos, letras, espacios, guiones (-) y guiones bajos (_) y no debe comenzar con un espacio.

El valor puede contener de 1 a 64 caracteres.

uri

String

Ruta de un script de automatización personalizado. Establezca este parámetro en una ruta de acceso de bucket OBS o una ruta de VM local.

  • Ruta del bucket OBS: Ingrese una ruta de script manualmente. por ejemplo, s3a://XXX/scale.sh.
  • Ruta de acceso de VM local: introduzca una ruta de acceso de script. La ruta de acceso del script debe comenzar con una barra diagonal (/) y terminar con .sh.

parameters

No

String

Parámetros de un script de automatización personalizado.

  • Múltiples parámetros están separados por espacio.
  • Se pueden transferir los siguientes parámetros de sistema predefinidos:
    • ${mrs_scale_node_num}: Número de nodos que se agregarán o eliminarán
    • ${mrs_scale_type}: tipo de escalamiento. El valor puede ser scale_out o scale_in.
    • ${mrs_scale_node_hostnames}: Nombres de host de los nodos que se van a agregar o eliminar
    • ${mrs_scale_node_ips}: direcciones IP de los nodos a agregar o eliminar
    • ${mrs_scale_rule_name}: Nombre de la regla que activa el escalado automático
  • Otros parámetros definidos por el usuario se utilizan de la misma manera que los scripts de shell comunes. Los parámetros están separados por espacio.

nodes

Array of strings

Tipo de nodo donde se ejecuta el script de automatización personalizado. El tipo de nodo puede ser Master, Core, o Task.

active_master

No

Boolean

Si el script de automatización personalizado se ejecuta sólo en el nodo Master activo.

El valor predeterminado es false, que indica que el script de automatización personalizado puede ejecutarse en todos los nodos de Master.

action_stage

String

Hora en que se ejecuta un script.

Se admiten las siguientes cuatro opciones:

  • before_scale_out: antes de escalar horizontalmente
  • before_scale_in: antes de reducir
  • after_scale_out: después de escalar horizontalmente
  • after_scale_in: después de reducir

fail_action

String

Si se deben continuar ejecutando scripts subsiguiente y crear un clúster después de que no se ejecute la secuencia de comandos de automatización personalizada.

  • continue: Continuar para ejecutar scripts subsiguientes.
  • errorout: detener la acción.
    NOTA:
    • Se recomienda establecer este parámetro en continue en la fase de puesta en marcha para que el clúster pueda seguir siendo instalado e iniciado sin importar si el script de automatización personalizado se ejecuta correctamente.
    • La operación de reducción no se puede deshacer. Por lo tanto, se debe establecer fail_action en continue para los scripts que se ejecutan después de escalar.
Tabla 6 Regla

Parámetro

Obligatorio

Tipo

Descripción

name

String

Nombre de una regla de escalado automático.

Un nombre de clúster solo puede contener entre 1 y 64 caracteres. Solo se permiten letras, dígitos, guiones (-) y guiones bajos (_).

Los nombres de regla deben ser únicos en un grupo de nodos.

description

No

String

Descripción sobre una regla de escalado automático.

Contiene un máximo de 1,024 caracteres.

adjustment_type

String

Tipo de ajuste de regla de escalado automático. Valores posibles:

  • scale_out: escalamiento horizontal de clústeres
  • scale_in: reducción de clústeres

cool_down_minutes

Integer

Tiempo de enfriamiento del clúster después de activar una regla de escalado automático, cuando no se realiza ninguna operación de escalado automático. La unidad es un minuto.

Rango de valores: 0 a 10,080. Una semana es igual a 10,080 minutos.

scaling_adjustment

Integer

Número de nodos que se pueden ajustar una vez.

Rango de valores: 1 a 100

trigger

Trigger object

Condición para activar una regla. Para obtener más información, consulte Tabla 7.

Tabla 7 Activador

Parámetro

Obligatorio

Tipo

Descripción

metric_name

String

Nombre de la métrica.

Esta condición desencadenante hace un juicio de acuerdo con el valor de la métrica.

Un nombre de métrica contiene un máximo de 64 caracteres.

metric_value

String

Umbral métrico para activar una regla

El valor del parámetro puede ser un entero o un número con dos decimales solamente.

comparison_operator

No

String

Operador lógico de juicio métrico. Valores posibles:

  • LT: inferior a
  • GT: superior a
  • LTOE: inferior o igual a
  • GTOE: superior o igual a

evaluation_periods

Integer

Número de períodos consecutivos de cinco minutos, durante los cuales se alcanza un umbral métrico

Rango de valores: 1 a 288

Parámetros de respuesta

Ninguna

Solicitud de ejemplo

Ejemplo de solicitud para configurar una regla de escalado automático

POST https://{endpoint}/v1.1/{project_id}/autoscaling-policy/{cluster_id}

{
  "node_group" : "task_node_analysis_group",
  "auto_scaling_policy" : {
    "auto_scaling_enable" : "true",
    "min_capacity" : "1",
    "max_capacity" : "3",
    "resources_plans" : [ {
      "period_type" : "daily",
      "start_time" : "9:50",
      "end_time" : "10:20",
      "min_capacity" : "2",
      "max_capacity" : "3"
    }, {
      "period_type" : "daily",
      "start_time" : "10:20",
      "end_time" : "12:30",
      "min_capacity" : "0",
      "max_capacity" : "2"
    } ],
    "exec_scripts" : [ {
      "name" : "before_scale_out",
      "uri" : "s3a://XXX/zeppelin_install.sh",
      "parameters" : "${mrs_scale_node_num} ${mrs_scale_type} xxx",
      "nodes" : [ "master_node_default_group", "core_node_analysis_group", "task_node_analysis_group" ],
      "active_master" : "true",
      "action_stage" : "before_scale_out",
      "fail_action" : "continue"
    }, {
      "name" : "after_scale_out",
      "uri" : "s3a://XXX/storm_rebalance.sh",
      "parameters" : "${mrs_scale_node_hostnames} ${mrs_scale_node_ips}",
      "nodes" : [ "master_node_default_group", "core_node_analysis_group", "task_node_analysis_group" ],
      "active_master" : "true",
      "action_stage" : "after_scale_out",
      "fail_action" : "continue"
    } ],
    "rules" : [ {
      "name" : "default-expand-1",
      "adjustment_type" : "scale_out",
      "cool_down_minutes" : "5",
      "scaling_adjustment" : "1",
      "trigger" : {
        "metric_name" : "YARNMemoryAvailablePercentage",
        "metric_value" : "25",
        "comparison_operator" : "LT",
        "evaluation_periods" : "10"
      }
    }, {
      "name" : "default-shrink-1",
      "adjustment_type" : "scale_in",
      "cool_down_minutes" : "5",
      "scaling_adjustment" : "1",
      "trigger" : {
        "metric_name" : "YARNMemoryAvailablePercentage",
        "metric_value" : "70",
        "comparison_operator" : "GT",
        "evaluation_periods" : "10"
      }
    } ]
  }
}

Una nueva regla de escalado automático sobrescribirá la regla de escalado automático guardada en la base de datos original. Si desea modificar la regla original, consulte primero la regla original, modifique la regla y envíe una tarea de modificación. Para obtener más información, consulte Consulta de detalles del clúster.

Ejemplo de respuesta

Código de estado: 200

La operación es exitosa.

{
  "result" : "succeeded"
}

Códigos de estado

Tabla 8 describe el código de estado.

Tabla 8 Código de estado

Código de estado

Descripción

200

Se ha creado el clúster.

Consulte Códigos de estado.

Códigos de error

Consulte Códigos de error.