Aplicaciones que escalan

En las 2 entradas anteriores, examinamos cómo compilar aplicaciones altamente disponibles y utilizar equilibradores de carga para distribuir el tráfico a varias VM que ejecutan su aplicación. Pero, ¿cómo ejecutar y administrar de forma eficiente varias VM y ejecutar el número correcto de instancias de VM cuando sus clientes más lo necesitan? Cuando la demanda del cliente aumenta, debe aumentar automáticamente el escalado de su aplicación para hacer frente a esa demanda. Y cuando la demanda disminuye, como en medio de la noche, cuando la mayoría de las personas duermen, quiere que la aplicación disminuya en escala y le ahorre algo de dinero.
En Azure, puede escalar automáticamente de forma horizontal los recursos de IaaS con conjuntos de escalado de máquinas virtuales. Estos conjuntos de escalado ejecutan VM idénticas, normalmente distribuidas detrás de un equilibrador de carga o Application Gateway. Usted define las reglas de escalado automático que aumentan o disminuyen el número de instancias de VM a medida que cambia la demanda del cliente. El equilibrador de carga o Application Gateway distribuye automáticamente el tráfico a las nuevas instancias de VM, lo que le permite centrarse en cómo compilar y ejecutar mejor sus aplicaciones. Los conjuntos de escalado le dan el control de los recursos IaaS con algunas de las ventajas elásticas de PaaS. Las aplicaciones web, que no cubrimos mucho en el último par de capítulos, ahora hacen una reaparición sólida con su propia capacidad de escalar con la demanda de la aplicación.
En este capítulo, examinaremos cómo diseñar y crear aplicaciones que puedan escalar automáticamente. Veremos por qué esta capacidad de escalar con la demanda le ayuda a ejecutar aplicaciones eficientes, y exploraremos diferentes maneras de escalar con base en diferentes métricas.

¿Por qué compilar aplicaciones escalables y confiables?
¿Qué significa compilar aplicaciones que escalen? Le permite crecer y satisfacer la demanda de los clientes a medida que aumenta la carga de trabajo, incluso cuando está en el cine el fin de semana. Significa que no tiene que pagar una factura por un montón de recursos adicionales que no utilizará o, incluso peor, que la aplicación deje de funcionar debido a la falta de recursos disponibles. El punto óptimo para las aplicaciones y los recursos que necesitan rara vez es estático. Generalmente, la aplicación exige una baja y un aumento del flujo durante el día y la noche, o entre los días laborables y los fines de semana.
Hay dos maneras principales de escalar los recursos, como se muestra en la figura 9.1: vertical y horizontalmente. Tanto los conjuntos de escalado de máquina virtual como las aplicaciones web pueden escalar vertical u horizontalmente.

Las aplicaciones escalables tienen una sólida relación con las aplicaciones altamente disponibles. En las entradas anteriores pasamos mucho tiempo con conjuntos de disponibilidad y zonas de disponibilidad, y cómo configurar equilibradores de carga. Ambos capítulos se centraron en la necesidad de ejecutar varias VM. Cuando la aplicación se puede escalar automáticamente, la disponibilidad de esa aplicación también se incrementa a medida que las VM se distribuyen entre los conjuntos de disponibilidad o las zonas de disponibilidad. Todo esto es algo bueno. El poder de Azure es que no es necesario preocuparse acerca de cómo agregar más instancias de aplicación, difundirlas en el hardware del centro de datos o incluso en centros de datos y luego actualizar los recursos de red para distribuir el tráfico a las nuevas instancias de la aplicación.

Escalabilidad vertical de las VM
La primera manera de escalar los recursos suele responder a lo que debió haber usado en el pasado. Si su aplicación comienza a funcionar de forma lenta a medida que más clientes la utilizan, ¿qué debería hacer normalmente? Aumentar la cantidad de CvPU o memoria, ¿verdad? Escala el recurso de forma vertical en respuesta a la demanda.
Uno de los usos más comunes del escalado vertical es para los servidores de bases de datos. Las bases de datos son voraces cuando se trata de procesos, ¡incluso más que los clientes de su pizzería! Los servidores de bases de datos suelen consumir todos los recursos proporcionados a una VM, incluso si no los utilizan inmediatamente. Esto puede dificultar la supervisión de las demandas reales en el sistema y saber cuándo es necesario escalar verticalmente y proporcionar más recursos. La figura muestra la respuesta de escalado vertical típica para un servidor de base de datos que necesita más recursos.

