Blog Agility

Balanceamento de carga baseado no método “Round-Robin”

Balanceamento de carga baseado no método “Round-Robin”

BALANCEAMENTO_DE_ACESSO_ROUND_ROBIN_v2-0
A técnica conhecida como Round-Robin possui inúmeras aplicações no campo da ciência da computação. Algumas das aplicações para o Round-Robin incluem sistemas destinados à otimização de áudio e vídeo na internet [3].

Provavelmente uma das aplicações mais conhecidas do Round-Robin é no uso do serviço de DNS na internet, em sua maioria com implementações baseadas no DNS BIND. O serviço de DNS aproveita o comportamento do Round-Robin para distribuir respostas para múltiplos registros de endereços, quando estes se referem a respostas sucessivas [5]. Em outras palavras, na condição de existir mais de um registro no servidor de DNS relacionado ao mesmo nome, tal informação é repassada para cada usuário em determinada sequência, à medida que novas requisições são feitas para o mesmo nome. Do mesmo modo, também existem extensos trabalhos na comunidade acadêmica que empregam esse método para auxiliar sistemas de comunicação, os quais em algumas situações, o Round-Robin funciona em conjunto com implementações utilizadas em roteadores e gateways de rede [4]. Além disso, ainda existem soluções específicas que possuem versões modificadas do algoritmo de Round-Robin, com o objetivo de prover distribuição do uso de recursos com prioridade [2].

No entanto, neste trabalho Round-Robin é tratado como um método de distribuição de recursos que não leva em conta a questão de prioridade. Por esse motivo, muitas literaturas relacionadas à tecnologia tratam do Round-Robin como uma técnica de balanceamento estático. Isso se deve ao fato do Round-Robin distribuir as requisições levando-se em consideração somente qual é o próximo recurso de determinada sequência em que a requisição deve ser encaminhada. Na verdade, no LTM é possível definir quais membros são prioritários no pool, mesmo que Round-Robin seja utilizado, mas essa parametrização altera o comportamento do método clássico de Round-Robin, por isso esse assunto não é abordado neste artigo.

O uso do Round-Robin no Local Traffic Manager (LTM)

Existem definições divergentes em relação ao Round-Robin. Algumas vezes essa técnica é descrita como um método de distribuição de carga [6], em outras situações é tratada como um método de balanceamento de carga [7]. Entretanto, quando o assunto se refere a sistemas de balanceamento é preferível considerar o Round-Robin como um método de distribuição de acesso, pois as requisições de acesso do usuário são direcionadas sem prioridade para determinado membro de um grupo de servidores.

Um exemplo prático da utilização do método Round-Robin no sistema LTM é apresentado em: “Vídeo 1 – Explicação de como configurar um pool com Round-Robin no LTM”. Esse vídeo mostra os passos necessários para disponibilizar o método de Round-Robin para um grupo de servidores que atendem determinado site Web.


Vídeo 1 – Explicação de como configurar um  pool com Round-Robin no LTM
{youtube}eZrrjukGSqE{/youtube}

 

Caso você tenha dificuldades para assistir o vídeo que mostra como configurar o LTM, nesse sentido, todo o procedimento necessário é explicado detalhadamente nestes 3 passos:

Passo 1 – Criando os nodes

