Utilizzo dei probe di attività e prontezza per la tua applicazione
Con Code Engine, puoi impostare i controlli di integrità per migliorare la robustezza delle tue applicazioni utilizzando i probe di attività e prontezza. Puoi configurare Code Engine per utilizzare questi probe quando crei o aggiorni le tue applicazioni.
Cosa sono le sonde di vitalità e prontezza?
Utilizza i probe di disponibilità e attività per controllare se la tua applicazione è attiva e pronta per rispondere alle richieste e servire il traffico.
- Probe di attività
-
Un probe di attività verifica periodicamente se l'applicazione è operativa (o attiva) e può rispondere alle richieste in entrata. È possibile utilizzare un probe di attività per controllare se l'applicazione risponde alle richieste in entrata o se si trova in una situazione che richiede al sistema di arrestare l'istanza e avviare una nuova istanza. Se il probe di attività non riesce, l'istanza dell'app viene riavviata. Se il probe di attività ha esito positivo, l'istanza dell'applicazione è operativa. Ad esempio, potresti avere un'applicazione Node.js a thread singolo dove il codice è bloccato in un loop infinito, che impedisce all'applicazione di rispondere alle richieste. Un probe di attività può rilevare questo caso e riavviare l'istanza. Nessun probe di attività viene impostato automaticamente per impostazione predefinita. È possibile configurare il probe di attività con Proprietà del probe di attività.
- Probe di disponibilità
-
Un probe di disponibilità controlla periodicamente se l'applicazione è pronta a ricevere traffico. Puoi utilizzare un probe di disponibilità per eliminare temporaneamente un'istanza dell'applicazione dal bilanciamento del carico. Se il probe di disponibilità non riesce, l'istanza dell'applicazione non può ricevere più richieste fino a quando il probe di disponibilità non riesce di nuovo. Ad esempio, considerare il caso in cui l'applicazione è in grado di soddisfare le richieste, ad esempio quando un probe di attività restituisce esito positivo. Tuttavia, la tua applicazione potrebbe avere altre condizioni richieste prima che possa servire il carico di lavoro dell'utente previsto. Forse la tua applicazione richiede che venga stabilita una connessione funzionante al backend prima che l'applicazione possa rispondere alle richieste utente. Questo scenario richiede un tipo di controllo diverso perché lo stato della app è considerato recuperabile. Si supponga che l'istanza di revisione dell'applicazione sia in uno stato attivo per un certo periodo di tempo; tuttavia, la connessione al database è stata terminata in modo imprevisto. L'istanza dell'applicazione deve riconnettersi al database. L'istanza dell'applicazione è in stato
not readyperché non riesce a soddisfare la richiesta di analisi della prontezza. Di conseguenza, il probe di disponibilità indica al programma di bilanciamento del carico di arrestare temporaneamente l'invio di richieste a tale istanza dell'applicazione. Quando la connessione al database viene ripristinata, il probe di disponibilità ha esito positivo e il traffico inizia di nuovo l'instradamento all'istanza dell'applicazione.Per impostazione predefinita, ogni app ha un probe di disponibilità definito di tipo
tcpe questo probe verifica che la porta di ascolto configurata per l'applicazione sia aperta. Quando questo controllo di disponibilità viene completato correttamente, l'app è in uno stato di pronto. È possibile personalizzare ulteriormente il probe di disponibilità con Proprietà del probe di disponibilità.
Le sonde di attività e prontezza agiscono indipendentemente l'una dall'altra.
Se configuri sia un probe di attività che di disponibilità, il probe di attività non attende una prima risposta corretta da un probe di disponibilità durante l'avvio di un'istanza dell'applicazione. Se si configura sia un probe di attività che di disponibilità e si desidera attendere una risposta corretta da un probe di attività prima che venga inviata una richiesta di analisi di disponibilità, è possibile utilizzare la proprietà di ritardo iniziale per ritardare la prima richiesta di analisi di attività del numero di secondi specificato.
Perché utilizzare i probe di attività e prontezza con le mie app?
Quando implementi i probe nelle tue applicazioni Code Engine, i probe di attività e prontezza ti forniscono un controllo più dettagliato della tua applicazione in esecuzione per controllare le condizioni alive e ready della tua applicazione.
Ad esempio, la tua applicazione potrebbe avere un ritardo di avvio. Il processo dell'applicazione potrebbe iniziare prima che l'applicazione sia completamente pronta, il che può influire sulle risposte, soprattutto quando l'applicazione viene scalata su molte istanze. Impostando i probe di disponibilità e attività come controlli di integrità, puoi consentire a Code Engine di sapere se la tua applicazione è in esecuzione e pronta a ricevere richieste e a servire il traffico. Impostando queste sonde, si possono anche evitare i tempi di inattività quando si esegue un aggiornamento continuo dell'applicazione.
I probe di disponibilità e attività si applicano alle istanze dell'applicazione. Ogni istanza di un'applicazione viene analizzata dal sistema.
Le sonde di attività e prontezza servono a scopi diversi.
-
Puoi utilizzare un probe di attività per attivare un riavvio dell'istanza dell'applicazione, che fondamentalmente arresta l'istanza dell'applicazione corrente e avvia una nuova istanza. Utilizzare questa analisi per situazioni in cui l'applicazione non può essere ripristinata da un errore interno e l'applicazione deve essere riavviata.
-
Al contrario, se un probe di disponibilità non riesce, questo probe fa sì che Code Engine arresti temporaneamente le richieste di instradamento all'istanza dell'applicazione fino a quando l'istanza non viene ripristinata. Un probe di disponibilità è utile in situazioni in cui la propria applicazione rileva un problema che è possibile risolvere senza riavviare l'istanza. Durante il tempo di recupero, l'applicazione non è in grado di soddisfare richieste utente. Quando il probe di disponibilità ha esito positivo, l'istanza può soddisfare nuovamente le richieste degli utenti.
Implementazione di un probe di disponibilità o attività nel codice
Prima di configurare un probe di disponibilità o attività in Code Engine, devi prima implementare il probe all'interno dell'immagine del codice sorgente a cui fa riferimento la tua applicazione Code Engine.
Se non implementi prima il probe nel codice, i probe che configuri in Code Engine hanno sempre esito negativo, il che causa l'errore della tua applicazione.
Considera i seguenti punti quando implementi un probe di disponibilità o attività nel tuo codice.
-
Determinare il tipo di connessione da utilizzare per un probe di disponibilità o attività. È possibile specificare un probe di tipo
HTTPoTCP.- Un probe di tipo
HTTPfornisce un endpoint per restituire lo stato del probe con un metodo HTTP GET. Questo tipo di analisi viene considerato riuscito se il probe risponde entro il limite di timeout e il codice di ritorno HTTP è maggiore o uguale a 200, ma inferiore a 400. Qualsiasi valore al di fuori di questo intervallo viene considerato un errore di analisi. - Un'analisi di tipo
TCPcontrolla solo che la porta sia aperta. Questo tipo di analisi viene considerato riuscito se la porta è aperta. Se la porta non è aperta, questo tipo di probe viene considerato non riuscito.
- Un probe di tipo
-
Determinare la porta a cui il codice sorgente risponde al probe.
- In generale, se il tuo codice sorgente dell'applicazione sta aprendo solo una porta, la configurazione della porta per il probe di disponibilità o attività è di solito lo stesso valore della porta di ascolto configurata della tua applicazione
Code Engine. Se si imposta la porta del probe di disponibilità o attività in Code Engine su
0, la porta per il probe assume come valore predefinito la porta di ascolto configurata dell'applicazione. - Se il tuo codice sorgente dell'applicazione è in ascolto su più porte contemporaneamente, puoi utilizzare una porta diversa nel codice sorgente per rispondere alle richieste di analisi di prontezza o attività. In questo caso, devi specificare la porta corretta per il tuo probe quando configuri la configurazione del probe di disponibilità o di attività in Code Engine.
- In generale, se il tuo codice sorgente dell'applicazione sta aprendo solo una porta, la configurazione della porta per il probe di disponibilità o attività è di solito lo stesso valore della porta di ascolto configurata della tua applicazione
Code Engine. Se si imposta la porta del probe di disponibilità o attività in Code Engine su
-
Poiché i probe determinano se un'istanza dell'applicazione è disponibile per soddisfare le richieste, assicurati che il tuo codice risponda rapidamente alle richieste di analisi.
-
Assicurarsi che il codice gestisca in modo sicuro un segnale SIGTERM. Quando un probe di attività non riesce, viene inviato un segnale SIGTERM e il tuo codice deve gestire questo segnale per evitare istanze dell'applicazione che non rispondono. Vedi Perché le mie istanze dell'applicazione non stanno diminuendo come previsto?
Configurazione dei probe di attività e prontezza in Code Engine
È possibile utilizzare i probe di attività e prontezza come controlli di integrità per le applicazioni. È possibile personalizzare i probe di disponibilità, impostati per impostazione predefinita, e facoltativamente configurare un probe di attività. I probe di disponibilità e attività vengono inviati alle istanze dell'applicazione all'intervallo configurato mentre le istanze sono in esecuzione.
Prima di configurare un probe di attività o personalizzare un probe di disponibilità per la tua applicazione Code Engine, devi prima implementare i probe nel tuo codice; altrimenti la tua applicazione potrebbe non riuscire.
Proprietà per i probe di attività e prontezza
La seguente tabella riepiloga le proprietà utilizzate con i probe di attività e disponibilità per un'app.
| Proprietà | Descrizione |
|---|---|
| Immettere | Il tipo di controllo che la sonda esegue. I valori validi sono tcp e http. Questa proprietà è obbligatoria. |
| Percorso | Il percorso della richiesta HTTP all'applicazione. Questa proprietà è obbligatoria solo se il tipo è http. |
| Porta | La porta a cui si connette il probe. Se impostato su 0, la porta per il probe assume come valore predefinito la porta di ascolto configurata dell'applicazione. |
| Intervallo | L'intervallo di tempo in secondi tra le richieste di sonda. |
| Ritardo iniziale | L'intervallo di tempo in secondi da attendere prima che venga eseguito il primo controllo della sonda di liveness. |
| Timeout | Il tempo in secondi in cui la sonda attende una risposta dall'applicazione prima di andare in timeout e di essere considerata fallita. |
| Soglia di errore | Il numero di controlli consecutivi, non riusciti, perché il probe venga considerato non riuscito. |
Configurazione dei probe dalla console
Dopo aver implementato i probe nella tua immagine di codice a cui fa riferimento la tua applicazione Code Engine, puoi configurare i probe di attività e prontezza dalla console per eseguire controlli di integrità sulla tua applicazione.
Prima di iniziare
-
Implementare un probe nel codice. (esterno a Code Engine)
-
Creare un progetto. (da Code Engine)
- Dalla pagina ProgettiCode Engine, vai al tuo progetto.
- Creare un'applicazione. Ad esempio, crea un'applicazione denominata
myappche utilizza l'immagineicr.io/codeengine/helloworld. Questa immagine è disponibile da Esempi per il repository IBM Cloud Code Engine GitHub. È possibile configurare i probe di attività e di disponibilità quando si crea un'applicazione. In alternativa, è possibile visualizzare e aggiornare le impostazioni per i probe di attività e prontezza quando si aggiorna un'applicazione dalla scheda Configurazione > Opzioni di avvio immagine nella pagina dell'applicazione. - Per visualizzare i probe configurati e le relative proprietà per un'applicazione, andare alla scheda Configurazione > Opzioni di avvio immagine nella pagina dell'applicazione.
- Modificare le impostazioni del probe di disponibilità e attività dalla scheda Opzioni di avvio immagine. La modifica di un probe crea una nuova revisione dell'applicazione. Ad esempio, modificare il probe di disponibilità
predefinito per modificare il tipo di connessione da TCP a HTTP e impostare il percorso del probe di disponibilità su
/readinessprobe. Per ulteriori informazioni sulle proprietà del probe, consultare properties. Al termine, fare clic su Fine. - Fare clic su Distribuisci per salvare la modifica e distribuire la revisione dell'app con le impostazioni del probe configurate.
Utilizzare la vista nella scheda Istanze per controllare le istanze dell'applicazione.
Configurazione dei probe con la CLI
Puoi lavorare con i probe di attività e prontezza con la CLI Code Engine. Specificare l'opzione --probe-live o --probe-ready con il comando ibmcloud ce app create o ibmcloud ce app update per configurare il probe che si desidera.
Per ulteriori informazioni sulle proprietà che è possibile configurare con un probe di disponibilità o attività, consultare Proprietà del probe di disponibilità e attività.
Prima di iniziare
-
Implementare un probe nel codice. Dopo aver implementato un probe nel tuo codice (all'esterno di Code Engine), puoi configurare la tua applicazione Code Engine per lavorare con il probe.
-
Da Code Engine:
- Imposta il tuo ambiente CLICode Engine.
- Creare un progetto.
-
Creare un'applicazione con il comando
ibmcloud ce application create. Nel seguente esempio, utilizzaremyappcome nome dell'applicazione e specificareicr.io/codeengine/helloworldcome immagine a cui fare riferimento.ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld -
Esegui il comando
application getper visualizzare i dettagli sull'app. Notare che il probe di disponibilità è configurato per impostazione predefinita.ibmcloud ce application get --name myappOutput di esempio
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...] -
Aggiornare l'applicazione
myappcon il comandoibmcloud ce application updateper configurare un probe di attività. Ad esempio, specificare l'opzione--probe-liveper configurare un probe di attività di tipo HTTP in modo che la connessione utilizzi la porta 8080 e il percorso della directory home dell'immagine del codice di riferimento * * sia/.Quando si configurano le proprietà per un probe di disponibilità o attività sui comandi
application createoapplication update, è necessario fornire l'opzione--probe-liveo--probe-readyprima di ogni proprietà impostata.ibmcloud ce application update --name myapp --probe-live type=http --probe-live path=/ --probe-live port=8080 -
Eseguire il comando
application getper visualizzare i dettagli sull'applicazionemyappaggiornata. I dettagli includono le informazioni sul probe di attività configurato.ibmcloud ce application get --name myappOutput di esempio
[...] 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 [...]
Ora che è stato configurato sia un probe di attività che di prontezza per l'applicazione myapp, il sistema esegue costantemente entrambi i probe in base alla loro configurazione.
Visualizzazione impostazioni probe in Code Engine
Puoi visualizzare le informazioni relative ai probe di attività e prontezza impostate in Code Engine dalla console e con la CLI.
Visualizzazione delle impostazioni del probe dalla console
Per visualizzare i dettagli sui tuoi probe di attività e prontezza configurati nella console, vai alla scheda Configuration > Image start options nella pagina della tua applicazione.
Visualizzazione delle impostazioni del probe con la CLI
Per visualizzare i dettagli relativi all'applicazione con la CLI, incluse le informazioni sui probe di disponibilità e di attività configurati, eseguire il comando application get.
ibmcloud ce application get --name myapp
Output di esempio
[...]
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
[...]
Aggiornamento probe
È possibile modificare le proprietà per i probe di attività e disponibilità per le applicazioni. Quando si aggiornano le proprietà di un probe, viene creata una nuova revisione dell'applicazione. i probe di disponibilità e attività vengono inviati alle istanze dell'applicazione all'intervallo configurato mentre le istanze sono in esecuzione.
Aggiornamento delle sonde dalla console
Puoi modificare o modificare un probe di disponibilità o di attività nella console, dalla scheda Configurazione > Opzioni di avvio immagine nella tua pagina dell'applicazione.
- Andate alla vostra pagina di candidatura. Un modo per passare alla pagina dell'applicazione è quello di
- Individua la pagina ProgettiCode Engine.
- Fare clic sul nome del progetto per aprire la pagina Panoramica.
- Fare clic su Applicazioni per aprire un elenco delle applicazioni. Fare clic sul nome dell'applicazione per aprirne la pagina.
- Dalla pagina dell'applicazione, fare clic sulla scheda Configurazione > Opzioni di avvio immagine nella propria pagina dell'applicazione.
- Modificare le impostazioni del probe di disponibilità e attività dalla scheda Opzioni di avvio immagine. La modifica di un probe crea una nuova revisione dell'applicazione. Fare clic su Modifica per modificare il probe di disponibilità o attività che si desidera modificare.
- Dalla pagina Sonda di disponibilità o dalla pagina Sonda di attività, aggiornare le proprietà del probe. Al termine, fare clic su Fine.
- Fare clic su Distribuisci per salvare la modifica e distribuire la revisione dell'app con le impostazioni del probe configurate.
Utilizzare la vista nella scheda Istanze per controllare le istanze dell'applicazione.
Aggiornamento delle sonde con la CLI
Si supponga di voler aggiornare il probe di attività per myapp in modo che il tipo di connessione sia HTTP e la soglia di errore sia 3 e l'intervallo tra le richieste del probe sia 5 secondi.
-
Aggiornare l'applicazione
myappcon il comandoibmcloud ce application updateper aggiornare il probe di attività in modo che il tipo di connessione è HTTP, la soglia di errore è 3 e l'intervallo tra le richieste del probe è 5 secondi.Quando si configurano le proprietà per un probe di disponibilità o attività sui comandi
application createoapplication update, è necessario fornire l'opzione--probe-liveo--probe-readyprima di ogni proprietà impostata.ibmcloud ce application update --name myapp --probe-live type=http --probe-live interval=5 --probe-live failure-threshold=3 -
Eseguire il comando
application getper visualizzare i dettagli sull'applicazionemyappaggiornata. I dettagli includono informazioni sulla configurazione corrente per il probe di attività.ibmcloud ce application get --name myappOutput di esempio
[...] 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 [...] -
Aggiornare l'applicazione
myappcon il comandoibmcloud ce application updateper aggiornare il probe di disponibilità in modo che il tipo di connessione è HTTP, la porta è 8080, la soglia di errore è 3 e l'intervallo tra le richieste del probe è 5 secondi.Quando si configurano le proprietà per un probe di disponibilità o attività sui comandi
application createoapplication update, è necessario fornire l'opzione--probe-liveo--probe-readyprima di ogni proprietà impostata.ibmcloud ce application update --name myapp --probe-ready type=http --probe-ready port=8080 --probe-ready interval=5 --probe-ready failure-threshold=3 -
Eseguire il comando
application getper visualizzare i dettagli sull'applicazionemyappaggiornata. I dettagli includono le informazioni sull'impostazione aggiornata per il probe di disponibilità.ibmcloud ce application get --name myappOutput di esempio
[...] 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 [...]
Eliminazione delle sonde
È possibile rimuovere (eliminare) un probe di attività. Tuttavia, poiché un probe di disponibilità è sempre impostato per impostazione predefinita, è possibile modificare solo per aggiornare le proprietà di un probe di disponibilità.
Eliminazione dei probe dalla console
Dalla console, puoi rimuovere un probe di attività dalla scheda Configurazione > Opzioni di avvio immagine nella pagina della tua applicazione.
- Andate alla vostra pagina di candidatura. Un modo per passare alla pagina dell'applicazione è quello di
- Individua la pagina ProgettiCode Engine.
- Fare clic sul nome del progetto per aprire la pagina Panoramica.
- Fare clic su Applicazioni per aprire un elenco delle applicazioni. Fare clic sul nome dell'applicazione per aprirne la pagina.
- Dalla pagina dell'applicazione, fare clic sulla scheda Configurazione e quindi sulla scheda Opzioni di avvio immagine nella propria pagina dell'applicazione.
- Per rimuovere un probe di attività, è necessario creare una nuova revisione dell'applicazione.
- Fare clic su Elimina per eliminare il probe di attività.
- Fai clic su Distribuisci per salvare la tua modifica e distribuire la revisione dell'applicazione.
Mentre non è possibile eliminare un probe di disponibilità, è possibile aggiornarlo.
Eliminazione dei probe con la CLI
-
Per rimuovere il probe di attività, aggiornare l'applicazione
myappcon il comandoibmcloud ce application updatecon l'opzione--probe-live-clear.ibmcloud ce application update --name myapp --probe-live-clear -
Eseguire il comando
application getper visualizzare i dettagli sull'applicazionemyappaggiornata. Il probe di attività è stato eliminato.ibmcloud ce application get --name myappOutput di esempio
[...] 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 [...] -
Per ripristinare la configurazione predefinita del probe di disponibilità, aggiornare l'applicazione
myappcon il comandoibmcloud ce application updatecon l'opzione--probe-ready-reset.ibmcloud ce application update --name myapp --probe-ready-reset -
Eseguire il comando
application getper visualizzare i dettagli sull'applicazionemyappaggiornata. Il probe di disponibilità viene reimpostato sulla configurazione predefinita.ibmcloud ce application get --name myappOutput di esempio
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...]