Es posible que necesite escalar más allá de la demanda de CPU o memoria. ¿Qué pasa si ejecuta un sitio web que contiene un montón de imágenes o video? Puede que no haya muchos requisitos de procesamiento, pero las demandas de ancho de banda pueden ser altas. Para aumentar el ancho de banda disponible, puede aumentar el número de NIC en su VM. Y si necesita almacenar más imágenes y video, agrega más almacenamiento. Puede agregar o eliminar recursos como NIC virtuales y almacenamiento a medida que la VM continúa funcionando.

Redimensión de máquinas virtuales
En Azure, puede aumentar el tamaño de VM (escalar verticalmente) si necesita más procesos para su aplicación. En la 2da entrada, creó una VM básica. Su tamaño probablemente era algo así como Standard_D2s_v3. Ese nombre no le dice mucho acerca de los procesos asignados a una VM para determinar si es posible que necesite aumentar la CPU o la memoria. Si desea escalar verticalmente, necesita saber cuáles son sus opciones.
Pruébelo ahora
Siga adelante para ver los tamaños de VM y los procesos disponibles:
1 Abra Azure Portal en un navegador web y, a continuación, abra Cloud Shell.
2 Escriba el siguiente comando de la CLI de Azure para ver una lista de los tamaños de VM disponibles y los procesos que proporcionan:

az vm list-sizes –location eastus –output table

El resultado de az vm list-sizes varía de una región a otra y cambia con el tiempo a medida que Azure ajusta sus familias de VM. Este es un ejemplo condensado del resultado, que muestra MemoryInMb y NumberOfCores que proporciona cada tamaño de VM:

Así, su VM Standard_D2s_v3 proporciona dos núcleos de CPU y 8 GB de memoria, más que suficiente para una VM básica que ejecute un servidor web. Supongamos que su pizzería en línea comienza a recibir algunos pedidos y desea escalar verticalmente. Puede utilizar az vm resize para elegir otro tamaño. Especifica el tamaño de VM que tiene el número de núcleos de CPU y la memoria que necesita su aplicación.
La CPU y la memoria adicionales no aparecen mágicamente en la VM. Este comportamiento puede ser un poco diferente de lo que experimenta con Hyper-V o VMware en el ámbito local. Dentro de lo razonable, puede agregar o quitar procesos básicos en un entorno local a medida que la VM continúa funcionando. En Azure, normalmente se requiere un reinicio de una VM cuando cambia el tamaño para registrar los nuevos procesos y activar las reglas de facturación apropiadas. Cuando desee escalar verticalmente, prepárese para un tiempo de inactividad mientras se reinicia la VM.

Reducción vertical
¿Qué sucede si tiene una VM con más recursos de los que necesita? Esta situación suele ser más común que una VM que tiene menos recursos de los necesarios. Los dueños de aplicaciones pueden elegir un tamaño de VM mayor que el requerido, para asegurarse de que la aplicación funcione sin problemas. Todos esos recursos desperdiciados cuestan dinero, y es fácil que los costos pasen inadvertidos hasta que llega la cuenta a fin de mes.
La capacidad de escalar recursos funciona en ambas direcciones. Nos hemos centrado en cómo escalar verticalmente los recursos, pero funcionan los mismos conceptos para reducir los recursos. Es importante identificar los tamaños de VM en uso y la cantidad de demanda que las aplicaciones hacen en esos recursos. A continuación, puede utilizar az vm resize para seleccionar un tamaño de VM con menos núcleos de CPU y memoria. Actualmente se necesita un reinicio de VM para cualquier operación de redimensionamiento.

Escalado vertical de aplicaciones web
Las aplicaciones web pueden escalarse vertical u horizontalmente basándose en las necesidades de los recursos, de la misma manera que las VM. Cuando creó una aplicación web en el capítulo 3, el tamaño estándar S1 predeterminado proporcionó

