Cómo trabajar con sondeos de actividad y preparación para la app

Con Code Engine, puede establecer comprobaciones de estado para mejorar la robustez de las aplicaciones utilizando sondeos de actividad y preparación. Puede configurar Code Engine para utilizar estos analizadores al crear o actualizar las aplicaciones.

¿Qué son las pruebas de actividad y preparación?

Utilice los sondeos de actividad y preparación para comprobar si la app está activa y lista para responder a las solicitudes y servir el tráfico.

Análisis de actividad

Un análisis de actividad comprueba periódicamente si la aplicación está operativa (o activa) y puede responder a las solicitudes entrantes. Puede utilizar un análisis de actividad para comprobar si la app responde a las solicitudes entrantes o si la app se encuentra en una situación que requiere que el sistema detenga la instancia e inicie una instancia nueva. Si el análisis de actividad falla, la instancia de la app se reinicia. Si la prueba de ejecución se realiza correctamente, la instancia de la app estará operativa. Por ejemplo, puede tener una app Node.js de una sola hebra donde el código está atascado en un bucle interminable, lo que impide que la app responda a las solicitudes. Un análisis de actividad puede detectar este caso y reiniciar la instancia. De forma predeterminada, no se establece automáticamente ningún análisis de actividad. Puede configurar el análisis de actividad con Propiedades de análisis de actividad.

Sondeo de disposición

Un sondeo de preparación comprueba periódicamente si la aplicación está preparada para recibir tráfico. Puede utilizar un sondeo de preparación para eliminar temporalmente una instancia de app del equilibrio de carga. Si el sondeo de preparación falla, la instancia de la app no puede recibir más solicitudes hasta que el sondeo de preparación vuelva a tener éxito. Por ejemplo, considere el caso en el que la aplicación puede servir solicitudes como, por ejemplo, cuando un sondeo de actividad se devuelve correctamente. Sin embargo, es posible que la app tenga otras condiciones necesarias antes de que pueda dar servicio a la carga de trabajo de usuario prevista. Quizás la app requiera que se establezca una conexión de trabajo con el programa de fondo antes de que la app pueda responder a las solicitudes del usuario. Este escenario requiere un tipo de comprobación diferente porque el estado de la aplicación se considera recuperable. Supongamos que la instancia de revisión de la app está en un estado activo durante algún tiempo; sin embargo, la conexión de base de datos ha finalizado de forma inesperada. La instancia de la app debe volver a conectarse a la base de datos. La instancia de la app está en un estado not ready porque falla la solicitud del analizador de preparación. Como resultado, el analizador de preparación indica al equilibrador de carga que detenga temporalmente el envío de solicitudes a esa instancia de app. Cuando se recupera la conexión con la base de datos, el sondeo de preparación se realiza correctamente y el tráfico empieza a direccionarse de nuevo a la instancia de la app.

De forma predeterminada, cada app tiene un analizador de preparación que está definido de tipo tcp y este analizador comprueba que el puerto de escucha configurado para la aplicación está abierto. Cuando esta comprobación de preparación se completa como correcta, la aplicación se encuentra en un estado preparado. Puede personalizar adicionalmente el analizador de preparación con Propiedades del analizador de preparación.

Las pruebas de actividad y preparación actúan independientemente entre sí.

Si configura un sondeo de actividad y de preparación, el sondeo de actividad no espera una primera respuesta satisfactoria de un sondeo de preparación durante el inicio de una instancia de app. Si configura un sondeo de actividad y de preparación y desea esperar una respuesta satisfactoria de un sondeo de actividad antes de enviar una solicitud de preparación, puede utilizar la propiedad de retardo inicial para retrasar la primera solicitud de análisis de actividad en el número de segundos especificado.

¿Por qué utilizar pruebas de actividad y preparación con mis aplicaciones?

Cuando implementa analizadores en las aplicaciones Code Engine, los analizadores de actividad y preparación le proporcionan un control más preciso de la aplicación en ejecución para comprobar las condiciones de activo y listo de la aplicación.

