Compartilhar via


Esquema LoadBalancerProbe de definição dos Serviços de Nuvem do Azure (clássico)

Importante

Os Serviços de Nuvem (clássicos) estão obsoletos para todos os clientes desde 1º de setembro de 2024. Qualquer implantação em execução existente será interrompida e desligada pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. As 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, mas combinado com a função web ou de trabalho em um arquivo de definição de serviço. Mais de uma função podem usar um LoadBalancerProbe.

A extensão padrão do arquivo de definição de serviço é .csdef.

A função de uma sonda do balanceador de carga

O Azure Load Balancer é responsável pelo roteamento de tráfego de entrada para as instâncias de função. O balanceador de carga determina quais instâncias podem receber tráfego investigando regularmente cada instância a fim de determinar a integridade dessa instância. O balanceador de carga investiga cada instância várias vezes por minuto. Há duas opções diferentes para oferecer integridade de instância ao balanceador de carga – a sonda padrão do balanceador de carga ou uma sonda personalizada do balanceador de carga, implementada definindo o LoadBalancerProbe no arquivo .csdef.

A investigação do balanceador de carga padrão utiliza o Agente Convidado dentro da máquina virtual, que escuta e responde com uma resposta HTTP 200 OK somente quando a instância está no estado Pronto (como quando a instância não está nos estados Ocupado, Reciclando, Parando etc.). Se o agente convidado não responder com HTTP 200 OK, o Azure Load Balancer marcará a instância como sem resposta e interromperá o envio de tráfego para essa instância. O Azure Load Balancer continua executando ping na instância e se o agente convidado responder com um HTTP 200, o Azure Load Balancer enviará o tráfego para essa instância novamente. Quando você está usando uma função web, o código do site geralmente é executado no w3wp.exe, que não é monitorado pela malha do Azure nem pelo agente convidado. Isso significa que as falhas no w3wp.exe (por exemplo, as respostas HTTP 500) não serão relatadas para o agente convidado, e o balanceador de carga não retirará essa instância da rotação.

A sonda personalizada do balanceador de carga substitui a sonda padrão do agente convidado e permite criar 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 (por padrão, a cada 15 segundos). 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). Isso poderá 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 o w3wp.exe, isso também significa que você obtém o monitoramento automático de seu site, uma vez que as falhas em seu código de site retornam um status diferente de 200 para a investigação do balanceador de carga. Se você não definir uma LoadBalancerProbe no arquivo .csdef, o comportamento do balanceador de carga padrão (conforme descrito anteriormente) será usado.

Se você usar uma sonda personalizada do balanceador de carga, será necessário garantir que sua lógica leve em consideração o método RoleEnvironment.OnStop. Quando você usa a investigação do balanceador de carga padrão, a instância é retirada de rotação antes de o OnStop ser chamado, mas uma investigação do balanceador de carga personalizado pode continuar retornando um 200 OK 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 do tempo de execução do serviço, será necessário garantir que a lógica de investigação do balanceador de carga personalizado remova a instância da rotação.

Esquema de definição de serviço básico para uma sonda do 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 de esquema

O elemento LoadBalancerProbes do arquivo de definição de serviço inclui os seguintes elementos:

Elemento LoadBalancerProbes

O elemento LoadBalancerProbes descreve a coleção de sondas do balanceador de carga. Esse elemento é o pai do Elemento LoadBalancerProbe.

Elemento LoadBalancerProbe

O elemento LoadBalancerProbe define a sonda de integridade de um modelo. É possível definir várias sondas do balanceador de carga.

A tabela a seguir descreve os atributos do elemento LoadBalancerProbe:

Atributo Tipo Descrição
name string Obrigatórios. O nome da sonda do balanceador de carga. O nome deve ser exclusivo.
protocol string Obrigatórios. Especifica o protocolo do ponto de extremidade. Os possíveis valores são http ou tcp. Se tcp for especificado, será necessário um ACK recebido para que a sonda tenha êxito. Se http for especificado, uma resposta 200 OK do URI especificado será necessária para que a sonda tenha êxito.
path string O URI usado para solicitar o status de integridade da VM. path será necessário se protocol for definido como http. Caso contrário, isso não será permitido.

Não há um valor padrão.
port integer Opcional. A porta para se comunicar com a sonda. Esse atributo é opcional para qualquer ponto de extremidade, já que a mesma porta é usada para a investigação. É possível configurar uma porta diferente para sua investigação também. 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 de investigação do status de integridade no ponto de extremidade. Normalmente, o intervalo é ligeiramente menor do que a metade do período de tempo limite alocado (em segundos) que permite duas sondas completas antes de tirar a instância de rotação.

O valor padrão é 15. O valor mínimo é cinco.
timeoutInSeconds integer Opcional. O período de tempo limite, em segundos, aplicado à investigação em que nenhuma resposta resulta na interrupção da entrega de tráfego adicional ao ponto de extremidade. Este valor permite que pontos de extremidade sejam tirados de rotação mais rapidamente ou mais lentamente do que os tempos normais usados no Azure (os padrões).

O valor padrão é 31. O valor mínimo é 11.

Confira também

Esquema de definição do Serviço de Nuvem (clássico)