un núcleo de CPU y 1,75 GB de RAM. Cada nivel de aplicación web y tamaño proporciona una cantidad establecida de recursos como núcleos de CPU, memoria y espacios de ensayo. Incluso si cambia el tamaño o la asignación de recursos predeterminada, o si elige un tamaño de aplicación web diferente, el concepto sigue siendo el mismo.
Si crea su aplicación web y encuentra que la aplicación requiere más recursos de los que proporciona el plan de servicio, puede cambiar a un nivel diferente, como se muestra en la figura siguiente. El mismo proceso funciona si tiene más recursos que los que necesita. Su aplicación web puede escalar o reducirse manualmente de esta manera según sea necesario.

Escalado horizontal de recursos
Un enfoque diferente para satisfacer la demanda es escalar horizontalmente. Para escalar verticalmente, debe aumentar la cantidad de CPU y memoria asignada a un único recurso, como una VM. En cambio, para escalar horizontalmente, debe aumentar el número de VM, como se muestra en la figura 9.4.
Para escalar horizontalmente, su aplicación necesita estar al tanto de esta capacidad y ser capaz de procesar datos sin conflictos. Una aplicación web es un gran candidato para escalar horizontalmente, ya que la aplicación normalmente puede procesar los datos por sí misma.
A medida que se compilan aplicaciones más complejas, se puede dividir una aplicación en componentes individuales más pequeños. Si vuelve a pensar en las colas de Azure Storage dela 4ta entrada, puede tener un componente de aplicación que reciba los pedidos web de front-end y otro componente de aplicación que procese esos pedidos y los transmita a la pizzería. El uso de colas de mensaje es un enfoque para diseñar y escribir aplicaciones que pueden funcionar en un entorno que escala horizontalmente. Este enfoque también le permite escalar cada componente de aplicación por separado y utilizar diferentes tamaños de VM o planes de aplicación web para maximizar la eficiencia y reducir sus gastos mensuales.

Históricamente, se escalaba de manera vertical porque era más fácil agregar más procesos a una aplicación y esperar que funcionara bien. Configurar un clúster de recursos y escalar una aplicación horizontalmente, solía ser complejo en el mundo físico. Con la informática en la nube y la virtualización, los desafíos de escalar horizontalmente se minimizan hasta el punto de que a menudo se puede escalar de forma horizontal con más rapidez que de forma vertical y sin tiempos de inactividad.
¿Recuerda el comando az vm resize antes mencionado en esta entrada? ¿Qué sucede cuando se completa la operación de redimensionamiento de la VM? Se reinicia la VM. Si esa es la única instancia de su aplicación, nadie puede acceder a ella hasta que vuelva a estar en línea. Cuando se escala horizontalmente, no hay tiempo de inactividad cuando se agregan instancias de VM: cuando las nuevas VM están listas, empiezan a procesar algunas de las solicitudes de la aplicación. Los sondeos de estado de los equilibradores de carga (capítulo 8) detectan automáticamente cuando una nueva VM en el grupo de back-end está lista para procesar las solicitudes de los clientes y el tráfico comienza a distribuirse a ella.
Azure está diseñado para darle flexibilidad y capacidad de elección cuando se trata de cómo escalar. Si está diseñando un entorno de aplicación nuevo, le sugerimos que implemente un enfoque de escalado horizontal. Las VM tienen un recurso utilísimo en Azure que puede ayudarle con esto: los conjuntos de escalado de las máquinas virtuales.

Conjuntos de escalado de máquinas virtuales
Las VM son algunas de las cargas de trabajo más comunes en Azure, por una buena razón. La curva de aprendizaje para compilar y ejecutar una VM es simple, porque la mayoría de lo que ya sabe se transfiere directamente a Azure. Los servidores web están entre las cargas de trabajo más comunes para una VM, lo que es conveniente ya que no tiene que aprender nuevas habilidades para transferir su conocimiento sobre cómo ejecutar Apache, IIS o NGINX en una VM de Azure.
¿Qué pasa con un clúster de VM que ejecuta un servidor web? ¿Cómo se encargaría de eso en su entorno local normal? Para empezar, hay muchas soluciones de clúster posibles. ¿Qué pasa con las actualizaciones de sus servidores físicos o VM? ¿Cómo se encargaría de estas? ¿Qué ocurriría si deseara aumentar o disminuir automáticamente el número de instancias del clúster? ¿Necesita utilizar otra herramienta? En la figura que se muestra un esquema de un conjunto de escalado de máquina virtual.