Por ejemplo, es posible que la app tenga un retardo de arranque. El proceso de aplicación puede comenzar antes de que la aplicación esté totalmente lista, lo que puede afectar a las respuestas, especialmente cuando la aplicación se amplía a muchas instancias. Al establecer sondeos de actividad y preparación como comprobaciones de estado, puede permitir que Code Engine sepa si la app se está ejecutando y está lista para recibir solicitudes y servir tráfico. Mediante la configuración de estas sondas, también puede ayudar a prevenir el tiempo de inactividad cuando se realiza una actualización continua de su aplicación.

Los análisis de actividad y preparación se aplican a las instancias de aplicación. El sistema sondea cada instancia de una aplicación.

Las pruebas de actividad y preparación sirven para diferentes propósitos.

  • Puede utilizar un sondeo de actividad para desencadenar un reinicio de instancia de app, que básicamente detiene la instancia de app actual e inicia una instancia nueva. Utilice este analizador para situaciones en las que la aplicación no puede recuperarse de una anomalía interna y la app debe reiniciarse.

  • Por el contrario, si un sondeo de preparación falla, este sondeo hace que Code Engine detenga temporalmente las solicitudes de direccionamiento a la instancia de la app hasta que se recupere la instancia. Un sondeo de preparación es útil en situaciones en las que la aplicación encuentra un problema que es recuperable sin reiniciar la instancia. Durante el tiempo de recuperación, la aplicación no puede servir solicitudes de usuario. Cuando el sondeo de preparación es satisfactorio, la instancia puede servir de nuevo las solicitudes de usuario.

Implementación de una prueba de preparación o de ejecución en el código

Antes de configurar una prueba de preparación o actividad en Code Engine, primero debe implementar la prueba dentro de la imagen de código fuente a la que hace referencia la aplicación Code Engine.

Si no implementa primero el analizador en el código, los analizadores que configure en Code Engine siempre fallarán, lo que hace que la aplicación falle.

Tenga en cuenta los puntos siguientes cuando implemente un análisis de preparación o de actividad en el código.

  • Determine el tipo de conexión que se va a utilizar para una prueba de preparación o de actividad. Puede especificar un analizador de tipo HTTP o TCP.

    • Un analizador de tipo HTTP proporciona un punto final para devolver el estado del analizador con un método HTTP GET. Este tipo de analizador se considera satisfactorio si el analizador responde dentro del límite de tiempo de espera y el código de retorno HTTP es mayor o igual que 200, pero menor que 400. Cualquier valor fuera de este rango se considera un error de sondeo.
    • Un analizador de tipo TCP sólo comprueba que el puerto esté abierto. Este tipo de sondeo se considera satisfactorio si el puerto está abierto. Si el puerto no está abierto, este tipo de analizador se considera anómalo.
  • Determine el puerto al que el código fuente responde al analizador.

    • En general, si el código fuente de la app está abriendo sólo un puerto, la configuración de puerto para el análisis de preparación o de ejecución suele ser el mismo valor que el puerto de escucha configurado de la aplicación Code Engine. Si establece el puerto de prueba de preparación o actividad en Code Engine en 0, el puerto del analizador toma de forma predeterminada el puerto de escucha configurado de la aplicación.
    • Si el código fuente de la app escucha en varios puertos simultáneamente, puede utilizar un puerto diferente en el código fuente para responder a las solicitudes de análisis de preparación o de ejecución. En este caso, debe especificar el puerto correcto para el analizador cuando configure la configuración del analizador de preparación o de ejecución en Code Engine.
  • Puesto que los analizadores determinan si una instancia de app está disponible para servir solicitudes, asegúrese de que el código responda a las solicitudes de sondeo rápidamente.

  • Asegúrese de que su código maneja de forma segura una señal SIGTERM. Cuando falla una prueba de actividad, se envía una señal SIGTERM y el código debe manejar esta señal para evitar instancias de app que no respondan. Consulte ¿Por qué mis instancias de app no se están reduciendo como se esperaba?

Configuración de análisis de actividad y preparación en Code Engine

