• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
cf-app-autoscaler  ·  custom metrics  ·  developer  ·  golang  ·  mTLS  ·  scaling tutorial  ·  Technical Articles  ·  x509 certificate

Escale sus aplicaciones utilizando la característica de métricas personalizadas del escalador automático de aplicaciones

By s4pcademy 


  • ¿Su aplicación no puede hacer frente a grandes cantidades de solicitudes durante las horas pico?
  • ¿Ha visto una disminución en el rendimiento de la aplicación en condiciones de mucho tráfico?
  • ¿Está buscando reducir sus costos de tiempo de ejecución cuando hay menos tráfico?
  • ¿Quiere escalar su aplicación en función de sus métricas personalizadas (que no sean CPU, memoria, rendimiento, tiempo de respuesta)?

Application Autoscaler agrega o elimina automáticamente instancias/nodos de aplicaciones en función de la carga de trabajo. Esto se puede hacer definiendo una política de escalado automático que contenga reglas de escalado.

En esta guía, demostraremos cómo se puede utilizar la función de métricas personalizadas (lanzada en app-autoscaler versión 3.0.0) utilizando la autenticación mTLS,

Métricas del escalador automático de aplicaciones

Analicemos rápidamente las métricas disponibles que admite el escalador automático de aplicaciones (a partir de versión 9.3.0)

Métrico Tipo Nombre de la métrica técnica
Memoria usada estándar memoria usada
Utilización de memoria estándar memoryutil
Utilización de la CPU estándar UPC
Rendimiento estándar rendimiento
Tiempo de respuesta estándar tiempo de respuesta
Métricas personalizadas usuario definido arbitrario
Referirse a Guía del usuario del escalador automático de aplicaciones para obtener más información sobre las métricas

Además de las métricas estándar, que en su mayoría están disponibles en el contenedor (donde se ejecuta la aplicación), el escalador automático de aplicaciones también proporciona aplicaciones para escalar horizontal o verticalmente en función de los tipos de métricas definidas por el usuario, también conocido como. Métricas personalizadas. Esto hace posible mejorar el rendimiento de la aplicación.

Usaremos una aplicación Golang de muestra, implementada en Cloud Foundry, que usa la función de métricas personalizadas del escalador automático de aplicaciones mediante la autenticación mTLS. La aplicación se puede descargar desde la repositorio de GitHub.

Por ejemplo, la aplicación debe escalar horizontalmente (agregar una instancia más) si el servidor está demasiado ocupado (código de estado HTTP 503) y luego escalar nuevamente (eliminar la instancia agregada) si el servicio responde con HTTP 200 (estado normal).

Métricas personalizadas usando MTLS

Mutual Transport Layer Security (mTLS) es un mecanismo de autenticación basado en certificados, en el que tanto el cliente como el servidor se comunican mediante el intercambio de certificados digitales x.509. Esto permite la confianza y la comunicación segura entre ellos.

Escenario de ejemplo

Para enviar métricas personalizadas mediante una aplicación cf al servicio del escalador automático de aplicaciones mediante mTLS, los siguientes son los pasos de alto nivel que deben realizarse en la aplicación cf

  • Lea el certificado de identidad de la aplicación y el par de claves (almacenado en el contenedor de la aplicación)
  • Cree un grupo de certificados de CA y suminístrele un certificado
  • Cree un cliente HTTP y proporcione el certificado y el grupo de certificados de CA
  • Enviar solicitud HTTP POST al escalador automático

Los pasos anteriores ya están implementados en nuestra aplicación Golang de muestra. Ahora tenemos que definir nuestra política de escalado que utiliza Application Autoscaler para realizar operaciones de escalado.

Política de escalado

Nuestra aplicación Golang de muestra debería escalar horizontalmente (agregar una instancia más) si el servidor está demasiado ocupado. (Código de estado HTTP 503) y luego escalar (eliminar la instancia agregada) si el servicio responde con HTTP 200.

requisitos previos

  • Aplicación Golang con API RESTful
  • Copie la siguiente política de escalado en un archivo custom-metrics-policy.json
{
        "instance_min_count": 1,
        "instance_max_count": 2,
        "scaling_rules": [
            {
                "metric_type": "tooManyRequestCustomMetrics",
                "breach_duration_secs": 60,
                "threshold": 200,
                "operator": ">",
                "cool_down_secs": 60,
                "adjustment": "+1"
            },
            {
                "metric_type": "tooManyRequestCustomMetrics",
                "breach_duration_secs": 60,
                "threshold": 200,
                "operator": "<",
                "cool_down_secs": 60,
                "adjustment": "-1"
            }
        ]
}