Un conjunto de escalado simplifica la forma de ejecutar y administrar varias VM para proporcionar una aplicación altamente disponible y con equilibrio de carga. Debe indicarle a Azure qué tamaño de VM usar, una imagen base para la VM, y cuántas instancias quiere. A continuación, puede definir las métricas de la CPU o de la memoria para aumentar o disminuir automáticamente el número de instancias en respuesta a la carga de la aplicación, o de forma programada a horas punta de clientes. Los conjuntos de escalado combinan el modelo IaaS de las VM con el poder de funcionalidades PaaS como escalado, redundancia, automatización y administración centralizada de recursos.

¿Un solo conjunto de escalado de VM?
Si compila aplicaciones en VM, planifique comenzar con un conjunto de escalado, incluso si solo necesita una VM. ¿Por qué? Un conjunto de escalado puede expandirse en cualquier momento, y crea automáticamente las conexiones a un equilibrador de carga o a una gateway de aplicaciones. Si la demanda de la aplicación aumenta repentinamente en dos meses, puede decirle al conjunto de escalado que cree una o dos instancias de VM adicionales
Para expandir una VM normal, independiente, necesita agregar esa VM a un equilibrador de carga; y si no comenzó con la VM en un conjunto de disponibilidad o zona de disponibilidad, tiene que planificar el modo de hacer que esas VM estén altamente disponibles. Al crear un conjunto de escalado desde el comienzo, incluso para una VM, prepara su aplicación para el futuro con un mínimo de trabajo adicional requerido.

Creación de un conjunto de escalado de máquina virtual
Aunque un conjunto de escalado hace que sea más sencillo compilar y ejecutar aplicaciones altamente disponibles, es necesario crear y configurar algunos componentes nuevos. Dicho esto, para implementar una escala establecida con la CLI de Azure, el proceso se reduce a dos comandos.
Pruébelo ahora
Complete los siguientes pasos para crear un conjunto de escalado con la CLI de Azure:
1 Abra Azure Portal y seleccione el icono Cloud Shell en la parte superior del panel.
2 Cree un grupo de recursos con az group create; especifique un nombre para el grupo de recursos, como azuremolchapter9 y una ubicación:

az group create –name azuremolchapter9 –location westeurope

Los conjuntos de escalado pueden utilizar zonas de disponibilidad para seleccionar una región compatible.
3 Para crear un conjunto de escalado, especifique el número de instancias de VM que desee y la forma en que las instancias de VM deben gestionar las actualizaciones de su configuración. Cuando realiza un cambio en las VM, por ejemplo, como instalar una aplicación o aplicar actualizaciones del sistema operativo invitado, las VM pueden actualizarse automáticamente en cuanto detecten el cambio. O bien, puede establecer la directiva de actualización manual y aplicar las actualizaciones en el momento que más le acomode. El resto de los parámetros debieran serle familiares de cuando creó una sola VM:

az vmss create \
–resource-group azuremolchapter9 \
–name scalesetmol \
–image UbuntuLTS \
–admin-username azuremol \
–generate-ssh-keys \
–instance-count 2 \
–vm-sku Standard_B1ms \
–upgrade-policy-mode automatic \
–lb-sku standard \
–zones 1 2 3


¡Listo! Ha creado varias VM en una zona de disponibilidad que puede escalar. Prepárese para algo realmente genial sobre el conjunto de escalado que acaba de crear con la CLI de Azure. ¿Recuerda todo el capítulo sobre equilibradores de carga, todos los comandos CLI que tenía que utilizar y cómo miraba las plantillas para simplificar la forma de crear un equilibrador de carga? El comando az vmss create creó y configuró un equilibrador de carga automáticamente.

Recuerde sus límites de cuotas
Mencioné este problema con la cuota en la entrada 7ma, pero vale la pena repetirlo en caso de que tenga problemas. En Azure, las cuotas predeterminadas de su suscripción le impiden implementar accidentalmente recursos y olvidarse de ellos, lo que le costaría dinero. Puede ver una lista de cuotas en http://mng.bz/ddcx.
Puede tener problemas con sus cuotas cuando crea varias VM, así como también si no elimina los recursos de los capítulos y ejercicios anteriores. Si ve texto de error en las líneas de