Puede utilizar los análisis de actividad y preparación como comprobaciones de estado para las aplicaciones. Puede personalizar los sondeos de preparación, que se establecen de forma predeterminada, y opcionalmente configurar un sondeo de actividad. Los análisis de actividad y preparación se envían a las instancias de aplicación en el intervalo configurado mientras se ejecutan las instancias.

Antes de configurar un análisis de ejecución o personalizar un análisis de preparación para la app Code Engine, primero debe implementar los análisis dentro del código; de lo contrario, la aplicación podría fallar.

Propiedades para pruebas de actividad y preparación

En la tabla siguiente se resumen las propiedades que se utilizan con análisis de actividad y preparación para una aplicación.

Propiedades de las sondas de liveness y readiness
Propiedad Descripción
Tipo Tipo de comprobación que realiza la sonda. Los valores válidos son tcp y http. Esta propiedad es obligatoria.
Vía de acceso La vía de acceso de la solicitud HTTP a la aplicación. Esta propiedad sólo es necesaria si el tipo es http.
Puerto El puerto al que se conecta el analizador. Si se establece en 0, el puerto para el analizador toma de forma predeterminada el puerto de escucha configurado de la aplicación.
Intervalo La cantidad de tiempo en segundos entre peticiones de sonda.
Retardo inicial La cantidad de tiempo en segundos que se debe esperar antes de que se realice la primera comprobación de la sonda de vitalidad.
Tiempo de espera La cantidad de tiempo en segundos que la sonda espera una respuesta de la aplicación antes de que se agote el tiempo de espera y se considere fallida.
Umbral de anomalía El número de comprobaciones consecutivas no satisfactorias para que el analizador se considere fallido.

Configuración de analizadores desde la consola

Después de implementar sondeos en la imagen de código a la que hace referencia la aplicación Code Engine, puede configurar sondeos de actividad y preparación desde la consola para realizar comprobaciones de estado en la aplicación.

Antes de empezar

  1. Desde la Code Engine Proyectos, vaya a su proyecto.
  2. Crear una aplicación. Por ejemplo, cree una aplicación denominada myapp que utilice la imagen icr.io/codeengine/helloworld. Esta imagen está disponible en el repositorio Samples for IBM Cloud Code Engine GitHub. Puede configurar sondeos de actividad y preparación al crear una aplicación. O bien, puede ver y actualizar los valores de los análisis de actividad y preparación cuando actualice una aplicación desde el separador Configuración > Opciones de inicio de imagen en la página de la aplicación.
  3. Para ver los analizadores configurados y sus propiedades para una aplicación, vaya a la pestaña Configuración > Opciones de inicio de imagen en la página de la aplicación.
  4. Edite los valores de análisis de actividad y preparación desde la pestaña Opciones de inicio de imagen. La modificación de un analizador crea una nueva revisión de aplicación. Por ejemplo, edite el analizador de preparación predeterminado para cambiar el tipo de conexión de TCP a HTTP y establezca la vía de acceso para el analizador de preparación en /readinessprobe. Consulte propiedades para obtener más información sobre las propiedades del analizador. Haga clic en Listo cuando haya terminado.
  5. Pulse Desplegar para guardar el cambio y desplegar la revisión de la app con los valores de analizador configurados.

Utilice la vista de la pestaña Instancias para comprobar las instancias de aplicación.

Configuración de analizadores con la CLI

Puede trabajar con sondeos de actividad y preparación con la CLI de Code Engine. Especifique la opción --probe-live o --probe-ready con el mandato ibmcloud ce app create o ibmcloud ce app update para configurar el analizador que desee.

Para obtener más información sobre las propiedades que puede configurar con un análisis de preparación o actividad, consulte Propiedades de análisis de preparación y actividad.

