Ranuras de implementación de Azure Functions

Las ranuras de implementación de Azure Functions permiten que la aplicación de funciones ejecute instancias diferentes denominadas ranuras. Las ranuras son entornos diferentes que se exponen a través de un punto de conexión disponible públicamente. Una instancia de la aplicación siempre se asigna a la ranura de producción, y se pueden intercambiar instancias asignadas a una ranura a petición. Las aplicaciones de funciones que se ejecutan en un plan de consumo tienen una única ranura adicional para el almacenamiento provisional. Puede obtener más ranuras de ensayo ejecutando la aplicación en un plan Premium o plan dedicado (App Service). Para más información, consulte los límites del servicio.

Aquí se indica cómo se ven afectadas las funciones cuando se intercambian ranuras:

  • El redireccionamiento del tráfico es perfecto y no se pierde ninguna solicitud debido al intercambio. Este comportamiento de conexión directa se produce porque el siguiente desencadenador de función se enruta al espacio intercambiado.
  • La función en ejecución finaliza durante el intercambio. Para obtener información sobre cómo escribir funciones defensivas y sin estado, vea Mejorar el rendimiento y la confiabilidad de Azure Functions.

¿Por qué usar ranuras?

Hay muchas ventajas para usar ranuras de implementación, entre las que se incluyen:

  • Entornos diferentes con distintos fines: El uso de ranuras distintas ofrece la posibilidad de diferenciar las instancias de la aplicación antes de cambiar a producción o a un espacio de ensayo.
  • Preparación: implementar en una ranura en lugar de implementar directamente en producción permite que la aplicación se prepare para empezar. Además, el uso de ranuras reduce la latencia de las cargas de trabajo desencadenadas mediante HTTP. Las instancias se preparan antes de la implementación, lo que reduce el arranque en frío de las funciones recién implementadas.
  • Reservas sencillas: después del intercambio con producción, la ranura con la aplicación de ensayo anterior ocupa ahora la aplicación de producción anterior. Si las modificaciones que se han intercambiado en el espacio de producción no son las previstas, puede revertir el intercambio inmediatamente para volver a tener la "última instancia que sabe que funciona correctamente".
  • Minimizar los reinicios: el cambio de la configuración de la aplicación en una ranura de producción requiere un reinicio de la aplicación en ejecución. En su lugar, puede cambiar la configuración en una ranura de ensayo y cambiar la configuración por uno de producción con una instancia prewarmed. Las ranuras son la manera recomendada de migrar entre las versiones en tiempo de ejecución de Functions, a la vez que se mantiene la mayor disponibilidad. Para más información, consulte Actualización mínima del tiempo de inactividad.

Operaciones de intercambio

Durante un intercambio, una ranura se considera el origen y la otra es el destino. La ranura de origen tiene la instancia de la aplicación que se aplica a la ranura de destino. Con los siguientes pasos se evita que la ranura de destino experimente tiempos de inactividad durante un intercambio:

  1. Aplicar la configuración: la configuración de la ranura de destino se aplica a todas las instancias de la ranura de origen. Por ejemplo, la configuración de producción se aplica a la instancia de ensayo. La configuración aplicada incluye las siguientes categorías:

  2. Esperar reinicios y disponibilidad: el intercambio espera a que todas las instancias de la ranura de origen terminen de reiniciarse y estén disponibles para las solicitudes. Si el reinicio no se puede realizar en alguna instancia, el intercambio revierte todos los cambios en la ranura de origen y detiene la operación.

  3. Actualizar el enrutamiento: si todas las instancias de la ranura de origen se han preparado correctamente, las dos ranuras completan el intercambio cambiando sus reglas de enrutamiento correspondientes. Después de este paso, la ranura de destino (por ejemplo, la ranura de producción) tiene la aplicación que se ha calentado anteriormente en la ranura de origen.

  4. Operación de repetición: Ahora que la ranura de origen tiene la aplicación de preswap anteriormente en la ranura de destino, complete la misma operación aplicando toda la configuración y reiniciando las instancias para la ranura de origen.

