Esquema LoadBalancerProbe de Definição do Azure Serviços Cloud (clássico)

Importante

Serviços Cloud (clássico) foi preterido para novos clientes e será descontinuado a 31 de agosto de 2024 para todos os clientes. As novas implementações devem utilizar o novo modelo de implementação baseado em Resource Manager do Azure Serviços Cloud (suporte alargado).

A sonda do balanceador de carga é uma sonda de estado de funcionamento definida pelo cliente de pontos finais UDP e pontos finais em instâncias de função. O LoadBalancerProbe não é um elemento autónomo; é combinado com a função web ou função de trabalho num ficheiro de definição de serviço. Um LoadBalancerProbe pode ser utilizado por mais do que uma função.

A extensão predefinida para o ficheiro 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 pelo encaminhamento do tráfego de entrada para as instâncias de função. O balanceador de carga determina que instâncias podem receber tráfego ao sondar regularmente cada instância para determinar o estado de funcionamento dessa instância. O balanceador de carga sonda todas as instâncias várias vezes por minuto. Existem duas opções diferentes para fornecer o estado de funcionamento da instância ao balanceador de carga : a sonda de balanceador de carga predefinida ou uma sonda de balanceador de carga personalizada, que é implementada ao definir o LoadBalancerProbe no ficheiro .csdef.

A sonda de balanceador de carga predefinida utiliza o Agente Convidado dentro da máquina virtual, que escuta e responde com uma resposta HTTP 200 OK apenas quando a instância está no estado Pronto (como quando a instância não está nos estados Ocupado, Reciclagem, Parar, etc.). Se o Agente Convidado não responder com HTTP 200 OK, o Balanceador de Carga do Azure marca a instância como não respondendo e deixa de enviar tráfego para essa instância. O Balanceador de Carga do Azure continua a enviar pings à instância e, se o Agente Convidado responder com um HTTP 200, o Balanceador de Carga do Azure envia novamente tráfego para essa instância. Normalmente, ao utilizar uma função Web, o código do site é executado no w3wp.exe que não é monitorizado pelos recursos de infraestrutura do Azure ou pelo agente convidado, o que significa falhas no w3wp.exe (por exemplo, As respostas HTTP 500 não são comunicadas ao agente convidado e o balanceador de carga não sabe retirar essa instância da rotação.

A pesquisa do balanceador de carga personalizado substitui a pesquisa predefinida do agente convidado e permite-lhe criar a sua própria lógica personalizada para determinar o estado de funcionamento da instância de função. O balanceador de carga sonda regularmente o ponto final (a cada 15 segundos, por predefinição) e a instância é considerada em rotação se responder com um TCP ACK ou HTTP 200 dentro do período de tempo limite (predefinição de 31 segundos). Isto pode ser útil para implementar a sua própria lógica para remover instâncias da rotação do balanceador de carga, por exemplo, devolver um estado não 200 se a instância estiver acima dos 90% da CPU. Para funções Web que utilizam w3wp.exe, isto também significa que obtém a monitorização automática do seu site, uma vez que as falhas no código do site devolvem um estado não 200 à sonda do balanceador de carga. Se não definir um LoadBalancerProbe no ficheiro .csdef, será utilizado o comportamento do balanceador de carga predefinido (conforme descrito anteriormente).

Se utilizar uma sonda de balanceador de carga personalizada, tem de garantir que a lógica tem em consideração o método RoleEnvironment.OnStop. Ao utilizar a sonda de balanceador de carga predefinida, a instância é retirada da rotação antes de o OnStop ser chamado, mas uma sonda de balanceador de carga personalizada pode continuar a devolver 200 OK durante o evento OnStop. Se estiver a utilizar o evento OnStop para limpar a cache, parar o serviço ou efetuar alterações que possam afetar o comportamento do runtime do seu serviço, terá de garantir que a lógica de pesquisa do balanceador de carga personalizada remove 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 ficheiro 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 LoadBalancerProbes elemento do ficheiro de definição de serviço inclui os seguintes elementos:

LoadBalancerProbes Element

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

LoadBalancerProbe Element

O LoadBalancerProbe elemento define a sonda de estado de funcionamento de um modelo. Pode definir várias sondas de balanceador de carga.

A tabela seguinte descreve os atributos do LoadBalancerProbe elemento:

Atributo Tipo Description
name string Obrigatório. O nome da sonda 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, é necessário um ACK recebido para que a sonda seja bem-sucedida. Se http for especificado, é necessária uma resposta 200 OK do URI especificado para que a pesquisa seja bem-sucedida.
path string O URI utilizado para pedir o estado de funcionamento da VM. path é necessário se protocol estiver definido como http. Caso contrário, não é permitido.

Não existe nenhum valor predefinido.
port integer Opcional. A porta para comunicar a sonda. Isto é opcional para qualquer ponto final, uma vez que a mesma porta será utilizada para a sonda. Também pode configurar uma porta diferente para a pesquisa. Os valores possíveis variam entre 1 e 65535, inclusive.

O valor predefinido é definido pelo ponto final.
intervalInSeconds integer Opcional. O intervalo, em segundos, da frequência de pesquisa do ponto final para o estado de funcionamento. Normalmente, o intervalo é ligeiramente inferior a metade do período de tempo limite alocado (em segundos), o que permite duas pesquisas completas antes de retirar a instância da rotação.

O valor predefinido é 15, o valor mínimo é 5.
timeoutInSeconds integer Opcional. O período de tempo limite, em segundos, aplicado à sonda onde nenhuma resposta resultará em impedir que o tráfego adicional seja entregue ao ponto final. Este valor permite que os pontos finais sejam retirados da rotação mais rapidamente ou mais lentos do que as horas típicas utilizadas no Azure (que são as predefinições).

O valor predefinido é 31, o valor mínimo é 11.

Consulte também

Esquema de Definição do Serviço Cloud (clássico)