Trabalhando com análises de vivacidade e prontidão para seu app
Com o Code Engine, é possível configurar verificações de funcionamento para melhorar a robustez de seus aplicativos usando análises de atividade e prontidão. É possível configurar o Code Engine para usar essas análises ao criar ou atualizar seus aplicativos.
O que são análises de vivacidade e prontidão?
Use as análises de vivacidade e de prontidão para verificar se seu app está ativo e pronto para responder às solicitações e entregar o tráfego
- Análise de vivacidade
-
Uma análise de atividade verifica periodicamente se o aplicativo está operacional (ou ativo) e pode responder a solicitações recebidas. É possível usar uma análise de atividade para verificar se o app está responsivo a solicitações recebidas ou se o app está em uma situação que requer que o sistema pare a instância e inicie uma nova instância. Se a análise de atividade falhar, a instância do app será reiniciada. Se a análise de atividade for bem-sucedida, a instância do app estará operacional. Por exemplo, é possível que você tenha um app Node.js de encadeamento único no qual o código está preso em um loop sem fim, o que evita que o app responda a solicitações Uma análise de atividade pode detectar esse caso e reiniciar a instância. Nenhuma análise de atividade é configurada automaticamente por padrão. É possível configurar a análise de atividade com Propriedades de análise de atividade.
- Análise de prontidão
-
Uma análise de prontidão verifica periodicamente se o aplicativo está pronto para receber o tráfego É possível usar uma análise de prontidão para remover temporariamente uma instância do app do balanceamento de carga Se a análise de prontidão falhar, a instância do app não poderá receber mais solicitações até que a análise de prontidão seja bem-sucedida novamente Por exemplo, considere o caso em que seu aplicativo é capaz de atender solicitações, como quando uma análise de vivacidade retorna bem-sucedida. No entanto, o seu app pode ter outras condições necessárias antes que ele possa atender a carga de trabalho do usuário pretendida Talvez seu app requeira que uma conexão de trabalho com o backend seja estabelecida antes que o app possa responder a solicitações do usuário Esse cenário requer um tipo diferente de verificação, pois o estado do aplicativo é considerado recuperável Suponha que a sua instância de revisão do app esteja em um estado ativo por algum tempo; no entanto, a conexão com o banco de dados foi encerrada inesperadamente A instância do app precisa reconectar ao banco de dados. A instância do app está em um estado
not readyporque ela falha na solicitação de análise de prontidão.. Como resultado, a análise de prontidão instrui o balanceador de carga a parar temporariamente o envio de solicitações para essa instância do app Quando a conexão com o banco de dados é recuperada, a análise de prontidão é bem-sucedida e o tráfego começa a rotear para a instância do app novamente.Por padrão, cada app tem uma análise de prontidão definida do tipo
tcpe essa análise verifica se a porta de recebimento configurada para o aplicativo está aberta. Quando essa verificação de prontidão for concluída como bem-sucedida, o app estará em um status pronto.. É possível customizar ainda mais a análise de prontidão com Propriedades de análise de prontidão
As análises de vivacidade e prontidão agem independentemente umas das outras.
Se você configurar uma análise de vivacidade e prontidão, a análise de vivacidade não esperará uma primeira resposta bem-sucedida de uma análise de prontidão durante o início de uma instância do app. Se você configurar uma análise de vivacidade e prontidão e desejar aguardar uma resposta bem-sucedida de uma análise de vivacidade antes que uma solicitação de análise de prontidão seja enviada, será possível usar a propriedade de atraso inicial para atrasar a primeira solicitação de análise de vivacidade pelo número especificado de segundos.
Por que usar análises de vivacidade e prontidão com meus aplicativos?
Ao implementar análises em seus aplicativos Code Engine, as análises de vivacidade e prontidão fornecem a você um controle de baixa granularidade de seu aplicativo em execução para verificar se há condições ativas e prontas de seu aplicativo.
Por exemplo, seu app pode ter um atraso de inicialização. O processo do aplicativo pode começar antes que ele esteja totalmente pronto, o que pode afetar as respostas, especialmente quando o aplicativo é escalonado em várias instâncias. Ao configurar as análises de vivacidade e prontidão como verificações de funcionamento, é possível permitir que o Code Engine saiba se seu app está em execução e pronto para receber solicitações e entregar tráfego. Ao definir essas sondas, você também pode ajudar a evitar o tempo de inatividade ao realizar uma atualização contínua do seu aplicativo.
As análises de vivacidade e prontidão aplicam-se para instâncias do aplicativo Cada instância de um aplicativo é investigada pelo sistema
As análises de vivacidade e prontidão têm diferentes propósitos.
-
É possível usar uma análise de atividade para acionar uma reinicialização da instância do app, que basicamente para a instância do app atual e inicia uma nova instância. Use esta análise para situações em que o seu aplicativo não pode se recuperar de uma falha interna e o app precisa ser reiniciado
-
Em contraste, se uma análise de prontidão falhar, essa análise fará com que o Code Engine pare temporariamente as solicitações de roteamento para a instância do app até que a instância seja recuperada. Uma análise de prontidão é útil em situações em que seu aplicativo encontra um problema recuperável sem reiniciar a instância. Durante o tempo de recuperação, o aplicativo não é capaz de atender às solicitações do usuário Quando a análise de prontidão for bem-sucedida, a instância poderá atender às solicitações do usuário novamente
Implementando uma análise de prontidão ou atividade em seu código
Antes de configurar uma análise de prontidão ou de vivacidade no Code Engine, deve-se primeiro implementar a análise dentro da imagem do código-fonte que é referenciada pelo seu aplicativo Code Engine
Se você não implementar primeiro a análise em seu código, as análises configuradas no Code Engine sempre falharão, o que faz com que seu aplicativo falhe.
Considere os pontos a seguir ao implementar uma análise de prontidão ou vivacidade em seu código.
-
Determine o tipo de conexão a ser usado para uma análise de prontidão ou atividade. É possível especificar uma análise do tipo
HTTPouTCP- Uma análise do tipo
HTTPfornece um terminal para retornar o status da análise com um método GET HTTP (Protocolo de Transporte de Hipertexto) Este tipo de análise será considerado bem-sucedido se a análise responder dentro do limite de tempo limite e o código de retorno HTTP for maior ou igual a 200, mas menor que 400. Qualquer valor fora desse intervalo é considerado uma falha de análise. - Uma análise do tipo
TCPverifica apenas se a porta está aberta Esse tipo de análise será considerado bem-sucedido se a porta estiver aberta Se a porta não estiver aberta, esse tipo de análise será considerado com falha..
- Uma análise do tipo
-
Determine a porta à qual seu código-fonte responde à análise.
- Em geral, se o seu código de origem do app estiver abrindo apenas uma porta, a configuração da porta para a análise de prontidão ou de atividade geralmente será o mesmo valor que a porta de recebimento configurada do aplicativo Code Engine.
Se você configurar a porta de prontidão ou de análise de atividade em Code Engine como
0, a porta para a análise será padronizada para a porta de recebimento configurada do aplicativo. - Se o seu código de origem do app atender em várias portas simultaneamente, será possível usar uma porta diferente em seu código de origem para responder a solicitações de prontidão ou de análise de atividade. Nesse caso, deve-se especificar a porta correta para sua análise ao configurar a configuração da análise de prontidão ou de atividade no Code Engine.
- Em geral, se o seu código de origem do app estiver abrindo apenas uma porta, a configuração da porta para a análise de prontidão ou de atividade geralmente será o mesmo valor que a porta de recebimento configurada do aplicativo Code Engine.
Se você configurar a porta de prontidão ou de análise de atividade em Code Engine como
-
Como as análises determinam se uma instância do app está disponível para atender às solicitações, certifique-se de que seu código responda às solicitações de análise rapidamente
-
Certifique-se de que o seu código manipule com segurança um sinal SIGTERM Quando uma análise de vivacidade falha, um sinal SIGTERM é enviado e seu código deve manipular esse sinal para evitar instâncias do app não responsivas Consulte Por que minhas instâncias de app não estão reduzindo a capacidade conforme o esperado?...
Configurando análises de vivacidade e prontidão no Code Engine
É possível usar análises de atividade e prontidão como verificações de funcionamento para seus aplicativos. É possível customizar análises de prontidão, que são configuradas por padrão e, opcionalmente, configurar uma análise de vivacidade. As análises de atividade e prontidão são enviadas para as instâncias do aplicativo no intervalo configurado enquanto as instâncias estão em execução.
Antes de configurar uma análise de vivacidade ou customizar uma análise de prontidão para seu app Code Engine, deve-se primeiro implementar as análises dentro de seu código; caso contrário, seu aplicativo pode falhar
Propriedades para análises de vivacidade e prontidão
A tabela a seguir resume as propriedades que são usadas com análises de atividade e prontidão para um app.
| Propriedade | Descrição |
|---|---|
| Tipo | O tipo de verificação que a sonda realiza. Os valores válidos são tcp e http. Esta propriedade é requerida. |
| Caminho | O caminho da solicitação HTTP para o aplicativo. Essa propriedade será necessária apenas se o tipo for http |
| Porta | A porta à qual a análise se conecta. Se configurado como 0, a porta para a análise será padronizada para a porta de recebimento configurada do aplicativo |
| Intervalo | A quantidade de tempo em segundos entre as solicitações de sonda. |
| Atraso inicial | O tempo, em segundos, a ser aguardado antes da execução da primeira verificação de sonda de vivacidade. |
| Tempo Limite | O tempo, em segundos, que a sonda espera por uma resposta do aplicativo antes de atingir o tempo limite e ser considerada falha. |
| Limite de falha | O número de verificações consecutivas e sem êxito para que a análise seja considerada com falha. |
Configurando análises a partir do console
Depois de implementar análises em sua imagem de código que é referenciada por seu aplicativo Code Engine, é possível configurar análises de vivacidade e prontidão por meio do console para executar verificações de funcionamento em seu aplicativo.
Antes de Iniciar
-
Implementar uma análise em seu código. (fora do Code Engine)
-
Criar um projeto.. (de Code Engine)
- Na página Code Engine Acesse seu projeto.
- Crie um aplicativo. Por exemplo, crie um aplicativo que seja chamado
myappe que use a imagemicr.io/codeengine/helloworld. Essa imagem está disponível em Amostras para IBM Cloud Code Engine GitHub repo. É possível configurar análises de atividade e prontidão ao criar um aplicativo. Ou é possível visualizar e atualizar as configurações para análises de atividade e prontidão ao atualizar um aplicativo na guia Configuração > Opções de início da imagem em sua página do aplicativo. - Para visualizar as análises configuradas e suas propriedades para um app, acesse a guia Configuração > Opções de início da imagem em sua página do aplicativo
- Edite as configurações de análise de vivacidade e prontidão na guia Opções de início de imagem. Modificar uma análise cria uma nova revisão de aplicativo. Por exemplo, edite a análise de prontidão padrão para mudar o tipo
de conexão de TCP para HTTP, e configure o caminho para a análise de prontidão para
/readinessprobeConsulte properties para obter mais informações sobre as propriedades de análise Clique em Done (Concluído ) quando terminar. - Clique em Implementar para salvar sua mudança e implementar a revisão do app com as configurações de análise configuradas
Use a visualização na guia Instâncias para verificar as instâncias do aplicativo..
Configurando análises com a CLI
É possível trabalhar com análises de atividade e prontidão com a CLI do Code Engine. Especifique a opção --probe-live ou --probe-ready com o comando ibmcloud ce app create ou ibmcloud ce app update para configurar a análise desejada.
Para obter mais informações sobre as propriedades que podem ser configuradas com uma análise de prontidão ou vivacidade, consulte Propriedades de análise de vivacidade e prontidão.
Antes de Iniciar
-
Implementar uma análise em seu código. Depois de implementar uma análise em seu código (fora do Code Engine), é possível configurar seu aplicativo Code Engine para trabalhar com a análise.
-
Em Code Engine:
- Configure o seu ambiente da CLI do Code Engine.
- Crie um projeto.
-
Crie um aplicativo com o comando
ibmcloud ce application create.. No exemplo a seguir, usemyappcomo o nome do aplicativo e especifiqueicr.io/codeengine/helloworldcomo a imagem a ser referência.ibmcloud ce application create --name myapp --image icr.io/codeengine/helloworld -
Execute o comando
application getpara exibir os detalhes sobre o app Observe que a análise de prontidão é configurada por padrão..ibmcloud ce application get --name myappSaída de exemplo
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...] -
Atualize o aplicativo
myappcom o comandoibmcloud ce application updatepara configurar uma análise de atividade. Por exemplo, especifique a opção--probe-livepara configurar uma análise de atividade do tipo HTTP de forma que a conexão use a porta 8080 e o caminho para o diretório inicial de sua imagem de código referenciada * * seja/.Ao configurar propriedades para uma análise de prontidão ou de vivacidade nos comandos
application createouapplication update, deve-se fornecer a opção--probe-liveou--probe-readyantes de cada propriedade configurada.ibmcloud ce application update --name myapp --probe-live type=http --probe-live path=/ --probe-live port=8080 -
Execute o comando
application getpara exibir os detalhes sobre o aplicativomyappatualizado Os detalhes incluem informações sobre a análise de atividade configurada.ibmcloud ce application get --name myappSaída de exemplo
[...] 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 [...]
Agora que você configurou uma análise de atividade e prontidão para seu aplicativo myapp, o sistema executa constantemente ambas as análises de acordo com sua configuração.
Visualizando configurações de análise no Code Engine
É possível visualizar informações sobre análises de atividade e prontidão que são configuradas no Code Engine por meio do console e com a CLI.
Visualizando configurações de análise a partir do console
Para visualizar detalhes sobre suas análises de vivacidade e prontidão configuradas no console, acesse a guia Configuração > Opções de início da imagem na página do aplicativo..
Visualizando configurações de análise com a CLI
Para visualizar detalhes sobre seu aplicativo com a CLI, incluindo informações sobre análises de vivacidade e prontidão configuradas, execute o comando application get.
ibmcloud ce application get --name myapp
Saída de exemplo
[...]
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
[...]
Atualizando análises
É possível modificar as propriedades para análises de atividade e prontidão para seus aplicativos. Ao atualizar as propriedades de uma análise, uma nova revisão do aplicativo é criada. As análises de atividade e de prontidão são enviadas para instâncias do aplicativo no intervalo configurado enquanto as instâncias estão em execução.
Atualização de sondas a partir do console
É possível modificar ou editar uma análise de prontidão ou de atividade no console, na guia Configuração > Opções de início da imagem em sua página do aplicativo
- Acesse sua página de inscrição. Uma maneira de navegar para a página do aplicativo é
- Localize a página Code Engine Projetos.
- Clique no nome do seu projeto para abrir a página Overview (Visão geral).
- Clique em Aplicativos para abrir uma lista de seus aplicativos. Clique no nome de seu aplicativo para abrir sua página de aplicativo.
- Na página do aplicativo, clique na guia Configurações > Opções de início de imagem em sua página do aplicativo
- Edite as configurações de análise de vivacidade e prontidão na guia Opções de início de imagem. Modificar uma análise cria uma nova revisão de aplicativo. Clique em Editar para modificar a análise de prontidão ou de atividade que você deseja mudar.
- Na página Análise de prontidão ou na página Análise de atividade, atualize as propriedades de sua análise. Clique em Done (Concluído ) quando terminar.
- Clique em Implementar para salvar sua mudança e implementar a revisão do app com as configurações de análise configuradas
Use a visualização na guia Instâncias para verificar as instâncias do aplicativo..
Atualização de sondas com a CLI
Suponha que você deseja atualizar a análise de vivacidade para myapp de modo que o tipo de conexão seja HTTP e o limite de falha seja 3 e o intervalo entre as solicitações de análise seja 5 segundos.
-
Atualize o aplicativo
myappcom o comandoibmcloud ce application updatepara atualizar a análise de vivacidade de forma que o tipo de conexão seja HTTP, o limite de falha seja 3 e o intervalo entre as solicitações de análise seja 5 segundos.Ao configurar propriedades para uma análise de prontidão ou de vivacidade nos comandos
application createouapplication update, deve-se fornecer a opção--probe-liveou--probe-readyantes de cada propriedade configurada.ibmcloud ce application update --name myapp --probe-live type=http --probe-live interval=5 --probe-live failure-threshold=3 -
Execute o comando
application getpara exibir os detalhes sobre o aplicativomyappatualizado Os detalhes incluem informações sobre a configuração atual para a análise de atividade.ibmcloud ce application get --name myappSaída de exemplo
[...] 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 [...] -
Atualize o aplicativo
myappcom o comandoibmcloud ce application updatepara atualizar a análise de prontidão para que o tipo de conexão seja HTTP, a porta seja 8080, o limite de falha seja 3 e o intervalo entre as solicitações de análise seja 5 segundos.Ao configurar propriedades para uma análise de prontidão ou de vivacidade nos comandos
application createouapplication update, deve-se fornecer a opção--probe-liveou--probe-readyantes de cada propriedade configurada.ibmcloud ce application update --name myapp --probe-ready type=http --probe-ready port=8080 --probe-ready interval=5 --probe-ready failure-threshold=3 -
Execute o comando
application getpara exibir os detalhes sobre o aplicativomyappatualizado Os detalhes incluem informações sobre a configuração atualizada da análise de prontidão.ibmcloud ce application get --name myappSaída de exemplo
[...] 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 [...]
Excluindo análises
É possível remover (excluir) uma análise de atividade. No entanto, como uma análise de prontidão é sempre configurada por padrão, é possível apenas editar para atualizar as propriedades de uma análise de prontidão.
Excluindo análises do console
No console, é possível remover uma análise de atividade da guia Configuração > Opções de início da imagem na página do aplicativo.
- Acesse sua página de inscrição. Uma maneira de navegar para a página do aplicativo é
- Localize a página Code Engine Projetos.
- Clique no nome do seu projeto para abrir a página Overview (Visão geral).
- Clique em Aplicativos para abrir uma lista de seus aplicativos. Clique no nome de seu aplicativo para abrir sua página de aplicativo.
- Na página do aplicativo, clique na guia Configurações e, em seguida, na guia Opções de início da imagem na página do aplicativo.
- Para remover uma análise de atividade, deve-se criar uma nova revisão de aplicativo.
- Clique em Excluir para remover a análise de atividade.
- Clique em Deploy para salvar as alterações e implementar a revisão do aplicativo.
Embora não seja possível excluir uma análise de prontidão, é possível atualizá-la.
Excluindo análises com a CLI
-
Para remover a análise de atividade, atualize o aplicativo
myappcom o comandoibmcloud ce application updatecom a opção--probe-live-clear.ibmcloud ce application update --name myapp --probe-live-clear -
Execute o comando
application getpara exibir os detalhes sobre o aplicativomyappatualizado A análise de atividade é excluída.ibmcloud ce application get --name myappSaída de exemplo
[...] 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 reconfigurar a análise de prontidão para a configuração padrão, atualize o aplicativo
myappcom o comandoibmcloud ce application updatecom a opção--probe-ready-resetibmcloud ce application update --name myapp --probe-ready-reset -
Execute o comando
application getpara exibir os detalhes sobre o aplicativomyappatualizado A análise de prontidão é reconfigurada para a configuração padrãoibmcloud ce application get --name myappSaída de exemplo
[...] OK Name: myapp ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Readiness Probe: Type: tcpsocket Port: 0 [...]