Procedimientos recomendados para App de Azure Service

En este artículo se resumen los procedimientos recomendados para usar el Azure App Service.

Colocación

Una solución de servicio App de Azure consta de una aplicación web y una base de datos o una cuenta de almacenamiento para contener contenido o datos. Cuando estos recursos están en regiones diferentes, la situación puede tener los siguientes efectos:

  • Mayor latencia en la comunicación entre recursos
  • Cargos monetarios por transferencia de datos salientes entre regiones, como se indica en la página de precios de Azure

La colocación es mejor para los recursos de Azure que componen una solución. Al crear recursos, asegúrese de que están en la misma región de Azure, a menos que tenga motivos empresariales o de diseño específicos para que no sean. Puede mover una aplicación de App Service a la misma región que la base de datos mediante la característica de clonación de App Service disponible en los planes de App Service Premium.

Anclaje de certificados

El anclaje de certificados es una práctica en la que una aplicación solo permite una lista específica de entidades de certificación (CA) aceptables, claves públicas, huellas digitales o cualquier parte de la jerarquía de certificados.

Las aplicaciones nunca deben tener una dependencia fuerte o anclar al certificado TLS de carácter comodín predeterminado (*.azurewebsites.net). App Service es una plataforma como servicio (PaaS), por lo que este certificado podría rotarse en cualquier momento. Si el servicio gira el certificado TLS con caracteres comodín predeterminado, las aplicaciones ancladas por certificados interrumpirán y interrumpirán la conectividad de las aplicaciones que están codificadas de forma dura en un conjunto específico de atributos de certificado. Tampoco se garantiza la periodicidad con la que se gira el certificado porque la frecuencia de rotación puede cambiar en cualquier momento.

Las aplicaciones que se basan en el anclaje de certificados tampoco deben tener una dependencia fuerte en un certificado administrado de App Service. Los certificados administrados de App Service se pueden rotar en cualquier momento, lo que provoca problemas similares para las aplicaciones que dependen de propiedades de certificado estables. Se recomienda proporcionar un certificado TLS personalizado para las aplicaciones que dependen del anclaje de certificados.

Si la aplicación necesita basarse en el comportamiento de anclaje de certificados, se recomienda agregar un dominio personalizado a una aplicación web y proporcionar un certificado TLS personalizado para el dominio. Después, la aplicación puede confiar en el certificado TLS personalizado para el anclaje de certificados.

Recursos de memoria

Cuando las recomendaciones de supervisión o servicio indican que una aplicación consume más memoria de la esperada, considere la característica de recuperación automática de App Service. Puede configurar la recuperación automática mediante web.config.

Una de las opciones de la característica de recuperación automática es realizar acciones personalizadas en función de un umbral de memoria. Las acciones van desde las notificaciones por correo electrónico hasta la investigación a través del volcado de memoria a la mitigación puntual mediante el reciclaje del proceso de trabajo.

Recursos de CPU

Cuando las recomendaciones de supervisión o servicio indican que una aplicación consume más CPU de la esperada o experimenta picos repetidos de CPU, considere la posibilidad de escalar verticalmente o escalar horizontalmente el plan de App Service. Si la aplicación tiene estado, el escalado vertical es la única opción. Si la aplicación no tiene estado, el escalado horizontal proporciona más flexibilidad y un mayor potencial de escalado.

Para más información sobre las opciones de escalado y escalado automático de App Service, consulte Escalado vertical de una aplicación en App de Azure Service.

Recursos de socket

Una razón común para agotar las conexiones TCP salientes es el uso de bibliotecas cliente que no reutilizan las conexiones TCP o que no usan un protocolo de nivel superior, como http keep-alive.

Revise la documentación de cada biblioteca a la que hacen referencia las aplicaciones del plan de App Service. Asegúrese de que las bibliotecas están configuradas o a las que se accede en el código para una reutilización eficaz de las conexiones salientes. Siga también la guía de la documentación de la biblioteca para que la creación y liberación, o la limpieza sean correctas para evitar las conexiones con fugas. Aunque estas investigaciones en las bibliotecas cliente están en curso, puede mitigar el impacto mediante el escalado horizontal a varias instancias.

Solicitudes HTTP salientes y Node.js

Cuando se trabaja con Node.js y muchas solicitudes HTTP salientes, es importante tratar con el mantenimiento de HTTP http. Puede usar el paquete agentkeepalivenpm para que le resulte más fácil en su código.

Controle siempre la respuesta http, aunque no haga nada en el controlador. Si no controla correctamente la respuesta, la aplicación finalmente se bloquea porque no hay más sockets disponibles.

