As sondas de atividade e de prontidão são mecanismos que verificam o status de um contêiner. A sonda de atividade determina se o contêiner está em execução adequada, enquanto a sonda de prontidão verifica se ele pode atender a requisições. Este tópico descreve como configurar sondas de atividade e de prontidão para contêineres no Elastic Container Instance (ECI). Essas sondas ajudam o ECI a monitorar e gerenciar o estado dos seus contêineres, garantindo alta disponibilidade e estabilidade do serviço.
Visão geral
O ECI oferece suporte a sondas de atividade e de prontidão para verificar a integridade e o status dos contêineres.
|
sonda de atividade |
Verifica se um contêiner está em execução adequada.
|
|
|
sonda de prontidão |
Verifica se um contêiner está pronto para aceitar e atender a requisições.
|
Utilize uma sonda de prontidão se uma aplicação ficar temporariamente incapaz de atender ao tráfego, por exemplo, durante o carregamento de grandes volumes de dados ou arquivos de configuração na inicialização. Nesses casos, você não deseja encerrar a aplicação, mas quer parar temporariamente de enviar requisições para ela. |
Configuração via API
Ao criar uma instância ECI com a operação CreateContainerGroup, configure as sondas usando os parâmetros LivenessProbe e ReadinessProbe. Para mais informações, consulte CreateContainerGroup.
Parâmetros de LivenessProbe
Ao configurar os parâmetros de LivenessProbe, especifique apenas um método de verificação: HttpGet, Exec ou TcpSocket.
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
Container.N.LivenessProbe.HttpGet.Path |
string |
/healthyz |
Caminho da requisição de verificação de integridade HTTP GET. |
|
Container.N.LivenessProbe.HttpGet.Port |
integer |
8888 |
Porta da requisição de verificação de integridade HTTP GET. |
|
Container.N.LivenessProbe.HttpGet.Scheme |
string |
HTTP |
Protocolo da requisição HTTP GET. Valores válidos:
|
|
Container.N.LivenessProbe.Exec.Command.N |
array |
cat /tmp/healthy |
Comando a ser executado dentro do contêiner para a verificação de integridade. |
|
Container.N.LivenessProbe.TcpSocket.Port |
integer |
8000 |
Porta a ser verificada na verificação de integridade por socket TCP. |
|
Container.N.LivenessProbe.InitialDelaySeconds |
integer |
5 |
Atraso em segundos após a inicialização do contêiner antes da execução da primeira sonda. |
|
Container.N.LivenessProbe.PeriodSeconds |
integer |
1 |
Intervalo de execução da sonda. Valor padrão: 10. Valor mínimo: 1. Unidade: segundos. |
|
Container.N.LivenessProbe.SuccessThreshold |
integer |
1 |
Número de sucessos consecutivos necessários para que a sonda seja considerada bem-sucedida após uma falha. Este valor deve ser 1 para sondas de atividade. Padrão: 1. |
|
Container.N.LivenessProbe.FailureThreshold |
integer |
3 |
Número de falhas consecutivas necessárias para que a sonda seja considerada como falha. Valor padrão: 3. |
|
Container.N.LivenessProbe.TimeoutSeconds |
integer |
1 |
Tempo limite em segundos para a sonda expirar. Valor padrão: 1. Valor mínimo: 1. Unidade: segundos. |
Parâmetros de ReadinessProbe
Ao configurar os parâmetros de ReadinessProbe, especifique apenas um método de verificação: HttpGet, Exec ou TcpSocket.
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
Container.N.ReadinessProbe.HttpGet.Path |
string |
/healthyz |
Caminho da requisição de verificação de integridade HTTP GET. |
|
Container.N.ReadinessProbe.HttpGet.Port |
integer |
8888 |
Porta da requisição de verificação de integridade HTTP GET. |
|
Container.N.ReadinessProbe.HttpGet.Scheme |
string |
HTTP |
Protocolo da requisição HTTP GET. Valores válidos:
|
|
Container.N.ReadinessProbe.Exec.Command.N |
array |
cat /tmp/healthy |
Comando a ser executado dentro do contêiner para a verificação de integridade. |
|
Container.N.ReadinessProbe.TcpSocket.Port |
integer |
8000 |
Porta a ser verificada na verificação de integridade por socket TCP. |
|
Container.N.ReadinessProbe.InitialDelaySeconds |
integer |
5 |
Atraso em segundos após a inicialização do contêiner antes da execução da primeira sonda. |
|
Container.N.ReadinessProbe.PeriodSeconds |
integer |
1 |
Intervalo de execução da sonda. Valor padrão: 10. Valor mínimo: 1. Unidade: segundos. |
|
Container.N.ReadinessProbe.SuccessThreshold |
integer |
1 |
Número mínimo de sucessos consecutivos necessários para que a sonda seja considerada bem-sucedida após uma falha. Padrão: 1. Mínimo: 1. |
|
Container.N.ReadinessProbe.FailureThreshold |
integer |
3 |
Número de falhas consecutivas necessárias para que a sonda seja considerada como falha. Valor padrão: 3. |
|
Container.N.ReadinessProbe.TimeoutSeconds |
integer |
1 |
Tempo limite em segundos para a sonda expirar. Valor padrão: 1. Valor mínimo: 1. Unidade: segundos. |
Configuração pelo console
Ao criar uma instância ECI no console do Elastic Container Instance, selecione um contêiner na seção Container Configurations, expanda as configurações avançadas do contêiner, ative as verificações de integridade e configure as sondas.
Na configuração de sondas pelo console, há suporte apenas para os métodos de linha de comando e requisição HTTP. O método de socket TCP não é suportado.
|
Parâmetro |
Descrição |
|
Timeout Period |
|
|
Method |
Selecione um método de verificação.
|
|
Script |
Se selecionar Script como método de verificação, especifique o comando a ser executado no contêiner. |
|
HTTP Request |
Se selecionar HTTP Request como método de verificação, especifique o caminho, a porta e o protocolo para a requisição HTTP GET. |
Exemplo
Este exemplo demonstra como criar uma instância ECI com uma sonda de atividade e uma sonda de prontidão e, em seguida, simular uma falha de serviço para observar as sondas em ação.
-
Chame a operação CreateContainerGroup para criar uma instância ECI.
O exemplo a seguir usa o método de socket TCP para verificações de integridade:
ContainerGroupName=test-probe # Use the nginx image and automatically create and associate an EIP. Container.1.Name=container-1 Container.1.Image=nginx AutoCreateEip=true # Liveness probe: checks port 80 every 3s, starting 5s after launch. Success threshold: 1, failure threshold: 3, timeout: 10s. Container.1.LivenessProbe.TcpSocket.Port=80 Container.1.LivenessProbe.InitialDelaySeconds=5 Container.1.LivenessProbe.PeriodSeconds=3 Container.1.LivenessProbe.SuccessThreshold=1 Container.1.LivenessProbe.FailureThreshold=3 Container.1.LivenessProbe.TimeoutSeconds=10 # Readiness probe: checks port 80 every 3s, starting 5s after launch. Success threshold: 1, failure threshold: 3, timeout: 10s. Container.1.ReadinessProbe.TcpSocket.Port=80 Container.1.ReadinessProbe.InitialDelaySeconds=5 Container.1.ReadinessProbe.PeriodSeconds=3 Container.1.ReadinessProbe.SuccessThreshold=1 Container.1.ReadinessProbe.FailureThreshold=3 Container.1.ReadinessProbe.TimeoutSeconds=10 -
Visualize os eventos da instância ECI no console do Elastic Container Instance.
Após a criação da instância ECI, clique em ID da instância para abrir sua página de detalhes. Na aba Events, confirme que o contêiner iniciou normalmente.
A lista de eventos mostra quatro eventos Normal em ordem: Pulling image "nginx", Successfully pulled image "nginx", Created container container-1 e Started container container-1.
Conecte-se ao contêiner. Para mais informações, consulte Conectar-se a uma instância ECI com o Workbench.
-
Altere a porta de escuta do Nginx para simular uma falha de serviço.
-
Modifique a porta de escuta do Nginx.
NotaA imagem do Nginx usada neste exemplo não possui o
viminstalado. Antes de executar o comandovi, executeapt-get updateeapt-get install vimpara instalar o vim.vi /etc/nginx/conf.d/default.confAltere a porta de escuta de 80 para 8080, conforme mostrado no exemplo a seguir:
server { listen 8080; listen [::]:8080; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } -
Recarregue a configuração do Nginx.
nginx -s reload
-
-
Verifique o efeito das sondas.
Alguns segundos após recarregar o Nginx, o contêiner será reiniciado automaticamente. Visualize os eventos da instância para ver o contêiner reiniciar após a falha das sondas de atividade e de prontidão.
A lista de eventos mostra que as sondas falharam com a mensagem
dial tcp 172.x.x.x:80: connect: connection refused, indicando que a conexão com a porta do contêiner foi recusada. Como resultado, o ECI reiniciou automaticamente o contêinercontainer-1.