Professional Documents
Culture Documents
net/publication/329708095
CITATIONS READS
0 404
3 authors, including:
Tiago Nogueira
Instituto Federal de Educação, Ciência e Tecnologia Baiano – Campus Guanambi
29 PUBLICATIONS 20 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Estudo Comparativo da Experiência de Usuários Cegos e Videntes no Design Web Responsivo e não Responsivo View project
All content following this page was uploaded by Tiago Nogueira on 17 December 2018.
Abstract. This work was developed with the purpose of conducting a study on
Network Load Balancing, presenting its general characteristics, benefits, tech-
niques, resources and solutions for mission critical computing systems. In order
to do so, a bibliographical research was carried out, of a basic nature, with
a qualitative approach, with an exploratory purpose. Initially, it dealt with is-
sues necessary to understand Load Balancing, addressing general concepts and
their basic operating principles. Afterwards, a discussion was held on the most
relevant points on the subject, presenting techniques and main algorithms im-
plemented for Load Balancing in the LVS - Linux Virtual Server tool. It was
concluded that Network Load Balancing is of great relevance for the availabi-
lity of computational services, in order to maximize the resource utilization in
order to allow a better performance avoiding congestion in the network.
1. Introdução
É notório o crescimento de organizações, tanto públicas como privadas que trabalham
com grandes volumes de informações e demais recursos envolvidos; contudo, os proble-
mas de congestionamento da rede tem sido um reflexo deste crescimento. Pode-se dizer
que Balanceamento de Carga de Rede pode proporcionar melhoria de desempenho em um
ambiente computacional crı́tico. Existem diversos benefı́cios empregados pelas técnicas
de Balanceamento de Carga, dentre eles podemos destacar: possibilidade de escalabili-
dade sem a necessidade de renovação de hardware, melhor utilização de recursos, alta
disponibilidade e tolerância a falhas.
Essas vantagens contribuem para um ambiente capaz de remodelar um espaço
até então centralizado e crı́tico, para um novo sistema computacional capaz de absorver
todas as requisições de clientes, distribuindo-as de forma coordenada para o conjunto
de máquinas que compõem o sistema, visando melhorar o desempenho da prestação dos
serviços envolvidos no processo [Costa et al. 2009]. Garantir qualidade e disponibilidade
de serviços computacionais tornou-se tarefa essencial, em virtude do grande número de
usuários utilizando a rede de computadores simultaneamente [Kopparapu 2002].
Nesse contexto, o objetivo deste trabalho é realizar por meio de uma pesquisa
bibliográfica, um estudo sobre Balanceamento de Carga; apresentando suas principais ca-
racterı́sticas e funcionalidades; técnicas utilizadas e algoritmos de escalonamento. Para
tanto, além da introdução, este artigo está estruturado em mais 4 seções. Na seção 2,
apresentam-se informações e caracterı́sticas do Balanceamento de Carga de rede. Na
seção 3, denominada de Materiais e Métodos, apresentam-se os procedimentos meto-
dológicos adotodados nesta pesquisa. Na seção 4, denominada de resultados e discussões,
destacam-se pontos relevantes sobre soluções disponiveis para implantação de Balancea-
mento de Carga; e ainda, seus principais algoritmos. Finalmente, na seção 5, são realiza-
das as conclusões e perspectivas de trabalhos futuros.
2. Contextualização Teórica
Nesta seção apresentam-se informações e caracterı́sticas básicas do Balanceamento de
Carga de Rede para compreensão deste estudo. Para tanto, discute-se: Conceitos gerais
(2.1) e Princı́pios de Funcionamentos Básicos do Balanceamento de Carga (2.2).
De forma geral, quando o nó balanceador de carga e/ou Director recebe uma
solicitação do cliente, um dos servidores do grupo processa o pedido. Cada servidor é
capaz de lidar com o pedido de forma independente. Se algum servidor não está dis-
ponı́vel devido a erro ou devido à manutenção, outros servidores podem ainda servir os
pedidos sem serem afetados, garantindo a disponibilidade global do serviço.
Devido a grande flexibilidade, os serviços destinados aos nós podem ser dife-
rentes. Segundo [Batista 2007 2007], enquanto um ou mais nós podem ser destinados
a requisições de processos batch2 , os outros nós podem ser configurados para receber
requisições somente de consulta e de curta duração. Além disso, pode-se ter o processa-
mento distribuı́do uniformemente entre os membros do cluster.
3. Materiais e Métodos
Trata-se de uma pesquisa bibliográfica, de natureza básica, de abordagem qualitativa, com
finalidade exploratória. Este tipo de pesquisa ocorre quando elaborada a partir de material
já publicado, constituı́do principalmente de: livros, revistas, publicações em periódicos
e artigos cientı́ficos, jornais, boletins, monografias, dissertações, teses e demais materias
cientı́ficos disponı́veis na internet [Prodanov and de Freitas 2013].
Para a realização desta pesquisa foram utilizadas como apoio as ferramentas de
busca Google Scholar, Springer Link, ACM Digital Library, IEEE Digital Library, a par-
tir de terminologias em Português e Inglês e utilizando strings de busca das seguintes
palavras-chave: Balanceamento de Carga de Rede / Network Load Balancing, Clusters de
Balanceamento de Carga / Clusters Load Balancing e; Algoritmos para Balanceamento
de Carga / Algorithms for Load Balancing.
O intervalo temporal desta pesquisa considerou trabalhos publicados sobre o tema
a partir do anos 1990 até a atualidade, visto que entendeu-se como relevante o aspecto
histórico e também porque justamente no fim da década de 1990 que tal tema começou a
se expadir, dada a preocupação com sistemas de missão crı́tica.
Já como critério de seleção de artigos considerou-se, para inclusão: relevância,
comprovação cientı́fica, disponibilidade nas lı́nguas definidas, disponibilidade integral,
trabalhos com qualidade acadêmica e em respeito as normas em vigor; e ainda, cujos
resultados tenham no tı́tulo e no resumo relação com o tema deste trabalho. Já como
critérios de exclusão: cujos resultados não contemplem ao critério definido nas palavras-
chave, disponibilidade parcial, trabalhos não cientı́ficos ou sem comprovação; e trabalhos
sem a qualidade esperada.
4. Resultados e Discussões
Nesta seção são abordados os principais pontos sobre Balanceamento de Carga, a partir
da pesquisa bibliográfica realizada, sendo dividida da seguinte forma: Técnicas de Balan-
ceamento de Carga de Rede (4.1) e Algoritmos para Balanceamento de Carga (4.2).
Balanceamento de carga via software é composto por um software especial com a função
de balanceamento de carga integrado diretamente no sistema operacional dos servidores
que compõem o cluster. As vantagens desse método de balanceamento de carga incluem
velocidade, capacidade de configuração, confiabilidade e redução de custos.
Entre as soluções para técnicas de balanceamento implementadas em software,
é importante destacar: NLB - Microsoft Network Load Balancing, esta ferramenta usa
uma tecnologia de software que suporta uma arquitetura cluster web, tendo como carac-
terı́sticas principais a segurança de comunicação, roteamento e serviço de acesso remoto
[Sato 2007]. A solução LVS - Linux Virtual Server, um projeto open-source que tem
como principal objetivo construir um servidor de alto desempenho e altamente disponı́vel
para Linux usando a tecnologia de clustering, que fornece altos nı́veis de escalabilidade,
confiabilidade e usabilidade.
Balanceamento de Carga via software é composto por um software especial com a função
de balanceamento de carga integrado diretamente no sistema operacional dos balanceado-
res de carga, que usam diferentes algoritmos para controle de tráfego. O objetivo destes
algoritmos é a inteligência em distribuir a carga e/ou maximizar a utilização de todos
os servidores no cluster utilizando-se de um método. Os algoritmos de escalonamento
decidem qual servidor real será usado para atender uma nova requisição.
Esses algoritmos são um dos fatores mais importantes, pois determinam os modos
de escalonamento; ou seja, regulam a maneira como a carga é distribuı́da entre os nós que
compõe o sistema. Existem muitas estratégias disponı́veis, dependendo do fornecedor
do projeto a ser utilizado na rede. Estes métodos são pautados conforme a evolução da
tecnologia pois o mercado oferece vários tipos de opções.
Cada algoritmo tem a sua peculiaridade, tal como, a forma que estes fazem à
distribuição de tarefa, qual o critério de atribuir ou não o serviço a um nó do cluster que
já tem vários serviços sendo executados, conforme discutido. É valido enfatizarmos que
existem também diversos algoritmos utilizados para balanceamento de carga dependendo
da ferramenta e/ou solução utilizada para este fim; contudo, a seguir serão apresentados
os principais algoritmos implementados na ferramenta LVS - Linux Virtual Server.
4.2.1. RR - Round-Robin
Similar ao Least Connection, este método combina o Least Connection com um peso
para cada nó. Distribui requisições ao servidor com menor quantidade de conexões no
momento da escolha, levando em consideração também o peso atribuı́do a cada servi-
dor real. O Director determina para qual nó uma requisição será enviada, calculando o
overhead, como no método anterior, dividindo este número pelo peso associado ao nó.
O nó com menor valor associado após esta operação receberá a conexão. Caso haja o
mesmo valor associado, o primeiro da tabela do IPVS será selecionado [Meffe et al. 2006]
[Zhao et al. 2016b].
4.2.6. LBLC - Locality Based Least Connection (Menos Conexões Baseada na Loca-
lidade)
O algoritmo Locality Based Least Connection define o servidor real com base no endereço
destino da requisição, desta forma o algoritmo distribui mais solicitações aos servi-
dores com poucas conexões ativas referentes a seus IPs de destino. Este algoritmo
é projetado para uso em um cluster de servidores proxy cache. Exemplo para este
cenário: o servidor real (proxy) X possui 100 (cem) conexões ativas com o servi-
dor web www.exemplo.com.br. Novas requisições de clientes com destino ao servidor
www.exemplo.com.br continuarão a ser encaminhadas para o servidor real X, até que
esse esgote seus recursos. A partir daı́ o servidor real (proxy) Y será eleito como o novo
servidor preferencial [Meffe et al. 2006] [Zhao et al. 2016a].
4.2.7. LBLCR - Locality Based Least Connection With Replication (Menos Co-
nexões Baseada na Localidade com Replicação)
Este algoritmo funciona de maneira similar ao Locality Based Least Connection, com uma
funcionalidade suplementar. As diferenças incluem a eleição de uma lista de servidores
que podem responder por solicitações a um determinado destino. O Director mantém
um mapeamento de um cliente para um conjunto de servidores que podem atendê-lo.
Se todos os nós do conjunto estiverem sobrecarregados, o Director apanha um servidor
com menos conexões e o adiciona ao conjunto. Caso este conjunto não se modificar em
um intervalo de tempo especı́fico (seis minutos, intervalo padrão com definido no código
IPVS), o servidor com maior carga será excluı́do [Oktavianus 2013].
Este algoritmo utiliza o recurso hash, ou seja, o Director monta uma tabela hash e redire-
ciona as conexões para os servidores reais baseado nesta tabela, com ou sem pesos. Desta
forma as requisições são repassadas através de uma lista estática, tendo como ı́ndice o
endereço de destino das requisições [Ricarte 2010]. O método é útil quando o servidor
real é um servidor proxy.
A ferramenta LVS - Linux Virtual Server ainda oferece para balanceamento de
carga os algoritmos: SH - Source Hashing (Hashing Origem) - que também distribui as
conexões de rede para os servidores reais através de uma tabela hash, com ou sem pe-
sos, estaticamente atribuı́do pelos respectivos endereços IP de origem; ou seja, repassa
os pedidos para o conjunto de servidores reais, através de um lista estática, tendo como
ı́ndice o endereço de origem das requisições [Xu and Yang 2017]. SED - Shortest Ex-
pected Delay (Menor Atraso Esperado) - cuja função é repassar requisições para o ser-
vidor real que, presumidamente, responderá mais rapidamente. [Documentation 2011]
[Kumar and Kalra 2016]. NQ - Never Queue (Nunca Enfileirar) - que adota um modelo
de duas velocidades. Quando há um servidor ocioso disponı́vel, o trabalho será enviado
para o servidor inativo, em vez de esperar um rápido. Quando não há nenhum servidor
ocioso disponı́vel, o trabalho será enviado para o servidor que minimizar o seu atraso
esperado [Server 2012].
5. Conclusões
Balancear carga entre servidores é a maneira mais eficaz e inteligente para a disponibili-
dade de serviços computacionais. Nesse sentido, o objetivo deste estudo foi apresentar o
Balanceamento de Carga de Rede, destacando suas principais caracterı́sticas, funcionali-
dades, técnicas utilizadas, recursos, soluções e algoritmos de escalonamento. Entendeu-
se que o balanceamento de carga quando utilizado oferece escalabilidade e um poder
maior de processamento, buscando maximizar o desempenho, para evitar a sobrecarga de
serviços computacionais.
Conforme evidenciado, este trabalho tratou-se de uma pesquisa bibliográfica, onde
a partir de estudos realizados sobre o tema, apresentou-se os pontos considerados mais
relevantes. Verificou-se que o Balanceamento de Carga de Rede pode ser adotada vi-
sando evitar falhas ou a interrupções de serviços computacionais, garantindo disponibili-
dade elevada em um ambiente corporativo. Conforme pôde-se observar, existem diversas
estratégias para balanceamento de carga, dependendo do fornecedor do projeto, porém
optou-se por aprofundar nos estudos dos principais algoritmos implementados na ferra-
menta LVS - Linux Virtual Server, por ser um projeto open-source.
Considerou-se esta pesquisa relevante para a literatura, visto que o Balanceamento
de Carga de Rede necessita ser mais difundida, especialmente para as instituições que en-
frentam dificuldades relacionadas a sobrecarga de seus serviços computacionais. Como
proposta para trabalhos futuros sugere-se a realização de um estudo de caso utilizando-
se software livre, com o objetivo de comprovar a viabilidade e eficácia na utilização do
Balanceamento de Carga em uma arquitetura em cluster. Para tanto, pretende-se reali-
zar a implantação de um ambiente de rede virtualizado, onde seja possı́vel testar alguns
algoritmos de escalonamento utilizando a solução LVS - Linux Virtual Server (Servidor
Virtual Linux), demonstrando quais os resultados encontrados a partir de um comparativo
de desempenho e indicando aqueles que se mostrem mais eficientes.
Referências
Árabe, J. N. C. and Murta, C. D. (1996). Auto-balanceamento de carga em programas
paralelos. In Proceedings of the VIII Brazilian Symposium on Computer Architecture
and High Performance Computing, pages 161–171.
Batista 2007, A. C. (2007). Estudo teórico sobre cluster linux.
Cardellini, V., Colajanni, M., and Yu, P. S. (1999). Dynamic load balancing on web-server
systems. IEEE Internet computing, 3(3):28–39.
Cavalcante, M. W., Alves, J. B. d. M., and Filho, P. J. F. (2010). Análise de desempenho
de modelos para a distribuição de tráfego internet a um cluster de servidores web.
Chen, S.-L., Chen, Y.-Y., and Kuo, S.-H. (2017). Clb: A novel load balancing architecture
and algorithm for cloud services. Computers & Electrical Engineering, 58:154–160.
Costa, H. L. A. et al. (2009). Alta disponibilidade e balanceamento de carga para a
melhoria de sistemas computacionais crı́ticos usando software livre: um estudo de
caso.
da Silva Leandro, S. (2005). Balanceamento de carga em web services. Universidade
Federal de Santa Catarina.
Documentation, R. H. (2011). Cluster suite overview. Disponı́vel em:
https://access.redhat.com/documentation/pt/. Acesso em: 06 mai. 2017.
Garcia, S. (2010). Cluster de balanceamento de carga em linux. Disponı́vel
em: https://sulamita.wordpress.com/2007/01/31/clusters-de-balanceamento-de-carga-
em-linux/. Acesso em: 03 ago. 2017.
Kopparapu, C. (2002). Load balancing servers, firewalls, and caches. John Wiley &
Sons.
Kumar, A. and Kalra, M. (2016). Load balancing in cloud data center using modified
active monitoring load balancer. In Advances in Computing, Communication, & Auto-
mation (ICACCA)(Spring), International Conference on, pages 1–5. IEEE.
Meffe, C., Mussi, E. d. P., and Mello, L. d. (2006). Guia de estruturação e administração
do ambiente de cluster e grid. Guia Cluster.
Mesbahi, M. and Rahmani, A. M. (2016). Load balancing in cloud computing: a state
of the art survey. International Journal of Modern Education and Computer Science,
8(3):64.
Oktavianus, Y. L. (2013). Membangun sistem cloud computing dengan implementasi load
balancing dan pengujian algoritma penjadwalan linux virtual server pada ftp server.
Jurnal Nasional Teknik Elektro, 2(1).
Prodanov, C. C. and de Freitas, E. C. (2013). Metodologia do Trabalho Cientı́fico:
Métodos e Técnicas da Pesquisa e do Trabalho Acadêmico-2a Edição. Editora Fee-
vale.
Revah, Y. and Kadosh, A. (2016). Dynamic load balancing switch architecture. US Patent
9,455,918.
Ricarte, I. L. M. (2010). Tabelas hash. Disponı́vel em:
http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node26.html. Acesso
em: 03 ago. 2017.
Sabo, C. P. (2006). Avaliaçao de desempenho com algoritmos de escalonamento em
clusters de servidores web. PhD thesis, Universidade de São Paulo.
Santos, J., Lúcia, A., Marques, A., Augusto, M., Dórea, R., Carlos, R., and Ro-
drigo, É. (2010). Hs–clusters para balanceamento de carga. Disponı́vel em:
https://pt.scribd.com/document/97282862/HS-Clusters-Para-Balanceamento. Acesso
em: 06 ago. 2017.
Sato, J. (2007). Balanceamento de requisições em cluster de servidores
web: uma extensão para o mod-proxy-balancer do apache. Disponı́vel em:
http://www.din.uem.br/ mestrado/diss/2007/sato.pdf. Acesso em: 05 ago. 2017.
Server, L. V. (2012). Linux virtual server. Disponı́vel em:
http://www.linuxvirtualserver.org/. Acesso em: 17 mai. 2017.
Sroya, M. S. and Singh, V. (2017). Lddwrr: Least delay dynamic weighted round-robin
load balancing in software defined networking. International Journal, 8(5).
Xu, J. and Yang, X. (2017). Research on key technologies of technological service and
management based on cluster load balancing. Cluster Computing, pages 1–7.
Zhang, W. and Zhang, W. (2003). Linux virtual server clusters. Linux Magazine, 5(11).
Zhao, J., Liu, F., Tang, T., and Fu, J. (2016a). Method and device for accessing application
server. US Patent 9,450,912.
Zhao, J., Yang, K., Wei, X., Ding, Y., Hu, L., and Xu, G. (2016b). A heuristic clustering-
based task deployment approach for load balancing using bayes theorem in cloud en-
vironment. IEEE Transactions on Parallel and Distributed Systems, 27(2):305–316.