Você deve  obrigatoriamente definir dois servidores no pool, pois o método Round-Robin, assim como os demais métodos de balanceamento, exige no mínimo dois ou mais servidores (nodes) para que o Round-Robin funcione como esperado. Considerando que você ainda não acessou o seu sistema LTM, clique no seu navegador Web  e digite o endereço correspondente ao LTM:

 

  1.   Por exemplo:  https://172.16.1.31 e pressione  <ENTER>. 
  2.   Digite suas credenciais para acesso ao sistema e para confirmar clique em “Log in”
  3.   No menu principal (Main), clique na opção “Local Traffic” e em seguida clique em “Nodes”
  4.   No canto superior direito da página clique no botão criar (Create)
  5.   Nas propriedades gerais (General Properties) digite no campo “Address” o endereço IP do primeiro servidor do grupo, neste exemplo: “172.16.1.41”,  opcionalmente, você pode definir um nome para saber qual servidor esse endereço se trata. No exemplo em questão, no campo “name” o servidor é identificado por “web_server_1”.  Após isso, clique no botão “Repeat” para criar outro servidor para não ter de sair da tela principal, ou ainda é possível clicar em “Finished”. Caso essa seja sua opção, clique novamente na opção “create” e então: 
  6.     Neste exemplo, o segundo servidor tem o endereço IP: “172.16.1.42” e é identificado no campo “name” por:  “web_server_2”.  Ao terminar clique em “Finished”.

 

Passo 2 – Definindo um pool que utiliza o Round-Robin

Agora que os nodes foram criados no sistema LTM, você precisa definir um pool e correlacionar esse pool com os servidores que você cadastrou anteriormente:

 

  1.   Clique no lado esquerdo da página na opção “Pools”. 
  2.   No canto superior direito da página clique no botão criar (Create)
  3.   No campo “name” defina o nome do seu pool, neste exemplo o grupo de servidores se chama: “Pool_www”. Agora você deve escolher qual o monitor (Health Monitors) o LTM vai utilizar para determinar se o pool que você definiu encontra-se disponível ou não para atender requisições de usuários. Neste exemplo, por se tratar apenas de uma demonstração, é escolhido o monitor ICMP. 
  4.   A próxima etapa é provavelmente a que mais interessa no artigo, pois se trata da escolha do método de balanceamento. No canto inferior da página clique na lista de opções “Load Balancing Method” e escolha a opção “Round Robin”. O método de Round-Robin é a escolha padrão quando você define um pool, ou seja, caso você se esqueça de escolher um método, logo, o LTM definirá o Round-Robin automaticamente pra você. 
  5.  Agora é necessário escolher os membros que pertencem ao pool. Clique na caixa verificação chamada “Node List”. Escolha o primeiro node que você já definiu anteriormente, neste exemplo, o primeiro servidor corresponde ao “172.16.1.41 (web_ server_1)”. Na sequênciadigite a porta correspondente ao serviço ou escolha o serviço clicando na lista de opções ao lado. Neste exemplo é utilizado o serviço HTTP. Após isso clique no botão “Add”
  6. O mesmo procedimento que você fez para definir o node na etapa “e” deve ser feito para o segundo membro do pool, ou seja, é necessário selecionar o endereço do outro node, neste caso o segundo endereço corresponde ao “172.16.1.42 (web_ server_2)”. Em seguida você deve definir a porta do serviço. 

Passo 3 – Preparando o servidor Virtual

O método de Round-Robin é vinculado ao pool de servidores que você definiu no “Passo 2”. Mas é necessário preparar um servidor virtual, para permitir que os acessos dos usuários sejam distribuídos entre os servidores do pool:

 

  1.   Clique no lado esquerdo da página na opção “Virtual Servers” 
  2.   No canto superior direito da página clique no botão criar (Create).
  3.   No campo “name” defina o nome do seu servidor virtual. Neste exemplo o grupo de servidores se chama: “Virtual_server_www”. Agora você precisa informar o endereço IP do site que deve ser balanceado pelo Round-Robin. No campo “Destination / Address” digite o endereço do site que será usado pelo os usuários. Neste exemplo, o endereço utilizado é “10.10.1.100”.
  4.   Agora informe a porta usada pelo site, a porta “80” é a padrão para sites HTTP, digite esse valor ou alternativamente escolha na lista de opções ao lado o serviço “HTTP”. 
  5.   No canto inferior da página, clique na opção “Default Pool” e selecione o grupo de servidores que você definiu. Neste exemplo o pool que será utilizado se chama “Pool_www”.
  6.     Clique no botão “Finished”. Pronto! Agora basta validar tudo o que foi parametrizado nos passos descritos anteriormente.

 