Operation results in exceeding quota limits of Core.
Maximum allowed: 4, Current in use: 4, Additional requested: 2.
es suficiente indicación de que necesita solicitar un aumento de sus cuotas. Puede ver su cuota actual para una región determinada de la siguiente manera:
az vm list-usage –location westeurope
Para solicitar un aumento de sus cuotas para una región, siga los pasos descritos en http://mng.bz/Xq2f
.

La CLI de Azure le ayuda a crear un conjunto de escalado con un mínimo de notificaciones. Se ha creado y configurado un equilibrador de carga, se ha asignado una dirección IP pública y se han agregado las instancias del conjunto de escalado de VM al grupo IP de back-end.
Pruébelo ahora
Revise los recursos creados con su conjunto de escalado, como se describe a continuación.
Para ver qué recursos se crearon con el conjunto de escalado, ejecute el siguiente comando:
az resource list \
–resource-group azuremolchapter9 \
–output table

El resultado es similar al siguiente ejemplo. Mire la columna Tipo para comprobar que se crearon una red virtual, una dirección IP pública y un equilibrador de carga:

¿Qué significa toda esta magia? Cuando crea un conjunto de escalado con la CLI de Azure, se crea un equilibrador de carga con redundancia a nivel regional y una dirección IP pública. Las VM se crean y se agregan a un grupo IP de back-end en el equilibrador de carga. Se crean reglas NAT que le permiten conectarse a las instancias de VM. Lo único que falta son las reglas de equilibrio de carga, ya que varían en función de las aplicaciones que desee ejecutar. A medida que agrega o quita VM al conjunto de escalado, la configuración del equilibrador de carga se actualiza automáticamente para permitir que el tráfico se distribuya a las nuevas instancias. Esta magia no se limita a la CLI de Azure; si usa Azure PowerShell o Azure Portal, estos recursos de red de apoyo se crean y conectan para trabajar en conjunto.

Pruébelo ahora
El escalado se creó con dos instancias. Puede escalar manualmente el número de instancias de VM en el conjunto de escalado. Al hacerlo, el equilibrador de carga actualiza automáticamente la configuración del grupo IP de back-end. Defina la nueva capacidad –new-capacity del conjunto de escalado en cuatro instancias de la siguiente manera:
az vmss scale \
–resource-group azuremolchapter9 \
–name scalesetmol \
–new-capacity 4

Creación de reglas de escalado automático
Cuando creó el conjunto de escalado, implementó un número fijo de instancias. Una de las funciones más importantes de los conjuntos de escalado es la capacidad de escalar automáticamente de forma horizontal el número de instancias de VM que ejecuta el conjunto de escalado.
Como se muestra en la figura 9.6, el número de instancias de un conjunto de escalado puede aumentar automáticamente a medida que aumenta la carga de la aplicación. Piense en una aplicación comercial típica en su entorno. A principios de la jornada laboral, los usuarios comienzan a acceder a la aplicación, lo que hace que aumente la carga de recursos en esas instancias de VM. Para garantizar un rendimiento óptimo de la aplicación, el conjunto de escalado agrega automáticamente más instancias de VM. El equilibrador de carga comienza a distribuir automáticamente el tráfico a las nuevas instancias. Más tarde en el día laboral, cuando los usuarios se van a casa, cae la demanda de la aplicación. Las instancias de VM utilizan menos recursos, por lo que el conjunto de escalado elimina automáticamente algunas instancias de VM para reducir los recursos innecesarios y disminuir los costos.

