Graças ao ba­lan­ce­a­mento de carga, os acessos aos ser­vi­do­res podem ser dis­tri­buí­dos uni­for­me­mente através de uma instância técnica in­ter­mé­dia, o ba­lan­ce­a­dor de carga. Desta forma, garante-se uma ve­lo­ci­dade de acesso estável, o que é fun­da­men­tal para a captação de leads e clientes.

O que é o ba­lan­ce­a­mento de carga?

O ba­lan­ce­a­mento de carga é um método am­pla­mente utilizado na tec­no­lo­gia de ser­vi­do­res. Consiste em dis­tri­buir as so­li­ci­ta­ções dos uti­li­za­do­res por vários ser­vi­do­res de forma trans­pa­rente. Para tal, utiliza-se um ba­lan­ce­a­dor de carga, que pode ser im­ple­men­tado tanto em hardware como em software. Esta tec­no­lo­gia permite atribuir vários ser­vi­do­res a um mesmo domínio sem gerar conflitos de endereços, uma vez que todos operam sob um único URL público.

Os ser­vi­do­res se­cun­dá­rios são iden­ti­fi­ca­dos com nomes como www1, www2, www3, etc. Assim, o ba­lan­ce­a­mento de carga permite que uma página web esteja dis­po­ní­vel através de um único URL, embora, na realidade, funcione com vários ser­vi­do­res em segundo plano. Isto evita a so­bre­carga de um único servidor, uma vez que os pedidos externos são dis­tri­buí­dos por di­fe­ren­tes equi­pa­men­tos físicos dentro do cluster. Os uti­li­za­do­res, em geral, não notam este processo, uma vez que a atri­bui­ção das so­li­ci­ta­ções é feita através de al­go­rit­mos complexos em segundo plano.

O ba­lan­ce­a­mento de carga não se aplica apenas a ser­vi­do­res web, mas também a sistemas com vários pro­ces­sa­do­res. Nestes casos, o ba­lan­ce­a­dor de carga distribui as so­li­ci­ta­ções uni­for­me­mente entre os di­fe­ren­tes pro­ces­sa­do­res, o que permite aumentar a ca­pa­ci­dade de pro­ces­sa­mento.

Também na uti­li­za­ção de software de con­ten­to­res , como o Ku­ber­ne­tes, os ba­lan­ce­a­do­res de carga de­sem­pe­nham um papel fun­da­men­tal. São res­pon­sá­veis por dis­tri­buir de forma eficiente as cargas de trabalho entre os di­fe­ren­tes pods.

Como funciona o ba­lan­ce­a­mento de carga?

As consultas a um servidor web, tal como os acessos a uma página, chegam primeiro ao ba­lan­ce­a­dor de carga. Este encarrega-se da dis­tri­bui­ção da carga, re­di­re­ci­o­nando o tráfego para di­fe­ren­tes ser­vi­do­res. O ba­lan­ce­a­dor de carga pode ser im­ple­men­tado tanto em hardware como em software, mas o princípio de fun­ci­o­na­mento é o mesmo: quando recebe um pedido, consoante o método utilizado, o dis­po­si­tivo ou o software re­di­re­ci­ona-o para o servidor mais adequado.

A base técnica deste processo é o sistema DNS (Domain Name System). Os uti­li­za­do­res acedem a um site in­tro­du­zindo um URL, que é depois con­ver­tido pelo DNS num endereço IP. Este endereço IP aponta para o ba­lan­ce­a­dor de carga, que gere a dis­tri­bui­ção do tráfego. Na melhor das hipóteses, este processo é com­ple­ta­mente im­per­ce­tí­vel para o uti­li­za­dor.

Imagem: Diagrama de funcionamiento de load balancing
Diagrama: un load balancer o ba­lan­ce­a­dor de carga dis­tri­buye el tráfico de los clientes entre varios ser­vi­do­res.

Quais são as vantagens de um ba­lan­ce­a­dor de carga bem con­fi­gu­rado?