Tenga en cuenta los siguientes puntos:

  • Durante intercambio, la inicialización de las aplicaciones intercambiadas tiene lugar en la ranura de origen. La ranura de destino permanece en línea mientras la de origen se prepara, independientemente de si el intercambio se realiza o no correctamente.

  • Para intercambiar una ranura de ensayo con la de producción, asegúrese de que esta última es siempre la de destino. De este modo, el intercambio no afecta a la aplicación de producción.

  • La configuración relativa a los enlaces y orígenes de eventos se debe definir como configuración de la ranura de implementaciónantes de iniciar el intercambio. Al marcarlos como "permanentes", se garantiza que los eventos y las salidas se dirigen a la instancia adecuada.

Administración de la configuración

Algunos valores de configuración son específicos de ranuras. En las siguientes listas se detallan las opciones que cambian al intercambiar ranuras y que siguen siendo las mismas.

Configuración específica de ranuras:

  • Extremos de publicación
  • Nombres de dominio personalizados
  • Certificados no públicos y configuración de TLS/SSL
  • Configuración de escala
  • Restricciones de IP
  • Always On
  • Configuración de diagnóstico
  • Uso compartido de recursos entre orígenes (CORS)
  • Puntos de conexión privados

Configuración no específica de ranuras:

  • Configuración general: por ejemplo, versión de Framework, 32 o 64 bits, Web Sockets
  • Configuración de la aplicación (puede configurarse para ajustarse a un espacio)
  • Cadenas de conexión (puede configurarse para ajustarse a un espacio)
  • Asignaciones de controlador
  • Certificados públicos
  • Conexiones híbridas *
  • Integración de la red virtual *
  • Puntos de conexión de servicio *
  • Azure Content Delivery Network *

Las características marcadas con un asterisco (*) no se intercambian, por diseño.

Nota:

Algunas configuraciones de aplicaciones que se aplican a configuraciones no intercambiadas no se intercambian. Por ejemplo, como los valores de diagnóstico no se intercambian, los valores de aplicaciones relacionados como WEBSITE_HTTPLOGGING_RETENTION_DAYS y DIAGNOSTICS_AZUREBLOBRETENTIONDAYS tampoco lo hacen, aunque no se muestren como valores de ranura.

Creación de una configuración de implementación

Puede marcar una configuración como configuración de la implementación, lo que la convierte en permanente. Una configuración permanente no se intercambia con la instancia de la aplicación.

Si crea una configuración de implementación en una ranura, asegúrese de crear la misma configuración con un valor único en cualquier otra ranura que participe en un intercambio. De este modo, mientras el valor de una configuración no cambie, los nombres de las configuraciones seguirán siendo los mismos en todas las ranuras. Esta coherencia de nombre evita que el código intente tener acceso a una configuración que está definida en una ranura, pero no en otra.

Use los siguientes pasos para crear una configuración de implementación:

  1. Vaya a Ranuras de implementación en la aplicación de funciones y, luego, seleccione el nombre de la ranura.

    Find slots in the Azure portal.

  2. Seleccione Configuración y luego seleccione el nombre de la configuración que quiera hacer permanente en la ranura actual.

    Configure the application setting for a slot in the Azure portal.

  3. Seleccione Configuración de ranura de implementación y luego seleccione Aceptar.

    Configure the deployment slot setting.

  4. Cuando la sección de configuración desaparezca, seleccione Guardar para conservar los cambios

    Save the deployment slot setting.

Implementación

Cuando se crean ranuras, estas están vacías. Puede utilizar cualquiera de las tecnologías de implementación admitidas para implementar la aplicación en una ranura.

Ampliación

Todas las ranuras escalan al mismo número de trabajos que la ranura de producción.

  • En el caso de los planes de consumo, la ranura escala a medida que lo hace la aplicación de funciones.
  • En el caso de los planes de App Service, la aplicación escala a un número fijo de trabajos. Las ranuras se ejecutan en el mismo número de trabajos que el plan de la aplicación.

Ver ranuras

Puede ver información sobre las ranuras existentes mediante la CLI de Azure o a través de Azure Portal.

Siga estos pasos para crear una ranura en el portal:

  1. Vaya a la aplicación de funciones.

  2. Seleccione Ranuras de implementación y se muestran las ranuras existentes.

Incorporación de una ranura