Puede basar las reglas de ajuste de escalado en varias métricas. Puede ver las métricas de host para consumo básico de recursos, configurar la recolección de métricas de VM dentro del invitado para analizar los contadores de rendimiento específicos de la aplicación o utilizar Azure Application Insights para supervisar en profundidad el código de la aplicación.
También usa programaciones para definir cierto número de instancias de VM en un conjunto de escalado para un período específico. En el ejemplo de una aplicación empresarial común para la que la demanda es mayor durante las horas de trabajo que por la tarde, es posible que desee definir un número fijo mayor de instancias para ejecutar durante las horas de trabajo y definir un número fijo de instancias para ejecutarse por la noche.
Las reglas de escalado automático basadas en métricas supervisan el rendimiento durante un intervalo de tiempo definido, 5 minutos, por ejemplo, y pueden tardar unos pocos minutos en activar las nuevas instancias de VM y configurarlas para el uso de las aplicaciones. Si utiliza horarios fijos para ajustar el escalado automático del número de instancias de VM en el conjunto de escalado, esos recursos adicionales ya están en uso y el equilibrador de carga distribuye el tráfico durante todo el día.
El uso de horarios requiere una base para la demanda típica de la aplicación y no toma en cuenta una demanda mayor o menor en ciertas partes de la cuenta comercial o del ciclo de ventas. Puede terminar con más recursos de los que realmente necesita, pagando más de lo necesario. Y es posible que haya situaciones en las que la carga de la aplicación sea mayor que el número de instancias de VM que el conjunto de escalado puede proporcionar.

Pruébelo ahora
Complete los siguientes pasos para crear reglas de escalado automático para un conjunto de escalado:
1 Busque y seleccione Grupos de recursos en la barra de navegación del lado izquierdo de Azure Portal.
2 Elija el grupo de recursos que creó para la implementación de la plantilla, como azuremolchapter9.
3 Seleccione el conjunto de escalado en la lista de recursos, como scalesetmol.
4 Debajo de Configuración, en la parte izquierda de la ventana Conjunto de escalado, seleccione Escalado. Puede escalar manualmente o crear sus propias reglas de autoescalado.
5 Elija crear reglas de autoescalado personalizadas.
6 Escriba un nombre, como autoscale y, a continuación, defina un conteo de instancias mínimo, máximo y predeterminado. Para este ejercicio, fije el mínimo en 2, el máximo en 10, y el predeterminado en 2.
7 Elija agregar una regla y, a continuación, revise la configuración de reglas disponible, como se muestra en la figura 9.7.
Los parámetros predeterminados buscan el consumo promedio de la CPU. La regla se activa cuando la carga es superior al 70 % durante un intervalo de 10 minutos. El conjunto de escalado se incrementa en 1 instancia de VM y las reglas luego esperan 5 minutos antes de que comiencen a supervisar y se pueda activar la siguiente regla.

Este período de enfriamiento proporciona a las nuevas instancias de VM tiempo para implementar y comenzar a recibir el tráfico del equilibrador de carga, lo que debería disminuir la carga global de la aplicación en el conjunto de escalado. Sin este período de enfriamiento, las reglas pueden activar otra instancia de VM que se agregará antes de que la carga haya empezado a distribuirse en la instancia de VM anterior que se creó.
8 Para crear la regla, seleccione Agregar.
9 Elija agregar otra regla. Esta vez, configure la regla para disminuir el conteo en uno cuando la carga promedio de la CPU sea inferior al 30 % en un plazo de 5 minutos.
10 Revise sus reglas, como se muestra en la figura 9.8, y luego seleccione Guardar.

También puede configurar reglas de escalado automático con la CLI de Azure, Azure PowerShell o en plantillas. El portal proporciona una cómoda visualización para revisar las reglas y ver las opciones disponibles para cada parámetro. A medida que se crean reglas más complejas, las plantillas proporcionan una forma de crear conjuntos de escalado con el mismo conjunto de reglas de forma reproducible.

¿Desea escalar una aplicación web?
Si le interesaron las aplicaciones web en el capítulo 3, o en las tablas y colas de Azure en el capítulo 4, la cantidad de contenido de VM de IaaS de estos tres últimos capítulos pueden haberlo dejado agotado. ¿Acaso la nube no era supuestamente más fácil que esto? Para componentes PaaS como Web Apps, ¡absolutamente!
No queremos que se complique con la forma de proporcionar la misma alta disponibilidad y capacidades de escalado automático a las aplicaciones web en las próximas páginas. ¡La verdad es que es mucho más fácil de hacer! Al igual que la mayoría de las cosas, la elección entre IaaS y PaaS es un equilibrio entre flexibilidad y facilidad de manejo. Gran parte de la redundancia subyacente se abstrae en servicios PaaS como Web Apps, así que no necesita un capítulo completo sobre alta disponibilidad y otro capítulo sobre equilibradores de carga.
El camino de IaaS para compilar y ejecutar sus propias VM o conjuntos de escalado con equilibradores de carga y zonas de disponibilidad puede originarse de una necesidad comercial o una restricción. Es posible que los desarrolladores, los ingenieros de operaciones o las herramientas y los flujos de trabajo no estén listos para trabajar de manera conjunta en Web Apps. Dicho esto, sugerimos encarecidamente que busque si Web Apps tiene nuevas implementaciones de aplicaciones. El uso de componentes PaaS como Web Apps le da más tiempo para centrarse en las aplicaciones y en sus clientes en lugar de la infraestructura y la administración.

