Share via


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 asegurar 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.

az extension add --name containerapp --upgrade

Ahora que la extensión o módulo actual está instalado, registre los espacios de nombre Microsoft.App y Microsoft.OperationalInsights.

Nota:

Los recursos de Azure Container Apps han migrado desde el espacio de nombres Microsoft.Web al espacio de nombres Microsoft.App. Consulte Migración del espacio de nombres de Microsoft.Web a Microsoft.App marzo de 2022 para obtener más detalles.

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)

  1. Inicie sesión en Azure Portal.
  2. En la barra debúsqueda de la parte superior, escriba my-container-app.
  3. En los resultados de la búsqueda, en Recursos, seleccione my-container-app.
  4. En la barra de navegación de la izquierda, expanda Aplicación y seleccione Escalar y réplicas.
  5. En la página Escala y réplicas , seleccione Réplicas.
  6. La aplicación contenedora ahora tiene más de una réplica en ejecución.

Captura de pantalla de la página web de la aplicación de contenedor.

Podría necesitar selecciones Actualizar para ver nuevas réplicas.

  1. En la barra de navegación de la izquierda, expanda Supervisión y seleccione Métricas.

  2. En la página Métricas , establezca Métrica en Solicitudes.

  3. Seleccione Aplicar división.

  4. Expanda la lista desplegable Valores y active Réplica.

  5. Seleccione el icono de marca de verificación azul para terminar de editar la división.

  6. En el gráfico se muestran las solicitudes recibidas por la aplicación contenedora, divididas por réplica.

    Aplicación de contenedor de gráficos métricos que muestra resultados divididos por réplica.

  7. 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.

  8. Seleccione en el gráfico y arrastre para resaltar el aumento reciente de las solicitudes recibidas por la aplicación contenedora.

Captura de pantalla de aplicación de contenedor de gráficos métricos que muestra las solicitudes divididas por réplica, con una escala de 30 minutos y granularidad de tiempo de un minuto.

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.

Captura de pantalla de aplicación de contenedor de gráficos métricos que muestra resultados divididos por réplica en una vista agrandada.

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.

Pasos siguientes