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 readyporque 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
tcpy 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
HTTPoTCP.- Un analizador de tipo
HTTPproporciona 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
TCPsó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.
- Un analizador de tipo
-
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.
- 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
-
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.
| 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
-
Implemente un analizador en el código. (fuera de Code Engine)
-
Cree un proyecto. (de Code Engine)
- Desde la Code Engine Proyectos, vaya a su proyecto.
- Crear una aplicación. Por ejemplo, cree una aplicación denominada
myappque utilice la imagenicr.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. - 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.
- 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. - 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
-
Implemente un analizador en el código. Después de implementar un analizador en el código (fuera de Code Engine), puede configurar la aplicación Code Engine para que funcione con el analizador.
-
Desde Code Engine:
- Configure su entorno de CLI de Code Engine.
- Crear un proyecto.
-
Cree una aplicación con el mandato
ibmcloud ce application create. En el ejemplo siguiente, utilicemyappcomo nombre de la aplicación y especifiqueicr.io/codeengine/helloworldcomo la imagen a la que hacer referencia.ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld -
Ejecute el mandato
application getpara 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 myappSalida de ejemplo
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...] -
Actualice la aplicación
myappcon el mandatoibmcloud ce application updatepara configurar un análisis de actividad. Por ejemplo, especifique la opción--probe-livepara 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 createoapplication update, debe proporcionar la opción--probe-liveo--probe-readyantes de cada propiedad que establezca.ibmcloud ce application update --name myapp --probe-live type=http --probe-live path=/ --probe-live port=8080 -
Ejecute el mandato
application getpara visualizar los detalles sobre la aplicaciónmyappactualizada. Los detalles incluyen información sobre el análisis de actividad configurado.ibmcloud ce application get --name myappSalida 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.
- 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.
- 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.
- 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.
- 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.
- 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.
-
Actualice la aplicación
myappcon el mandatoibmcloud ce application updatepara 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 createoapplication update, debe proporcionar la opción--probe-liveo--probe-readyantes de cada propiedad que establezca.ibmcloud ce application update --name myapp --probe-live type=http --probe-live interval=5 --probe-live failure-threshold=3 -
Ejecute el mandato
application getpara visualizar los detalles sobre la aplicaciónmyappactualizada. Los detalles incluyen información sobre la configuración actual para el sondeo de actividad.ibmcloud ce application get --name myappSalida 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 [...] -
Actualice la aplicación
myappcon el mandatoibmcloud ce application updatepara 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 createoapplication update, debe proporcionar la opción--probe-liveo--probe-readyantes 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 -
Ejecute el mandato
application getpara visualizar los detalles sobre la aplicaciónmyappactualizada. Los detalles incluyen información sobre el valor actualizado para el analizador de preparación.ibmcloud ce application get --name myappSalida 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.
- 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.
- 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.
- Para eliminar un sondeo de actividad, debe crear una nueva revisión de aplicación.
- Pulse Suprimir para eliminar el análisis de actividad.
- 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
-
Para eliminar el análisis de actividad, actualice la aplicación
myappcon el mandatoibmcloud ce application updatecon la opción--probe-live-clear.ibmcloud ce application update --name myapp --probe-live-clear -
Ejecute el mandato
application getpara visualizar los detalles sobre la aplicaciónmyappactualizada. Se suprime el análisis de actividad.ibmcloud ce application get --name myappSalida 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 [...] -
Para restablecer el analizador de preparación a la configuración predeterminada, actualice la aplicación
myappcon el mandatoibmcloud ce application updatecon la opción--probe-ready-reset.ibmcloud ce application update --name myapp --probe-ready-reset -
Ejecute el mandato
application getpara visualizar los detalles sobre la aplicaciónmyappactualizada. El analizador de preparación se restablece en la configuración predeterminada.ibmcloud ce application get --name myappSalida de ejemplo
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...]