Pruébelo ahora
Complete los siguientes pasos para crear una aplicación web con la CLI de Azure:
1 En el capítulo 3, creó una aplicación web en Azure Portal. Al igual que con la mayoría de los recursos, a menudo es más rápido y más fácil de usar la CLI de Azure. En Azure Portal, abra Cloud Shell.
2 Cree un plan de App Services de un tamaño estándar S1. Este tamaño le permite escalar automáticamente hasta 10 instancias de su aplicación web:

az appservice plan create \
–name appservicemol \
–resource-group azuremolchapter9 \
–sku s1


3 Cree una aplicación web que utilice un repositorio Git local para la implementación, como lo hizo en la 3era entrada:

az webapp create \
–name webappmol \
–resource-group azuremolchapter9 \
–plan appservicemol \
–deployment-local-git


Todos los conceptos y casos en torno a las reglas de escalado automático y las programaciones de escalado analizadas se aplican a las aplicaciones web. A modo de resumen rápido, estos son un par de casos comunes para escalar automáticamente las aplicaciones web:
– Aumente o disminuya automáticamente el número de instancias de aplicaciones web con base en métricas de rendimiento, a fin de satisfacer la demanda de las aplicaciones durante toda la jornada laboral.
– Programe una aplicación web para aumentar automáticamente el número de instancias al inicio del día laboral y, a continuación, disminuir el número de instancias al finalizar la jornada.
En el caso de la pizzería, la aplicación web puede recibir un mayor tráfico al final del día y durante la noche, por lo que no hay un conjunto de reglas de escalado automático que se aplique a cada situación. Nuevamente, es necesario tener una base de referencia sobre el rendimiento de la aplicación para entender cómo se ejecuta bajo uso normal y la métrica de rendimiento en la cual necesita escalar horizontalmente. Incluso cuando utiliza programación de escalado automático, debe seguir monitoreando y rastreando las subidas de demanda de su aplicación para crear reglas que sean compatibles con ese patrón de uso.

Pruébelo ahora
Complete los siguientes pasos para crear reglas de escalado automático para aplicaciones web:
1 Busque y seleccione Grupos de recursos en la barra de navegación del lado izquierdo de Azure Portal.
2 Elija el grupo de recursos que creó para la implementación de la aplicación web, como azuremolchapter9.
3 Seleccione la aplicación web de la lista de recursos, como webappmol.
4 Debajo de Configuración a la izquierda en la ventana de aplicaciones web, seleccione Escalar horizontalmente (App Services Plan).
5 De nuevo, elija configurar reglas de autoescalado personalizadas, no solo escalar manualmente la aplicación web.
6 Escriba un nombre, como autoscalewebapp y, a continuación, defina un conteo de instancias mínimo, máximo y predeterminado. Para este ejercicio, fije el mínimo en 2, el máximo en 5, y el predeterminado en 2.
7 Seleccione para agregar una regla y, a continuación, revise la configuración de reglas disponible. Esta ventana se ve igual que las reglas de escalado para conjuntos de escalado. Los parámetros predeterminados observan el consumo promedio de la CPU y se activan cuando la carga supera el 70 % durante un intervalo de 10 minutos. La aplicación web se incrementa en una instancia de VM y luego las reglas esperan 5 minutos antes de comenzar a supervisar y se pueda activar la siguiente regla.
8 Elija agregar otra regla. Esta vez, configure la regla para disminuir el conteo en uno cuando la carga promedio de la CPU sea inferior al 30 % en un plazo de 5 minutos.
9 Revise y guarde sus reglas.
Cuando las reglas de escalado automático activan la aplicación web para escalado horizontal, la plataforma Azure actualiza la distribución de tráfico a las instancias de aplicación web disponibles. No hay ningún equilibrador de carga expuesto, como ocurre con los conjuntos de escalado, pero el tráfico se sigue distribuyendo automáticamente entre las instancias de la aplicación web a medida que el entorno se amplía o reduce. El concepto es similar, solo que abstraído de usted, porque se supone que debe disfrutar del enfoque PaaS y no preocuparse tanto.