As três prin­ci­pais vantagens de um ba­lan­ce­a­dor de carga eficiente são:

  • Tempos de acesso oti­mi­za­dos: ao dis­tri­buir o tráfego por vários ser­vi­do­res, os tempos de resposta são reduzidos, mesmo quando há muitas so­li­ci­ta­ções si­mul­tâ­neas.
  • Maior to­le­rân­cia a falhas: um ba­lan­ce­a­dor de carga melhora a es­ta­bi­li­dade do sistema ao re­di­re­ci­o­nar au­to­ma­ti­ca­mente o tráfego de um servidor so­bre­car­re­gado ou lento para outros ser­vi­do­res do cluster. Se um servidor deixar de estar dis­po­ní­vel, o site alojado con­ti­nu­ará a funcionar.
  • Ma­nu­ten­ção do sistema sim­pli­fi­cada: o ba­lan­ce­a­mento de carga facilita a ad­mi­nis­tra­ção do servidor, uma vez que permite realizar con­fi­gu­ra­ções e atu­a­li­za­ções sem in­ter­rom­per o fun­ci­o­na­mento. O ba­lan­ce­a­dor de carga deteta quando um servidor está em ma­nu­ten­ção e re­di­re­ci­ona as so­li­ci­ta­ções au­to­ma­ti­ca­mente.

Que métodos de ba­lan­ce­a­mento de carga existem?

A dis­tri­bui­ção das so­li­ci­ta­ções recebidas depende do algoritmo utilizado. Os al­go­rit­mos mais populares para o ba­lan­ce­a­mento de carga são: Round Robin, Weighted Round Robin, Least Con­nec­ti­ons e Weighted Least Con­nec­ti­ons.

Round Robin

O método Round Robin é um sistema de dis­tri­bui­ção em que o ba­lan­ce­a­dor de carga gere as so­li­ci­ta­ções recebidas numa fila e as distribua se­quen­ci­al­mente entre os ser­vi­do­res ligados em série. Cada nova so­li­ci­ta­ção é atribuída ao próximo servidor da lista, o que permite dis­tri­buir a carga de forma equi­ta­tiva dentro do cluster de ba­lan­ce­a­mento de carga. No Round Robin, todas as so­li­ci­ta­ções são tratadas da mesma forma, sem con­si­de­rar a urgência da so­li­ci­ta­ção ou a carga atual de cada servidor. Por isso, este método é mais adequado para ambientes em que todos os ser­vi­do­res dispõem de recursos se­me­lhan­tes.

Round Robin ponderado

As li­mi­ta­ções do algoritmo Round Robin em clusters de ser­vi­do­res he­te­ro­gé­neos podem ser re­sol­vi­das através do método Weighted Round Robin. Neste caso, os pedidos recebidos são dis­tri­buí­dos de acordo com uma pon­de­ra­ção estática de cada servidor, que deve ser definida pre­vi­a­mente pelo ad­mi­nis­tra­dor do sistema.

Por exemplo, pode atribuir-se um valor de «100» a um servidor com maior ca­pa­ci­dade e um valor de «50» a ser­vi­do­res menos potentes. Neste cenário, o ba­lan­ce­a­dor de carga atribuirá duas so­li­ci­ta­ções ao servidor com peso 100 por cada uma que o servidor com peso 50 receber. O método Weighted Round Robin é es­pe­ci­al­mente útil em ambientes onde os ser­vi­do­res do cluster têm ca­pa­ci­da­des de hardware di­fe­ren­tes.

Menos ligações

Os al­go­rit­mos Round Robin não têm em conta o número de ligações ativas que cada servidor mantém num de­ter­mi­nado período de tempo. Isto pode fazer com que um servidor acumule muitas ligações e fique so­bre­car­re­gado, mesmo que, no total, tenha recebido menos pedidos do que outros. Para evitar este problema, o método Least Con­nec­ti­ons distribui os pedidos de acordo com o número de ligações ativas em cada servidor. O ba­lan­ce­a­dor de carga atribui a nova so­li­ci­ta­ção ao servidor que tiver o menor número de conexões naquele momento. Este método de ba­lan­ce­a­mento de carga é ideal para clusters de ser­vi­do­res ho­mo­gé­neos, onde todos os equi­pa­men­tos dispõem de recursos se­me­lhan­tes.

Mínimo de conexões ponderado