Comportamento quando o pool é definido com Round-Robin

O efeito quando se configura um grupo de servidores no LTM para utilizar o método de Round-Robin é ilustrado em: “Vídeo 2 – Resultados obtidos com o método Round-Robin no LTM”. Esse vídeo mostra os passos necessários para disponibilizar o balanceamento Round-Robin para um grupo de servidores que atendem determinado site Web.
Vídeo 2 – Resultados obtidos com o método Round-Robin no LTM
{youtube}_plXPDGj2qA{/youtube}
Caso você tenha dificuldades para assistir o vídeo que mostra os resultados obtidos ao se configurar um site com Round-Robin, a explicação a seguir mostra os passos detalhadamente. Considerando-se que três usuários distintos (a, b, c) acessam o site que foi definido neste artigo, logo:

  1. Quando o usuário “a” requisita seu acesso ao site, então o LTM encaminha essa solicitação para o primeiro servidor do pool (web_server_1).
  2. Assim que o usuário “b” tenta acessar o mesmo site, consequentemente, devido ao método de Round-Robin ter sido escolhido para pool, o LTM direciona a requisição para o próximo servidor do pool (web_server_2).
  3. Agora o usuário “c” também acessa o mesmo site, portanto, o LTM encaminha a requisição novamente para o primeiro servidor do pool (web_server_1). Isso acontece porque o próximo servidor da sequência do pool é novamente o primeiro servidor, no caso o web_server_1.

 

Conclusões

Quando o método de Round-Robin é definido para o pool de servidores, significa que o LTM encaminha a requisição do usuário para o próximo servidor da sequência.Isso ocorre à medida que uma nova solicitação chega para o site. Apesar das inúmeras versões modificadas de Round-Robin que podem ser encontradas atualmente, o método clássico não trata a questão de prioridade. Desse modo, os servidores recebem as requisições dos usuários, independentemente de ser o melhor ou não para atender o site.

O próximo método de balanceamento que pode ser definido no BIGIP-LTM utiliza nativamente o conceito de prioridade. Esse método é chamado de “Ratio”. Caso você tenha interesse em aprofundar seus conhecimentos no assunto, então acesse o artigo: “Balanceamento de carga baseado no método Ratio”.

 

Você gostou deste artigo? Deixe seu comentário. Sua opinião é muito importante!
Referências

[1] Local Traffic Manager, Critical Apps –Delivered Quickly and Effectively, Disponível em: http://www.f5.com/products/big-ip/big-ip-local-traffic-manager/overview.

[2] Barazandeh, I., Mortazavi, S. S., “Two Hierarchical Dynamic Load Balancing Algorithms in Distributed Systems”,  ICCEE ’09 Proceedings of the 2009 Second International Conference on Computer and Electrical Engineering – Volume 01, 2009.

[3] Niyato, D., “Load Balancing Algorithms for Internet Video and Audio Server”, ICON ’01 Proceedings of the 9th IEEE International Conference on Networks, pp. 76, IEEE Computer Society, 2001.

[4] Abdallah, S., Najjar, E., Kayssi, A., “A Round Robin Load Balancing and Redundancy Protocol for Network Routers”, TrustCom, IEEE 11th International Conference, pp. 1741-1747, 2012.

[5] Liu, C., Albitz, P., “DNS and BIND”, 5th Edition, O’Reilly, 2006.

[6] K. J. Jr., Salchow, “Load Balancing 101: The Evolution to Application Delivery Controllers”, F5 White Paper,2007, <http://www.f5.com/pdf/white-papers/evolut ion-adc-wp.pdf>.

[7] “Round-Robin Load Balancing”, Technical Note, VMware, 2007, disponível em: http://www.vmware.com/pdf/vi3_35_25_round robin .pdf