Tanto los conjuntos de escalado como las aplicaciones web proporcionan una forma de crear reglas que escalan automáticamente el número de instancias que ejecutan las aplicaciones. Con varias instancias para ejecutar la aplicación, también aumenta la disponibilidad de esta. Los conjuntos de escalado son un buen punto intermedio entre desarrolladores y personas que toman decisiones comerciales que desean o necesitan compilar aplicaciones en VM, mientras utilizan funciones similares a PaaS para escalar de forma automática y reconfigurar el tráfico del flujo de clientes.
En una entrada mas adelante veremos Azure Traffic Manager, que realmente completa estas implementaciones de alta disponibilidad. En este momento, todavía no está preparado para la producción en términos de poder ofrecer múltiples conjuntos de escalado redundantes o instancias de aplicaciones web con tráfico distribuido automáticamente entre ellas. Sin embargo, pronto lo haremos.

Laboratorio: Instalación de aplicaciones en el conjunto de escalado o la aplicación web
Este capítulo ha tenido bastante contenido, así que ahora puede elegir un laboratorio final rápido para los conjuntos de escalado o aplicaciones web. O, si quiere alargar su hora de almuerzo, ¡puede hacer ambos!
Conjuntos de escalado de máquinas virtuales
Tiene varias instancias de VM en los conjuntos de escalado, pero en este momento no hacen mucho. Para obtener una descripción general de las diferentes formas de instalar aplicaciones en instancias de VM en un conjunto de escalado, consulte http://mng.bz/9Ocx. En la práctica, usaría uno de esos métodos de implementación automáticos; pero por ahora, instale manualmente un servidor web en las instancias de VM como lo hizo en el capítulo 8:
1 ¿Recuerda las reglas NAT del equilibrador de carga? De forma predeterminada, cada instancia de VM de un conjunto de escalado tiene una regla NAT que le permite SSH directamente a ella. Los puertos no están en el puerto TCP 22 estándar. Vea la lista de instancias de VM en un conjunto de escalado y sus números de puertos de la siguiente manera:

az vmss list-instance-connection-info \
–resource-group azuremolchapter9 \
–name scalesetmol


2 Para conectarse a un puerto específico a través de SSH, utilice el parámetro -p de la siguiente manera (proporcione su propia dirección IP pública y números de puerto):

ssh azuremol@40.114.3.147 -p 50003

3 Instale un servidor web básico de NGINX en cada instancia de VM con apt install..
4 Para ver el conjunto de escalado en acción, abra la dirección IP pública del equilibrador de carga del conjunto de escalado en un navegador web.
5 Si tiene problemas, asegúrese de que el equilibrador de carga ha creado correctamente una regla de equilibrador de carga para el puerto TCP 80 y tiene una sonda de estado asociada para el puerto TCP 80 o su propia sonda de estado HTTP personalizada que busca /health.html en la VM.

Web Apps
Para implementar la aplicación en una aplicación web que ejecuta varias instancias, el proceso es el mismo que para la aplicación web única del capítulo 3. Envíe la aplicación al repositorio de Git local para la aplicación web y, gracias al poder de PaaS, la plataforma Azure implementa ese único código base a varias instancias de aplicaciones web:
1 Inicialice un repositorio Git en azure-mol-samples-2nd-ed/09 y luego agregue y confirme los archivos de ejemplo como lo hizo en la 3era entrada:

cd azure-mol-samples-2nd-ed/09
git init && git add . && git commit -m “Pizza”


2 Su aplicación web tiene un repositorio de Git local. Agregue un control remoto para su aplicación web de la misma manera que lo hizo anteriormente:

git remote add webappmolscale

3 Inserte este ejemplo en su aplicación web. Esto hace que se confirme un único código, pero la aplicación luego se distribuye a través de varias instancias de la aplicación web:

git push webappmolscale master

Y bien aquí terminamos por el día de hoy, gracias…