Antes de empezar

  1. Cree una aplicación con el mandato ibmcloud ce application create. En el ejemplo siguiente, utilice myapp como nombre de la aplicación y especifique icr.io/codeengine/helloworld como la imagen a la que hacer referencia.

    ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld
    
  2. Ejecute el mandato application get para visualizar los detalles sobre la aplicación. Tenga en cuenta que el análisis de preparación está configurado de forma predeterminada.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    
  3. Actualice la aplicación myapp con el mandato ibmcloud ce application update para configurar un análisis de actividad. Por ejemplo, especifique la opción --probe-live para configurar un análisis de actividad de tipo HTTP de forma que la conexión utilice el puerto 8080 y la vía de acceso al directorio de inicio de la imagen de código referenciada * * sea /.

    Al configurar propiedades para un análisis de preparación o actividad en los mandatos application create o application update, debe proporcionar la opción --probe-live o --probe-ready antes de cada propiedad que establezca.

    ibmcloud ce application update --name myapp --probe-live type=http --probe-live path=/ --probe-live port=8080
    
  4. Ejecute el mandato application get para visualizar los detalles sobre la aplicación myapp actualizada. Los detalles incluyen información sobre el análisis de actividad configurado.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          10  
        Timeout:           1  
        FailureThreshold:  1  
    
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    

Ahora que ha configurado un análisis de actividad y preparación para la aplicación myapp, el sistema realiza constantemente ambos sondeos de acuerdo con su configuración.

Visualización de valores de analizador en Code Engine

Puede ver información sobre sondeos de actividad y preparación establecidos en Code Engine desde la consola y con la CLI.

Visualización de valores de analizador desde la consola

Para ver detalles sobre los análisis de actividad y preparación configurados en la consola, vaya a la pestaña Configuración > Opciones de inicio de imagen en la página de la aplicación.

Visualización de valores de analizador con la CLI

Para ver detalles sobre la aplicación con la CLI, incluida la información sobre los análisis de actividad y preparación configurados, ejecute el mandato application get.

ibmcloud ce application get --name myapp

Salida de ejemplo

[...]
OK

Name:               myapp
ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:       myproject
[...]
Liveness Probe:     
    Type:              httpget  
    Path:              /  
    Port:              8080  
    Interval:          10  
    Timeout:           1  
    FailureThreshold:  1  

Readiness Probe:    
    Type:              tcpsocket  
    Port:              0  
[...]

Actualización de analizadores

Puede modificar las propiedades de los análisis de actividad y preparación para las aplicaciones. Al actualizar las propiedades de un analizador, se crea una nueva revisión de aplicación. los análisis de actividad y preparación se envían a las instancias de aplicación en el intervalo configurado mientras se ejecutan las instancias.

Actualización de sondas desde la consola

Puede modificar o editar un análisis de preparación o de actividad en la consola, desde el separador Configuración > Opciones de inicio de imagen en la página de la aplicación.

  1. Vaya a la página de su solicitud. Una forma de ir a la página de la aplicación es la siguiente:
    • Localice la página de proyectos deCode Engine.
    • Haga clic en el nombre de su proyecto para abrir la página Resumen.
    • Pulse Aplicaciones para abrir una lista de sus aplicaciones. Pulse el nombre de su aplicación para que se abra la página de la aplicación.
  2. En la página de la aplicación, pulse la pestaña Configuración > Opciones de inicio de imagen en la página de la aplicación.
  3. Edite los valores de análisis de actividad y preparación desde la pestaña Opciones de inicio de imagen. La modificación de un analizador crea una nueva revisión de aplicación. Pulse Editar para modificar el análisis de preparación o de actividad que desea cambiar.
  4. En la página Sonda de preparación o en la página Sonda de vida, actualice las propiedades del sondeo. Haga clic en Listo cuando haya terminado.
  5. Pulse Desplegar para guardar el cambio y desplegar la revisión de la app con los valores de analizador configurados.

Utilice la vista de la pestaña Instancias para comprobar las instancias de aplicación.

Actualización de sondas con la CLI