Este es un ejemplo de control de la respuesta cuando se trabaja con el http paquete o https :

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Si ejecuta la aplicación de App Service en una máquina Linux que tiene varios núcleos, otro procedimiento recomendado es usar PM2 para iniciar varios procesos de Node.js para ejecutar la aplicación. Para hacerlo, especifique un comando de inicio al contenedor.

Por ejemplo, use este comando para iniciar cuatro instancias:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Copia de seguridad de aplicaciones

Las copias de seguridad suelen ejecutarse según una programación y requieren acceso al almacenamiento (para generar los archivos de copia de seguridad) y a las bases de datos (para copiar y leer el contenido que se incluirá en la copia de seguridad). El resultado de no acceder a cualquiera de estos recursos es un error de copia de seguridad coherente.

Las dos razones más comunes por las que se produce un error en la copia de seguridad de la aplicación son la configuración de almacenamiento no válida y la configuración de base de datos no válida. Estos errores suelen producirse después de cambios en los recursos de almacenamiento o de base de datos, o después de los cambios en las credenciales para acceder a esos recursos. Por ejemplo, las credenciales se pueden actualizar para la base de datos seleccionada en la configuración de copia de seguridad.

Cuando se produzcan errores de copia de seguridad, revise los resultados más recientes para comprender qué tipo de error está ocurriendo. En el caso de los errores de acceso al almacenamiento, revise y actualice la configuración de almacenamiento en la configuración de copia de seguridad. En el caso de los errores de acceso a la base de datos, revise y actualice los cadena de conexión como parte de la configuración de la aplicación. A continuación, continúe con la actualización de la configuración de copia de seguridad para incluir correctamente las bases de datos necesarias.

Para obtener más información sobre las copias de seguridad de aplicaciones, consulte Copia de seguridad y restauración de la aplicación en App de Azure Service.

Aplicaciones Node.js

La configuración predeterminada de App de Azure Service para las aplicaciones Node.js está pensada para adaptarse mejor a las necesidades de las aplicaciones más comunes. Si desea personalizar la configuración predeterminada de la aplicación Node.js para mejorar el rendimiento o optimizar el uso de recursos para los recursos de CPU, memoria o red, consulte Procedimientos recomendados y guía de solución de problemas para aplicaciones de Node en App de Azure Service. En este artículo se describen las opciones de iisnode que es posible que necesite configurar para la aplicación Node.js. También se explica cómo abordar escenarios o problemas con la aplicación.

Dispositivos IoT

Puede mejorar su entorno cuando ejecuta dispositivos de Internet de las cosas (IoT) que están conectados a App Service.

Un procedimiento común con dispositivos IoT es el anclaje de certificados. Para evitar un tiempo de inactividad imprevisto debido a cambios en los certificados administrados del servicio, nunca debe anclar certificados al certificado predeterminado *.azurewebsites.net o a un certificado administrado de App Service. Si el sistema debe confiar en el comportamiento de anclaje de certificados, se recomienda agregar un dominio personalizado a una aplicación web y proporcionar un certificado TLS personalizado para el dominio. Después, la aplicación puede confiar en el certificado TLS personalizado para el anclaje de certificados. Para obtener más información, consulte la sección anclaje de certificados de este artículo.

Para aumentar la resistencia en su entorno, no confíe en un único punto de conexión para todos los dispositivos. Hospede las aplicaciones web en al menos dos regiones para evitar un único punto de error y estar listo para conmutar por error el tráfico.

En App Service, puede agregar dominios personalizados idénticos a varias aplicaciones web, siempre y cuando estas aplicaciones web se hospede en regiones diferentes. Esta funcionalidad garantiza que, si necesita anclar certificados, también puede anclar en el certificado TLS personalizado que proporcionó.

Otra opción es usar un equilibrador de carga delante de las aplicaciones web, como Azure Front Door o Azure Traffic Manager, para garantizar una alta disponibilidad para las aplicaciones web. Para más información, consulte Inicio rápido: Creación de una instancia de Front Door para una aplicación web global de alta disponibilidad o Control del tráfico de App de Azure Service con Azure Traffic Manager.

Pasos siguientes

Para obtener procedimientos recomendados accionables específicos del recurso, use diagnósticos de App Service:

  1. Vaya a la aplicación web en Azure Portal.
  2. Abra Diagnósticos de App Service; para ello, seleccione Diagnosticar y resolver problemas en el panel izquierdo.
  3. Seleccione el icono Procedimientos recomendados .
  4. Seleccione Procedimientos recomendados para disponibilidad y rendimiento o Procedimientos recomendados para una configuración óptima para ver el estado actual de la aplicación en relación con estos procedimientos recomendados.

También puede usar este vínculo para abrir directamente diagnósticos de App Service para el recurso: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.