Comprendamos la política de escalado del escalador automático de aplicaciones

  • Poner a escala
    • si la métrica tooManyRequestCustomMetrics es mayor que 200 y sigue siendo mayor que 200 para 60 segundos, Autoscaler debe realizar el escalado horizontal (agregar una instancia/nodo más) de la aplicación.
  • Escalar hacia adentro
    • Del mismo modo, escale (elimine una instancia) de una aplicación si la métrica tooManyRequestCustomMetrics es inferior a 200 por 60 segundos. El recuento de instancias de la aplicación sigue siendo 1 debido a “instancia_mín_recuento”: 1.

Tutorial

Espacio y organización CF de destino

Inicie sesión en cf y apunte a la organización y el espacio de cf, donde desea implementar la aplicación

cf target -o ak_autoscaler_dev -s ak-test-space

Empuje la aplicación Golang

Primero debe clonar el repositorio (si aún no lo ha hecho)

# Clone the Golang Application git repository
git clone https://github.com/SAP-samples/cf-autoscaler-custom-metrics-mtls.git

# Navigate to the directory
cd golang-autoscaler-custom-metrics

# Build application
make build

Empujemos una aplicación a Cloud Foundry. El siguiente manifiesto de aplicación se utiliza disponible aquí

---
applications:
  - name: golang-autoscaler-custom-metrics
    instances: 1
    memory: 128M
    disk_quota: 128M
    stack: cflinuxfs4
    buildpacks:
      - binary_buildpack
    command: ./golang-autoscaler-custom-metrics

cf push --no-start -f deploy/app-manifest.yml -p deploy/build

Noté que aún no hemos iniciado una aplicación. Esto se debe a que la aplicación necesita una instancia de servicio de escalador automático de aplicaciones. Esto se hace en el siguiente paso.

Salida%3A%20cf%20push%20an%20aplicación

Salida: cf empujar una aplicación

Crear instancia de servicio de escalador automático

Ahora, queremos usar el servicio Autoscaler. Entonces, creamos una instancia de servicio CF de tipo escalador automático

cf create-service autoscaler standard ak-test-autoscaler

Comandos Descripción
escalador automático Nombre del servicio (disponible como cf marketplace)
estándar Tipo de plan de servicio de Autoscaler
ak-test-autoscaler Nombre de la instancia de servicio

salida%3A%20crear%20servicio%20instancia

salida: crear una instancia de servicio

Enlazar instancia de servicio con la aplicación Golang

Vincule la instancia de servicio ak-test-autoscaler creada con la aplicación Golang y asigne la política (definida anteriormente) como un archivo

cf bind-service golang-autoscaler-custom-metrics \
                ak-test-autoscaler \
                -c deploy/custom-metrics-policy.json

La salida de la consola sugerirá volver a organizar golang-autoscaler-custom-metrics. Esto se debe a que cuando un servicio está vinculado a una aplicación existente, la variable de entorno VCAP_SERVICES se completa con la información, por ejemplo, información de credenciales de ese servicio.

salida%3A%20cf%20bind%20servicio

salida: servicio de enlace cf

Tan pronto como vinculamos el servicio a la aplicación Golang, podemos verificar el servicio Autoscaler vinculado.

Además, Complemento de escalador automático se puede utilizar para adjuntar la política. Si no ha proporcionado la póliza con la servicio de enlace cf comando, lo siguiente también se puede usar para adjuntar la política a la aplicación.

cf attach-autoscaling-policy \
   golang-autoscaler-custom-metrics \
   deploy/custom-metrics-policy.json

Echemos un vistazo a la variable de entorno VCAP_SERVICES

$ cf env golang-autoscaler-custom-metrics

salida: aplicación cf env

En el resultado, podemos ver la métrica personalizada mtls_url en la sección de credenciales. Nuestra aplicación Golang usa mtls_url para enviar la métrica personalizada tooManyRequestCustomMetrics al servicio Autoscaler.

Al usar mtls_url, la aplicación de Golang usa la autenticación basada en certificados (mTLS), proporcionada por la función Métricas personalizadas de Autoscaler.

Inicie la aplicación Golang

Inicie la aplicación Golang para considerar cambios vinculantes

cf start golang-autoscaler-custom-metrics

salida%3A%20cf%20inicio%20aplicación

salida: aplicación de inicio cf

Ahora, nuestra aplicación Golang se ejecuta con una instancia. Podemos realizar el escalado a través del servicio Autoscaler que está esperando recibir métricas personalizadas de la aplicación Golang.