Supongamos que desea actualizar el análisis de ejecución para myapp de forma que el tipo de conexión sea HTTP y el umbral de anomalía sea 3 y el intervalo entre solicitudes de sondeo sea de 5 segundos.

  1. Actualice la aplicación myapp con el mandato ibmcloud ce application update para actualizar el análisis de actividad de forma que el tipo de conexión sea HTTP, el umbral de anomalía sea 3 y el intervalo entre solicitudes de análisis sea de 5 segundos.

    Al configurar propiedades para un análisis de preparación o actividad en los mandatos application create o application update, debe proporcionar la opción --probe-live o --probe-ready antes de cada propiedad que establezca.

    ibmcloud ce application update --name myapp --probe-live type=http --probe-live interval=5 --probe-live failure-threshold=3
    
  2. Ejecute el mandato application get para visualizar los detalles sobre la aplicación myapp actualizada. Los detalles incluyen información sobre la configuración actual para el sondeo de actividad.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]
    
  3. Actualice la aplicación myapp con el mandato ibmcloud ce application update para actualizar el analizador de preparación de forma que el tipo de conexión sea HTTP, el puerto sea 8080, el umbral de anomalía sea 3 y el intervalo entre solicitudes de analizador sea de 5 segundos.

    Al configurar propiedades para un análisis de preparación o actividad en los mandatos application create o application update, debe proporcionar la opción --probe-live o --probe-ready antes de cada propiedad que establezca.

    ibmcloud ce application update --name myapp --probe-ready type=http --probe-ready port=8080 --probe-ready interval=5 --probe-ready failure-threshold=3
    
  4. Ejecute el mandato application get para visualizar los detalles sobre la aplicación myapp actualizada. Los detalles incluyen información sobre el valor actualizado para el analizador de preparación.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Liveness Probe:     
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    
    Readiness Probe:    
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3  
    [...]
    

Supresión de analizadores

Puede eliminar (suprimir) un análisis de actividad. Sin embargo, debido a que un sondeo de preparación siempre se establece de forma predeterminada, sólo puede editar para actualizar las propiedades de un sondeo de preparación.

Supresión de analizadores de la consola

Desde la consola, puede eliminar un análisis de actividad desde la pestaña Configuración > Opciones de inicio de imagen en la página de la aplicación.

  1. Vaya a la página de su solicitud. Una forma de ir a la página de la aplicación es la siguiente:
    • Localice la página de proyectos deCode Engine.
    • Haga clic en el nombre de su proyecto para abrir la página Resumen.
    • Pulse Aplicaciones para abrir una lista de sus aplicaciones. Pulse el nombre de su aplicación para que se abra la página de la aplicación.
  2. En la página de la aplicación, pulse la pestaña Configuración y, a continuación, la pestaña Opciones de inicio de imagen en la página de la aplicación.
  3. Para eliminar un sondeo de actividad, debe crear una nueva revisión de aplicación.
    1. Pulse Suprimir para eliminar el análisis de actividad.
    2. Haga clic en Desplegar para guardar los cambios y desplegar la revisión de la aplicación.

Aunque no puede suprimir un sondeo de preparación, puede actualizarlo.

Supresión de analizadores con la CLI

  1. Para eliminar el análisis de actividad, actualice la aplicación myapp con el mandato ibmcloud ce application update con la opción --probe-live-clear.

    ibmcloud ce application update --name myapp --probe-live-clear
    
  2. Ejecute el mandato application get para visualizar los detalles sobre la aplicación myapp actualizada. Se suprime el análisis de actividad.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              httpget  
        Path:              /  
        Port:              8080  
        Interval:          5  
        Timeout:           1  
        FailureThreshold:  3   
    [...]
    
  3. Para restablecer el analizador de preparación a la configuración predeterminada, actualice la aplicación myapp con el mandato ibmcloud ce application update con la opción --probe-ready-reset.

    ibmcloud ce application update --name myapp --probe-ready-reset
    
  4. Ejecute el mandato application get para visualizar los detalles sobre la aplicación myapp actualizada. El analizador de preparación se restablece en la configuración predeterminada.

    ibmcloud ce application get --name myapp
    

    Salida de ejemplo

    [...]
    OK
    
    Name:               myapp
    ID:                 abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
    Project Name:       myproject
    [...]
    Readiness Probe:    
        Type:              tcpsocket  
        Port:              0  
    [...]