Métodos de balanceamento
Compare Round Robin, Least Connections e IP Hash e veja como peso, função do servidor, novas tentativas e endereços inativos definem o destino das requisições.
Um balanceador que tem vários servidores com o mesmo conteúdo escolhe um deles para cada requisição. O método de balanceamento é a regra que ele usa para escolher. O peso e a função de cada servidor alteram o resultado, e um servidor que você desativa não participa. Com Load Balancer ativado, um connector do tipo http faz essa escolha entre os seus endereços, na etapa descrita em Como Connectors funciona.
As seções tratam do método de balanceamento, do peso, da função do servidor, das novas tentativas e timeouts e dos endereços ativos, nessa ordem.
Método de balanceamento
O método de balanceamento decide qual endereço do connector recebe cada requisição. Load Balancer escolhe entre os endereços de acordo com o método e com o peso de cada endereço. Um connector com Load Balancer ativado tem até 15 endereços. Cada um recebe os mesmos campos do endereço único de um connector sem Load Balancer. Para esse limite, consulte Limites de Connectors.
Você escolhe um de três métodos: Round Robin, Least Connections ou IP Hash no campo Method do Azion Console, e round_robin, least_conn ou ip_hash na API. O padrão é round_robin. Esses três formam a lista completa, e nenhum deles direciona uma requisição pela localização do visitante ou por uma latência medida. As regras ainda decidem quais requisições chegam ao connector, então um critério de regra, como o caminho, decide quais requisições são balanceadas.
A configuração de Load Balancer não tem ajuste de health check. Ela não tem sonda, protocolo de sonda nem intervalo a definir. Os campos dela são o método, Max Retries, Connection Timeout e Read/Write Timeout, e cada endereço acrescenta os próprios Server Role, Weight e Active.
Round Robin
Round Robin entrega as requisições aos endereços em rodízio, então cada endereço recebe a sua vez. Ele conta requisições e ignora a rapidez com que cada endereço responde. Cada endereço recebe uma parte do rodízio proporcional ao seu peso, e com pesos iguais as partes são iguais.
O custo é que um endereço lento continua recebendo a sua vez. As requisições dele demoram mais para terminar, então ele pode manter mais conexões em paralelo do que um endereço rápido, enquanto o número de requisições continua igual. Use Round Robin quando os endereços têm capacidade semelhante e as requisições levam um tempo semelhante.
Least Connections
Least Connections acompanha as conexões ativas com cada endereço. Ele envia a próxima requisição ao endereço que tem menos conexões. Um endereço lento mantém as conexões abertas por mais tempo, então recebe menos requisições novas, e um endereço rápido atende mais requisições em sequência.
Use Least Connections quando os endereços diferem em velocidade, ou quando algumas requisições mantêm uma conexão aberta por muito mais tempo do que outras. Por exemplo, quando um endereço de um par é um servidor menor, esse endereço termina as requisições mais devagar e recebe menos delas.
IP Hash
IP Hash associa cada endereço IP de cliente a um endereço do connector. Toda requisição do mesmo IP de cliente chega ao mesmo endereço, então um visitante continua alcançando o mesmo servidor de origem entre requisições. Use-o quando a origem guarda estado para cada visitante, como uma sessão mantida na memória de um servidor.
A associação segue o endereço IP do cliente, não o visitante. Um visitante cujo endereço IP muda, como um celular que passa de uma rede para outra, pode chegar a um endereço diferente. IP Hash também recusa endereços de backup. Um connector com ip_hash e um endereço cujo server_role é backup é recusado com 28005: Backup addresses are not allowed when using 'ip_hash' as load balance method. Azion Console mostra Backup role is not available when the load balancing method is IP Hash.
Peso
O peso define a parte das requisições que um endereço recebe, em relação aos outros endereços do connector. Um peso maior destina mais tráfego ao endereço. O peso é um número inteiro de 1 a 100, e o padrão é 1. Endereços deixados no padrão dividem o tráfego igualmente.
Por exemplo, com dois endereços primários de pesos 3 e 1, o primeiro deve receber três requisições para cada uma que o segundo recebe. Use isso quando um servidor suporta mais carga do que outro, como um servidor maior ao lado de um menor.
O peso define uma proporção, não uma divisão exata. Cada data center balanceia por conta própria, então o tráfego que um endereço recebe no conjunto dos data centers varia em torno da parte que o peso dele pede. Para saber como o balanceamento por data center molda a divisão, consulte Como Connectors funciona.
Função do servidor
A função do servidor de um endereço é Primary ou Backup no Azion Console, e primary ou backup na API. Todo endereço é primary, a menos que você defina outra função.
Load Balancer envia requisições primeiro aos endereços primários, que sempre têm preferência sobre os endereços de backup. Um endereço de backup fica em espera e só recebe requisições quando todos os endereços primários falham. Use um endereço de backup para um servidor que deve ficar fora do tráfego diário, como uma cópia de reserva da origem em outro local.
O custo é capacidade ociosa: um endereço de backup não recebe tráfego enquanto os endereços primários respondem. A função do servidor funciona com Round Robin e Least Connections. Com IP Hash, todo endereço deve ser primary, e um endereço backup é recusado com 28005.
Novas tentativas e timeouts
As novas tentativas e os timeouts existem em um connector apenas enquanto Load Balancer está ativado. Max Retries define o número de novas tentativas quando uma conexão com a origem falha, de 0 a 20. Connection Timeout limita a espera por uma conexão com a origem, em segundos. Read/Write Timeout limita a espera por dados em uma conexão já aberta, em segundos.
Os padrões dependem da interface que os define. Na API, uma chave que você deixa de fora da configuração recebe o padrão: max_retries 0, connection_timeout 60 e read_write_timeout 120. Quando você ativa Load Balancer no Azion Console, o formulário preenche 3, 30 e 60 em vez disso. Por isso, um connector criado pela API não tenta de novo uma conexão que falhou até que você aumente max_retries.
As novas tentativas se aplicam a uma falha de conexão. Cada nova tentativa dá outra chance a uma conexão que falhou, e o cliente espera por todas as tentativas antes de receber uma resposta. Um timeout curto desiste rápido de uma origem lenta, e um timeout longo espera por uma origem que responde devagar por design.
Um connector sem Load Balancer não tem timeout configurável nem ajuste de novas tentativas. Para os padrões da plataforma que se aplicam nesse caso, consulte Como Connectors funciona. Para cada campo e o seu intervalo, consulte Configurações de connector.
Endereços ativos
Cada endereço tem um switch Active, active na API, ativado por padrão. Desative-o para tirar um endereço do rodízio sem excluí-lo, para manutenção ou durante uma interrupção desse servidor. O endereço mantém as suas portas, a sua função e o seu peso, então ativá-lo de novo o restaura como estava.
Um endereço com active definido como false deixa de receber requisições quando a alteração chega ao data center que atende a requisição. A alteração leva vários minutos para se propagar, e os data centers a aplicam em momentos diferentes. Até que todos os data centers tenham a alteração, algumas requisições ainda podem chegar ao endereço inativo. Mantenha o servidor respondendo até que nenhuma requisição chegue a ele.
Para saber como uma alteração se propaga pela infraestrutura distribuída da Azion, consulte Como Connectors funciona. Para os campos de endereço, consulte Configurações de connector.