Azure Cloud Services (clássico) Definição LoadBalancerProbe Schema
Importante
Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).
A sonda do balanceador de carga é uma sonda de integridade definida pelo cliente de pontos de extremidade UDP e pontos de extremidade em instâncias de função. O LoadBalancerProbe
não é um elemento autônomo, ele é combinado com a função Web ou a função de trabalho em um arquivo de definição de serviço. Mais de uma função pode usar um LoadBalancerProbe
arquivo .
A extensão padrão para o arquivo de definição de serviço é .csdef.
A função de uma sonda de balanceador de carga
O Balanceador de Carga do Azure é responsável por rotear o tráfego de entrada para suas instâncias de função. O balanceador de carga determina quais instâncias podem receber tráfego examinando regularmente cada instância para determinar a integridade dessa instância. O balanceador de carga testa cada instância várias vezes por minuto. Há duas opções diferentes para fornecer a integridade da instância ao balanceador de carga – a sonda de balanceador de carga padrão ou uma sonda de balanceador de carga personalizada, que é implementada definindo o LoadBalancerProbe no arquivo .csdef.
O teste de balanceador de carga padrão utiliza o Guest Agent dentro da máquina virtual, que escuta e responde com uma resposta HTTP 200 OK somente quando a instância está no estado Ready (como quando a instância não está nos estados Busy, Recycling, Stoppping, etc.). Se o Agente Convidado não responder com HTTP 200 OK, o Balanceador de Carga do Azure marcará a instância como não respondendo e interromperá o envio de tráfego para essa instância. O Balanceador de Carga do Azure continua a executar ping na instância e, se o Agente Convidado responder com um HTTP 200, o Balanceador de Carga do Azure enviará tráfego para essa instância novamente. Ao usar uma função Web, o código do site normalmente é executado em w3wp.exe, que a malha do Azure e o agente convidado não monitoram. Falhas no w3wp.exe (por exemplo, respostas HTTP 500) não são relatadas ao agente convidado e o balanceador de carga não sabe tirar essa instância da rotação.
O teste de balanceador de carga personalizado substitui o teste de agente convidado padrão e permite que você crie sua própria lógica personalizada para determinar a integridade da instância de função. O balanceador de carga investiga regularmente seu ponto de extremidade (a cada 15 segundos, por padrão). A instância é considerada em rotação se responder com um TCP ACK ou HTTP 200 dentro do período de tempo limite (padrão de 31 segundos). Esse processo pode ser útil para implementar sua própria lógica para remover instâncias da rotação do balanceador de carga (por exemplo, retornar um status diferente de 200 se a instância estiver acima de 90% da CPU). Para funções Web que usam w3wp.exe, essa configuração também significa que você obtém monitoramento automático do seu site, já que falhas no código do seu site retornam um status diferente de 200 para a sonda do balanceador de carga. Se você não definir um LoadBalancerProbe no arquivo .csdef, o comportamento padrão do balanceador de carga (conforme descrito anteriormente) será usado.
Se você usar uma sonda de balanceador de carga personalizada, deverá garantir que sua lógica leve em consideração o método RoleEnvironment.OnStop. Quando você usa o teste de balanceador de carga padrão, a instância é retirada da rotação antes de OnStop ser chamado, mas um teste de balanceador de carga personalizado pode continuar a retornar um OK 200 durante o evento OnStop. Se você estiver usando o evento OnStop para limpar o cache, interromper o serviço ou fazer alterações que possam afetar o comportamento de tempo de execução do seu serviço, será necessário garantir que a lógica de teste do balanceador de carga personalizado remova a instância da rotação.
Esquema de definição de serviço básico para uma sonda de balanceador de carga
O formato básico de um arquivo de definição de serviço que contém uma sonda de balanceador de carga é o seguinte.
<ServiceDefinition …>
<LoadBalancerProbes>
<LoadBalancerProbe name="<load-balancer-probe-name>" protocol="[http|tcp]" path="<uri-for-checking-health-status-of-vm>" port="<port-number>" intervalInSeconds="<interval-in-seconds>" timeoutInSeconds="<timeout-in-seconds>"/>
</LoadBalancerProbes>
</ServiceDefinition>
Elementos do esquema
O LoadBalancerProbes
elemento do arquivo de definição de serviço inclui os seguintes elementos:
Elemento LoadBalancerProbes
O LoadBalancerProbes
elemento descreve a coleção de testes do balanceador de carga. Este elemento é o elemento pai do elemento LoadBalancerProbe.
Elemento LoadBalancerProbe
O LoadBalancerProbe
elemento define a sonda de integridade para um modelo. Você pode definir várias sondas de balanceador de carga.
A tabela a seguir descreve os atributos do LoadBalancerProbe
elemento :
Atributo | Tipo | Description |
---|---|---|
name |
string |
Obrigatório. O nome do teste do balanceador de carga. O nome tem de ser exclusivo. |
protocol |
string |
Obrigatório. Especifica o protocolo do ponto final. Os valores possíveis são http ou tcp . Se tcp for especificado, um ACK recebido será necessário para que a sonda seja bem-sucedida. Se http for especificado, uma resposta 200 OK do URI especificado será necessária para que o teste seja bem-sucedido. |
path |
string |
O URI usado para solicitar o status de integridade da VM. path é necessário se protocol estiver definido como http . Caso contrário, não é permitido.Não há nenhum valor padrão. |
port |
integer |
Opcional. A porta para comunicar a sonda. Esse atributo é opcional para qualquer ponto de extremidade, pois a mesma porta é usada para a sonda. Você também pode configurar uma porta diferente para sua sondagem. Os valores possíveis variam de 1 a 65535, inclusive. O valor padrão definido pelo ponto de extremidade. |
intervalInSeconds |
integer |
Opcional. O intervalo, em segundos, para a frequência com que o endpoint deve ser investigado quanto ao estado de saúde. Normalmente, o intervalo é um pouco menos da metade do período de tempo limite alocado (em segundos), o que permite duas sondas completas antes de tirar a instância da rotação. O valor padrão é 15. O valor mínimo é 5. |
timeoutInSeconds |
integer |
Opcional. O período de tempo limite, em segundos, aplicado à sonda em que nenhuma resposta resulta na interrupção de tráfego adicional de ser entregue ao ponto de extremidade. Esse valor permite que os pontos de extremidade sejam retirados da rotação mais rapidamente ou mais lentamente do que os tempos típicos usados no Azure (que são os padrões). O valor padrão é 31. O valor mínimo é 11. |