Verificar la escalabilidad horizontal de la aplicación

Ahora tenemos que enviar métricas personalizadas a Autoscaler usando el punto final HTTP GET (proporcionado por la aplicación).

– Grep la ruta de la aplicación

cf app golang-autoscaler-custom-metrics | grep routes

– Con Postman/Curl, realice lo siguiente

$ curl https://golang-autoscaler-custom-metrics.cfapps.sap.hana.ondemand.com/busy/201
{"message":"I am busy with value 201.000000"}%

Mediante la ejecución cf app golang-autoscaler-métricas personalizadas nuevamente, ahora tenemos dos instancias de nuestra aplicación Golang (después de 60-80 segundos)

salida%3A%20escala%20fuera%20%282%20Instancias%29

salida: escalar horizontalmente (2 instancias)

Verificar el escalado descendente de la aplicación

Ahora, queremos que nuestra aplicación se amplíe si las solicitudes están por debajo de 200 (umbral). Del mismo modo, también tenemos un punto final HTTP GET para disminuir la instancia a través de curl/postman (lo que prefiera)

$ curl https://golang-autoscaler-custom-metrics.cfapps.sap.hana.ondemand.com/not-busy/190
{"message":"I am not busy with value 190.000000"}%

Ahora tenemos una instancia de nuestra aplicación Golang según sea necesario

salida%3A%20escala%20en%20%281%20Instancia%29

salida: escalar en (1 Instancia)

Monitorear eventos de escalado

A veces es importante saber cómo y cuándo suceden los eventos de escalado. Esto se puede averiguar utilizando las siguientes tres formas

Complemento CLI de escalador automático de aplicaciones

Instale el complemento — cf install-plugin -r CF-Community app-autoscaler-plugin

$ cf autoscaling-history golang-autoscaler-custom-metrics
Retrieving scaling event history for app golang-autoscaler-custom-metrics...
Scaling Type     	Status        	Instance Changes     	Time                          	Action                                                                                	Error
dynamic          	succeeded     	2->1                 	2022-12-30T16:38:08+01:00     	-1 instance(s) because tooManyRequestCustomMetrics <= 200test-unit for 60 seconds
dynamic          	succeeded     	1->2                 	2022-12-30T16:18:08+01:00     	+1 instance(s) because tooManyRequestCustomMetrics >= 200test-unit for 60 seconds

Eventos de la aplicación CF

Cloud Foundry proporciona visualización de eventos de una aplicación. Los eventos de la aplicación se pueden crear, cargar, escalar, etc. Para obtener más información sobre las capacidades de auditoría en Cloud Foundry, consulte Evento de auditoría en la documentación de Cloud Foundry.

Sin embargo, por el momento solo nos interesa ver los eventos de escalado de aplicaciones.

cf events golang-autoscaler-custom-metrics
Getting events for app golang-autoscaler-custom-metrics in org ak_autoscaler_dev / space ak-test-space as ak-user@abc.com...
time                          event                        actor                              description
2022-12-30T16:38:08.00+0100   audit.app.process.scale                                         instances: 1
2022-12-30T16:18:08.00+0100   audit.app.process.scale                                         instances: 2

Panel de aplicaciones del escalador automático

Autoscaler Application Dashboard es una aplicación CF disponible para los clientes de SAP que viene lista para usar cuando utiliza el servicio Application Autoscaler.

Conclusión

  • Creamos una aplicación Golang de muestra que envía métricas al servicio Autoscaler.
  • Aprendimos a usar la autenticación basada en mTLS para enviar métricas personalizadas.
  • La aplicación se amplió y amplió en función de las métricas enviadas por la aplicación Golang.
  • Además, también aprendimos cómo monitorear eventos de escalamiento utilizando diferentes métodos y herramientas.

Referencias



Source link


AplicacionesautomáticocaracterísticadelescaladorEscalemétricaspersonalizadassusutilizando

Artículos relacionados


#ESG  ·  #innovation  ·  #sapbtp  ·  #SAPPartners  ·  Business Trends
Avance de los objetivos ESG del cliente con SAP Business Technology Platform
#SAP BTP  ·  #SAPICC  ·  #SAPPartnerBuild  ·  #SAPPartnerEdge  ·  #SAPPILS  ·  Product Information
Viaje del socio: desde la construcción de IP en SAP BTP hasta la tienda SAP
Programming
Elementos del lenguaje de programación Java

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

El modelo analítico de SAP Datasphere
Previo
SAP Stammtisch Calcuta | Blogs de SAP
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar