Uso de Azure Functions para administrar los recursos del proceso del grupo de SQL dedicado (anteriormente SQL DW) en Azure Synapse Analytics.

Este tutorial usa Azure Functions para administrar los recursos del proceso del grupo de SQL dedicado (anteriormente SQL DW) en Azure Synapse Analytics.

Para usar una aplicación de funciones de Azure con un grupo de SQL dedicado (anteriormente SQL DW), debe crear una cuenta de entidad de servicio. La cuenta de entidad de servicio necesita obtener acceso de colaborador en la misma suscripción que la instancia de grupo de SQL dedicado (anteriormente SQL DW).

Implementación de la escala basada en el temporizador con una plantilla de Azure Resource Manager

Para implementar la plantilla, necesitará la siguiente información:

  • Nombre del grupo de recursos en el que se encuentra su instancia del grupo de SQL dedicado (anteriormente SQL DW).
  • Nombre del servidor en el que se encuentra su instancia del grupo de SQL dedicado (anteriormente SQL DW).
  • Nombre de la instancia del grupo de SQL dedicado (anteriormente SQL DW).
  • Identificador de inquilino (identificador. de directorio) de Microsoft Entra ID
  • Id. de suscripción
  • Id. de aplicación de la entidad de servicio
  • Clave secreta de entidad de servicio

Una vez que tenga la información anterior, implemente esta plantilla:

Image showing a button labeled

Una vez implementada la plantilla, encontrará tres nuevos recursos: un plan gratuito de Azure App Service, un consumo basado en el plan de Function App y una cuenta de almacenamiento que controlará el registro y la cola de operaciones. Seguir leyendo las demás secciones para saber cómo modificar las funciones implementadas para que se ajusten a sus necesidades.

Cambio de la hora de la operación de escalado

  1. Vaya a Function App Service. Si ha implementado la plantilla con los valores predeterminados, este servicio debe denominarse DWOperations. Una vez se abre Function App, observará cinco funciones implementadas para Function App Service.

    Functions that are deployed with template

  2. Seleccione DWScaleDownTrigger o DWScaleUpTrigger para escalar o reducir verticalmente. En el menú desplegable, seleccione Integrar.

    Select Integrate for function

  3. En este momento, el valor mostrado debería indicar %ScaleDownTime% o %ScaleUpTime% . Estos valores indican que la programación se basa en los valores definidos en la Configuración de la aplicación. Por ahora, puede omitir este valor y cambiar la programación para el momento que prefiera en función de los siguientes pasos.

  4. En el área de programación, agregue la expresión CRON que prefiera para reflejar la frecuencia con la que quiere que Azure Synapse Analytics se escale verticalmente.

    Change function schedule

    El valor de schedule es una expresión CRON que incluye estos seis campos:

    {second} {minute} {hour} {day} {month} {day-of-week}
    

    Por ejemplo, "0 30 9 * * 1-5" reflejaría un desencadenador a las 9:30 a.m. de cada día de la semana. Para más información, visite los ejemplos de programación de Azure Functions.

Cambio del nivel de proceso

  1. Vaya a Function App Service. Si ha implementado la plantilla con los valores predeterminados, este servicio debe denominarse DWOperations. Una vez se abre Function App, observará cinco funciones implementadas para Function App Service.

  2. Seleccione DWScaleDownTrigger o DWScaleUpTrigger para escalar o reducir verticalmente el valor de proceso. Al seleccionar las funciones, el panel debe mostrar el archivo index.js.

    Change function trigger compute level

  3. Cambie el valor de ServiceLevelObjective al nivel que quiera y seleccione la opción de guardar. El valor ServiceLevelObjective es el nivel de proceso al que la instancia de almacenamiento de datos escalará según la programación definida en la sección Integrar.

Use la pausa o la reanudación en lugar de la escala

Actualmente, las funciones predeterminadas son DWScaleDownTrigger y DWScaleUpTrigger. Si desea que usar las funcionalidades de pausa o reanudación en su lugar, puede habilitar DWPauseTrigger o DWResumeTrigger.

  1. Navegue hasta el panel Funciones.

    Functions pane

  2. Seleccione el control deslizante de alternancia para habilitar los desencadenadores que quiera.

  3. Navegue hasta las pestañas Integrar pestañas para cambiar la programación de los respectivos desencadenadores.

    Nota

    La diferencia funcional entre los desencadenadores de escalado y los desencadenadores de pausar y reanudar es el mensaje que se envía a la cola. Para obtener más información, consulte Agregar una nueva función de desencadenador.

Añadir una nueva función de desencadenador

En este momento, hay solo dos funciones de escalado incluidas en la plantilla. Con estas funciones, en el transcurso de un día, solo puede reducir verticalmente y escalar horizontalmente una sola vez. Para un control más granular, como escalar horizontalmente varias veces al día o tener un comportamiento de escalado diferente durante los fines de semana, tendrá que agregar otro desencadenador.

  1. Creación de una nueva función en blanco. Seleccione el botón + situado cerca de la ubicación Funciones para que aparezca el panel de plantillas de función.

    Screenshot that shows the

  2. En Lenguaje, seleccione Javascript y, a continuación, seleccione TimerTrigger.

    Create new function

  3. Nombre la función y establezca la programación. La imagen muestra cómo se puede desencadenar la función cada sábado a medianoche (viernes por la noche).

    Scale down Saturday

  4. Copiar el contenido del index.js de una de las demás funciones del desencadenador.

    Copy index js

  5. Establecer la variable de operación para el comportamiento deseado como se indica a continuación:

    // Resume the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "ResumeDw"
    }
    
    // Pause the dedicated SQL pool (formerly SQL DW) instance
    var operation = {
        "operationType": "PauseDw"
    }
    
    // Scale the dedicated SQL pool (formerly SQL DW)l instance to DW600c
    var operation = {
        "operationType": "ScaleDw",
        "ServiceLevelObjective": "DW600c"
    }
    

Programación compleja

En esta sección se muestra brevemente qué es necesario para obtener una programación más compleja de la pausa, la reanudación y las funcionalidades del escalado.

Ejemplo 1

Escalar horizontalmente todos los días a las 8 a. m. en DW600c y reducir verticalmente a las 8 p. m. en DW200c.

Función Programación Operación
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function2 0 0 20 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Ejemplo 2

Escalar horizontalmente todos los días a las 8 a. m. en DW1000c, reducir verticalmente una vez en DW600 a las 4 p. m. y reducir verticalmente a las 10 p. m. en DW200c.

Función Programación Operación
Function1 0 0 8 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 22 * * * var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW200c"}

Ejemplo 3

Escalar horizontalmente a las 8 a. m. en DW1000c y reducir verticalmente una vez en DW600c a las 4 p. m. los días laborables. Se pausa el viernes a las 11 p.m., se reanuda a las 7 a.m. del lunes.

Función Programación Operación
Function1 0 0 8 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW1000c"}
Function2 0 0 16 * * 1-5 var operation = {"operationType": "ScaleDw", "ServiceLevelObjective": "DW600c"}
Function3 0 0 23 * * 5 var operation = {"operationType": "PauseDw"}
Function4 0 0 7 * * 1 var operation = {"operationType": "ResumeDw"}

Pasos siguientes

Más información sobre la instancia de Azure Functions desencadenada mediante temporizador.

Consulte el repositorio de muestras del grupo de SQL dedicado (anteriormente SQL DW).