Partilhar via


Sonda de integridade personalizada para o Application Gateway for Containers

O Application Gateway for Containers monitora a integridade de todos os destinos de back-end por padrão. À medida que os destinos de back-end se tornam íntegros ou não íntegros, o Application Gateway for Containers distribui apenas o tráfego para pontos de extremidade íntegros.

Além de usar o monitoramento de teste de integridade padrão, você também pode personalizar o teste de integridade para atender aos requisitos do seu aplicativo. Este artigo discute as sondas de integridade padrão e personalizadas.

A ordem e a lógica da sondagem de saúde são as seguintes:

  1. Use a definição de HealthCheckPolicy Custom Resource (CR).
  2. Se não houver CR HealthCheckPolicy, use o teste Readiness
  3. Se não houver nenhum teste de preparação definido, use o teste de integridade padrão

As seguintes propriedades compõem testes de integridade personalizados:

Property Valor Predefinido
interval Com que frequência, em segundos, as sondas de integridade devem ser enviadas para o destino de back-end. O intervalo mínimo deve ser > de 0 segundos.
tempo limite Quanto tempo em segundos a solicitação deve esperar até ser marcada como uma falha. O intervalo mínimo deve ser > de 0 segundos.
saudávelLimiar Número de testes de integridade antes de marcar o endpoint de destino como íntegro. O intervalo mínimo deve ser > 0.
porta O número da porta usado ao sondar o destino de back-end.
unhealthyThreshold O número de testes de integridade a falhar antes que o destino de back-end seja rotulado como não íntegro. O intervalo mínimo deve ser > 0.
GRPC Especificado se o serviço de back-end está esperando conexões gRPC. O valor deve ser {}.
(http) Especificado se o serviço de back-end está esperando conexões http.
(http) anfitrião O nome do host especificado na solicitação para o destino de back-end.
(http) caminho O caminho específico da solicitação. Se um único arquivo deve ser carregado, o caminho pode ser /index.html.
(http -> correspondência) statusCodes Contém duas propriedades start e end, que definem o intervalo de códigos de status HTTP válidos retornados do back-end.
useTLS Especifica se a verificação de integridade deve impor TLS. Se não for especificado, a verificação de integridade usará o mesmo protocolo que o serviço se a mesma porta for usada para verificação de integridade. Se a porta for diferente, a verificação de integridade será um texto não criptografado.

Um diagrama mostrando o Application Gateway for Containers usando testes de integridade personalizados para determinar a integridade do back-end.

Sonda de integridade padrão

O Application Gateway for Containers configura automaticamente uma sonda de integridade padrão quando você não define uma configuração de teste personalizada ou configura uma sonda de preparação. O comportamento de monitoramento funciona fazendo uma solicitação HTTP GET para os endereços IP de destinos de back-end configurados. Para testes padrão, se o destino de back-end estiver configurado para HTTPS, o teste usará HTTPS para testar a integridade dos destinos de back-end.

Para obter mais detalhes de implementação, consulte HealthCheckPolicyConfig na especificação da API.

Quando a sonda de integridade padrão é usada, os seguintes valores para cada propriedade da sonda de integridade são usados:

Property Valor Predefinido
interval 5 segundos
tempo limite 30 segundos
saudávelLimiar 1 sonda
unhealthyThreshold 3 sondas
porta O número da porta usada é definido pelo número da porta de back-end no recurso Ingress ou porta de back-end HttpRoute no recurso HttpRoute.
(http) anfitrião localhost
(http) caminho /
useTLS HTTP para HTTP e HTTPS quando TLS é especificado.

1 HTTPS é usado quando um backendTLSPolicy faz referência a um serviço de back-end de destino (para implementação de API de Gateway) ou IngressExtension com um protocolo backendSetting de HTTPS (para implementação de API de Ingresso) é especificado.

Nota

As sondas de saúde são iniciadas com o User-Agent valor de Microsoft-Azure-Application-LB/AGC.

Sonda de integridade personalizada

Tanto na API de gateway quanto na API de entrada, uma investigação de integridade personalizada pode ser definida definindo um recurso HealthCheckPolicyPolicy e fazendo referência a um serviço que as sondas de integridade devem verificar. Como o serviço é referenciado por um recurso HTTPRoute ou Ingress com uma referência de classe ao Application Gateway for Containers, a investigação de integridade personalizada é usada para cada referência.

Neste exemplo, o teste de integridade emitido pelo Application Gateway for Containers envia o contoso.com de nome do host para os pods que compõem o serviço de teste. O protocolo solicitado está http com um caminho de /. Uma sonda é emitida a cada 5 segundos e aguarda 3 segundos antes de determinar se a conexão atingiu o tempo limite. Se uma resposta for recebida, um código de resposta HTTP entre 200 e 299 (incluindo 200 e 299) é considerado íntegro, todas as outras respostas são consideradas não íntegras.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
  name: gateway-health-check-policy
  namespace: test-infra
spec:
  targetRef:
    group: ""
    kind: Service
    name: test-service
    namespace: test-infra
  default:
    interval: 5s
    timeout: 3s
    healthyThreshold: 1
    unhealthyThreshold: 1
    port: 8123
    # grpc: {} # defined if probing a gRPC endpoint
    http:
      host: contoso.com
      path: /
      match:
        statusCodes: 
        - start: 200
          end: 299
    useTLS: true
EOF