Puede agregar una ranura mediante la CLI de Azure o a través de Azure Portal .

Siga estos pasos para crear una ranura en el portal:

  1. Vaya a la aplicación de funciones.

  2. Seleccione Ranuras de implementacióny, luego, seleccione + Agregar ranura.

    Add Azure Functions deployment slot.

  3. Escriba el nombre de la ranura y seleccione Agregar.

    Name the Azure Functions deployment slot.

Acceso a los recursos de ranura

Puede acceder a los recursos (desencadenadores HTTP y puntos de conexión de administrador) en una ranura de ensayo de la misma manera que la ranura de producción. Sin embargo, en lugar del nombre de host de la aplicación de funciones, use el nombre de host específico de la ranura en la dirección URL de solicitud, junto con las claves específicas de ranura. Dado que las ranuras de ensayo son aplicaciones activas, debe proteger las funciones en un espacio de ensayo como lo haría en la ranura de producción.

Intercambio de ranuras

Puede intercambiar ranuras fuera de producción mediante la CLI de Azure o a través de Azure Portal.

Siga estos pasos para intercambiar un espacio de ensayo en producción:

  1. Vaya a la aplicación de función.

  2. Seleccione Ranuras de implementacióny, luego, seleccione Intercambiar.

    Screenshot that shows the 'Deployment slot' page with the 'Add Slot' action selected.

  3. Compruebe los valores de configuración del intercambio y seleccione Intercambiar

    Swap the deployment slot.

La operación de intercambio puede tardar unos segundos.

Reversión de intercambios

Si un intercambio genera errores o simplemente quiere "deshacer" un intercambio, puede revertir al estado inicial. Para volver al estado de intercambio previo, realice otro intercambio para invertir el intercambio.

Eliminación de una ranura

Puede quitar una ranura mediante la CLI de Azure o a través de Azure Portal.

Siga estos pasos para quitar una ranura de la aplicación en el portal:

  1. Vaya a Ranuras de implementación en la aplicación de funciones y, luego, seleccione el nombre de la ranura.

    Find slots in the Azure portal.

  2. Seleccione Eliminar.

    Screenshot that shows the 'Overview' page with the 'Delete' action selected.

  3. Escriba el nombre de la ranura de implementación que desea eliminar y, luego, seleccione Eliminar.

    Delete the deployment slot in the Azure portal.

  4. Cierre el panel de confirmación.

    Deployment slot delete confirmation.

Cambio del plan de App Service

En una aplicación de funciones que se ejecuta en un plan de App Service, puede cambiar el plan de App Service subyacente de una ranura.

Nota

No se puede cambiar el plan de App Service de una ranura que está en el plan de consumo.

Haga lo siguiente para cambiar el plan de App Service de una ranura:

  1. Vaya a Ranuras de implementación en la aplicación de funciones y, luego, seleccione el nombre de la ranura.

    Find slots in the Azure portal.

  2. En Plan de App Service, seleccione Cambiar el plan de App Service.

  3. Seleccione el plan al que desea cambiarse o cree un nuevo plan.

    Change the App Service plan in the Azure portal.

  4. Seleccione Aceptar.

Consideraciones

Las ranuras de implementación de Azure Functions presentan las siguientes consideraciones:

  • El número de ranuras disponibles para una aplicación depende del plan. El plan de consumo solo se permite en una ranura de implementación. Hay más ranuras disponibles para las aplicaciones que se ejecutan en otros planes. Consulte Límites de servicio para obtener más información.
  • Al intercambiar una ranura, se restablecen las claves de las aplicaciones que tienen una configuración de aplicación AzureWebJobsSecretStorageType igual a files.
  • Cuando las ranuras están habilitadas, la aplicación de funciones se establece en modo de solo lectura en el portal.
  • Es posible que se produzca un error en los intercambios de ranuras cuando la aplicación de funciones use una cuenta de almacenamiento protegida como cuenta de almacenamiento predeterminada (establecida en AzureWebJobsStorage). Para más información, consulte la referencia de WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS.
  • Use nombres de aplicación de funciones inferiores a 32 caracteres. Los nombres de más de 32 caracteres corren el riesgo de provocar colisiones de identificador de host.

Pasos siguientes