Tutorial: Escalado de una aplicación de contenedor
Azure Container Apps administra el escalado horizontal automático a través de un conjunto de reglas de escalado declarativas. A medida que una aplicación contenedora se escala horizontalmente, se crean nuevas instancias de la aplicación contenedora a petición. Estas instancias se conocen como réplicas.
En este tutorial, agregará una regla de escalado HTTP a la aplicación contenedora y observará cómo se escala la aplicación.
Requisitos previos
Requisito | Instructions |
---|---|
Cuenta de Azure | Si no tiene una cuenta de Azure, puede crearla gratis. Necesita el permiso Colaborador en la suscripción de Azure para continuar. Consulte Asignación de roles de Azure mediante Azure Portal para obtener más información. |
Cuenta de GitHub | Obtenga una gratis. |
CLI de Azure | Instale la CLI de Azure. |
Configurar
Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.
az login
Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.
az upgrade
Luego, instale o actualice la extensión de Azure Container Apps para la CLI.
Si recibe errores sobre los parámetros que faltan al ejecutar az containerapp
comandos en la CLI de Azure o cmdlets del Az.App
módulo en Azure PowerShell, asegúrese de que tiene instalada la versión más reciente de la extensión Azure Container Apps.
az extension add --name containerapp --upgrade
Nota:
A partir de mayo de 2024, las extensiones de la CLI de Azure ya no habilitan las características en versión preliminar de forma predeterminada. Para acceder a las características de la versión preliminar de Container Apps, instale la extensión Container Apps con --allow-preview true
.
az extension add --name containerapp --upgrade --allow-preview true
Ahora que la extensión o módulo actualizado está instalado, registre los espacios de nombre Microsoft.App
y Microsoft.OperationalInsights
.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Creación e implementación de la aplicación de contenedor
Cree e implemente la aplicación contenedora con el comando containerapp up
. Este comando permite crear una:
- Resource group
- Entorno de Container Apps
- Área de trabajo de Log Analytics
Si ya existe alguno de estos recursos, el comando usa los recursos existentes en lugar de crear otros nuevos.
Por último, el comando crea e implementa la aplicación contenedora mediante una imagen de contenedor pública.
az containerapp up \
--name my-container-app \
--resource-group my-container-apps \
--location centralus \
--environment 'my-container-apps' \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 8080 \
--ingress external \
--query properties.configuration.ingress.fqdn \
Nota
Asegúrese de que el valor del parámetro --image
esté en minúsculas.
Al establecer --ingress
en external
, la aplicación contenedora estará disponible para solicitudes públicas.
El comando up
devolvió el nombre de dominio completo (FQDN) a la aplicación contenedora. Copie este FQDN en un archivo de texto. Lo usará en la sección Enviar solicitudes. El FQDN tiene un aspecto similar al del ejemplo siguiente:
https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io
Agregar regla de escalado
Para agregar una regla de escalado HTTP a la aplicación contenedora, ejecute el az containerapp update
comando.
az containerapp update \
--name my-container-app \
--resource-group my-container-apps \
--scale-rule-name my-http-scale-rule \
--scale-rule-http-concurrency 1
Este comando agrega una regla de escalado HTTP a la aplicación contenedora con el nombre my-http-scale-rule
y una configuración de simultaneidad de 1
. Si la aplicación recibe más de una solicitud HTTP simultánea, el tiempo de ejecución crea réplicas de la aplicación para controlar las solicitudes.
El update
comando devuelve la nueva configuración como respuesta JSON para comprobar que la solicitud se ha realizado correctamente.
Iniciar la salida del registro
Puede observar los efectos del escalado de la aplicación viendo los registros generados por el entorno de ejecución de Container Apps. Use el az containerapp logs show
comando para empezar a escuchar entradas de registro.
az containerapp logs show \
--name my-container-app \
--resource-group my-container-apps \
--type=system \
--follow=true
El show
comando devuelve entradas de los registros del sistema de la aplicación contenedora en tiempo real. Puede esperar una respuesta similar al siguiente ejemplo:
{
"TimeStamp":"2023-08-01T16:49:03.02752",
"Log":"Connecting to the container 'my-container-app'..."
}
{
"TimeStamp":"2023-08-01T16:49:03.04437",
"Log":"Successfully Connected to container:
'my-container-app' [Revision: 'my-container-app--9uj51l6',
Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
"Log":"Now listening on: http://[::]:8080"
}
{
"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
"Log":"Application started. Press Ctrl+C to shut down."
}
{
"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
"Log":"Hosting environment: Production"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
"Log":"Content root path: /app/"
}
Para más información, consulte az containerapp logs.
Envío de solicitudes
Abra un nuevo shell de Bash. Ejecute el comando siguiente, reemplazando por <YOUR_CONTAINER_APP_FQDN>
el nombre de dominio completo de la aplicación contenedora que guardó en la sección Crear e implementar la aplicación contenedora.
seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"
Estos comandos envían 50 solicitudes a la aplicación contenedora en lotes simultáneos de 10 solicitudes cada una.
Comando o argumento | Descripción |
---|---|
seq 1 50 |
Genera una secuencia de números de 1 a 50. |
| |
El operador de canalización envía la secuencia al xargs comando . |
xargs |
Se ejecuta curl con la dirección URL especificada |
-Iname |
Actúa como marcador de posición para la salida de seq . Este argumento impide que el valor devuelto se envíe al curl comando. |
curl |
Llama a la dirección URL especificada. |
-P10 |
Indica xargs a que se ejecuten hasta 10 procesos a la vez. |
Para obtener más información, consulte la documentación para:
En el primer shell, donde ejecutó el az containerapp logs show
comando, la salida ahora contiene una o varias entradas de registro como las siguientes.
{
"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
"Type":"Normal",
"ContainerAppName":"my-container-app",
"RevisionName":"my-container-app--9uj51l6",
"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
"Reason":"AssigningReplica",
"EventSource":"ContainerAppController",
"Count":0
}
Visualización del escalado en Azure Portal (opcional)
- Inicie sesión en Azure Portal.
- En la barra debúsqueda de la parte superior, escriba my-container-app.
- En los resultados de la búsqueda, en Recursos, seleccione my-container-app.
- En la barra de navegación de la izquierda, expanda Aplicación y seleccione Escalar y réplicas.
- En la página Escala y réplicas , seleccione Réplicas.
- La aplicación contenedora ahora tiene más de una réplica en ejecución.
Podría necesitar selecciones Actualizar para ver nuevas réplicas.
En la barra de navegación de la izquierda, expanda Supervisión y seleccione Métricas.
En la página Métricas , establezca Métrica en Solicitudes.
Seleccione Aplicar división.
Expanda la lista desplegable Valores y active Réplica.
Seleccione el icono de marca de verificación azul para terminar de editar la división.
En el gráfico se muestran las solicitudes recibidas por la aplicación contenedora, divididas por réplica.
De forma predeterminada, la escala de grafos se establece en las últimas 24 horas, con una granularidad de tiempo de 15 minutos. Seleccione la escala y cámbiela a los últimos 30 minutos, con una granularidad de tiempo de un minuto. Seleccione el botón Aplicar.
Seleccione en el gráfico y arrastre para resaltar el aumento reciente de las solicitudes recibidas por la aplicación contenedora.
En la captura de pantalla siguiente se muestra una vista ampliada de cómo se dividen las solicitudes recibidas por la aplicación contenedora entre réplicas.
Limpieza de recursos
Si no va a seguir usando esta aplicación, ejecute el siguiente comando para eliminar el grupo de recursos junto con todos los recursos creados en este tutorial.
Precaución
El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si existen recursos en el grupo de recursos especificado que están fuera del ámbito de este tutorial, también se eliminarán.
az group delete --name my-container-apps
Sugerencia
¿Tiene problemas? Háganoslo saber en GitHub abriendo una incidencia en el repositorio de Azure Container Apps.