Se um cluster de ser­vi­do­res tiver ca­pa­ci­da­des desiguais, em vez do método «Least Con­nec­ti­ons», recomenda-se utilizar um sistema de ba­lan­ce­a­mento de carga baseado na dis­tri­bui­ção ponderada de acordo com as ligações ativas. Este método tem em conta tanto o número de ligações ativas de cada servidor como o peso pre­vi­a­mente atribuído pelo ad­mi­nis­tra­dor. Desta forma, consegue-se uma dis­tri­bui­ção equi­li­brada da carga dentro do cluster. O ba­lan­ce­a­dor de carga atribui au­to­ma­ti­ca­mente os novos pedidos aos ser­vi­do­res com a menor relação entre o número de ligações ativas e o seu peso, ga­ran­tindo assim uma uti­li­za­ção eficiente dos recursos.

Que problemas podem surgir com o ba­lan­ce­a­mento de carga?

O comércio ele­tró­nico enfrenta fre­quen­te­mente problemas es­pe­cí­fi­cos re­la­ci­o­na­dos com o ba­lan­ce­a­mento de carga. Um exemplo comum é a gestão do carrinho de compras. Quando os uti­li­za­do­res adicionam produtos, estes são ar­ma­ze­na­dos tem­po­ra­ri­a­mente durante a sessão, in­de­pen­den­te­mente da página que visitem dentro do mar­ket­place. No entanto, um ba­lan­ce­a­dor de carga padrão dis­tri­bui­ria as consultas por di­fe­ren­tes ser­vi­do­res, o que poderia fazer com que o conteúdo do carrinho se perdesse ao mudar de servidor.

Para resolver este problema, podem ser uti­li­za­das duas abor­da­gens. Por um lado, o ba­lan­ce­a­dor de carga pode basear-se no endereço IP do uti­li­za­dor, ga­ran­tindo que todos os pedidos pro­ve­ni­en­tes do mesmo IP sejam sempre di­re­ci­o­na­dos para o mesmo servidor. Por outro lado, é possível extrair um ID de sessão de cada pedido, o que permite ao ba­lan­ce­a­dor de carga iden­ti­fi­car para que servidor deve enviá-lo, ga­ran­tindo assim a coerência dos dados.

Por que é im­por­tante o ba­lan­ce­a­mento de carga?

Se o seu negócio depende da Internet, uma falha no servidor pode ter con­sequên­cias graves. Se utilizar apenas um servidor e este entrar em colapso devido a so­bre­carga, o seu site deixará de estar dis­po­ní­vel para po­ten­ci­ais clientes. Isto gera vários problemas: por um lado, durante a so­bre­carga, não poderá gerar receitas, uma vez que não será possível reservar serviços nem concluir compras. Por outro lado, a confiança dos clientes diminui, es­pe­ci­al­mente se a falha ocorrer durante um processo de compra. Nestes casos, os uti­li­za­do­res duvidarão se o seu pedido foi registado cor­re­ta­mente no sistema.

Mesmo que a sua empresa não ofereça serviços online, o seu site deve estar sempre acessível, uma vez que é um dos prin­ci­pais meios para obter in­for­ma­ções sobre a sua empresa. Se os po­ten­ci­ais clientes pro­cu­ra­rem in­for­ma­ções sobre a sua empresa e não con­se­gui­rem aceder ao seu site, é provável que recorram à con­cor­rên­cia. Um ba­lan­ce­a­dor de carga ajuda a minimizar esses riscos e garante a dis­po­ni­bi­li­dade do seu site.

Im­ple­men­ta­ção do ba­lan­ce­a­mento de carga nas empresas

O ba­lan­ce­a­mento de carga pode ser im­ple­men­tado tanto através de soluções de hardware como de software num servidor virtual. Existem pacotes pro­fis­si­o­nais que muitos for­ne­ce­do­res oferecem como In­fra­es­tru­tura como Serviço (IaaS) ou como parte da in­fra­es­tru­tura de rede de uma empresa.

Dado que a aquisição de ba­lan­ce­a­do­res de carga co­mer­ci­ais implica, ge­ral­mente, custos elevados, muitas pequenas empresas optam por soluções de código aberto, como o NGINX. Esta al­ter­na­tiva permite dis­tri­buir a carga de forma eficiente na rede de ser­vi­do­res, ga­ran­tindo assim a alta dis­po­ni­bi­li­dade de páginas web cor­po­ra­ti­vas e outros projetos online. No setor do alo­ja­mento web, o ba­lan­ce­a­mento de carga também é fre­quen­te­mente oferecido como uma fun­ci­o­na­li­dade adicional para ser­vi­do­res na nuvem.

Ir para o menu principal