Software Load Balancer - Encaminhar ou redirecionar para os servidores backend?

3

Eu sou um desenvolvedor da Web. Recentemente, foi criada uma necessidade para usar o Load Balancer. Eu sou novo nesta área. Eu escolhi qual LB usar, não é muito importante, o HAProxy tem todos os recursos necessários até onde eu pesquisei.

My concern is that, with software based load balancer, It does not "redirect" user to the backend server, the loadbalancer stays in the middle, so all the traffic bandwith and tcp connections, will stay in the middle. Did I get it right?

Se sim para a pergunta anterior, como posso criar uma solução para que o balanceador de carga não fique no meio com o servidor Cliente - Backend?

Além disso, eu preciso de um tipo de fonte "lb", porque o webapp usa a sessão e preciso que os usuários se conectem aos mesmos servidores que estão usando.

Obrigado antecipadamente.

    
por Festim Cahani 15.07.2016 / 10:21

2 respostas

4

Não sabe para que lado a maior parte do tráfego flui, se é client -> server ou server -> client , mas se for o último, você pode estar interessado em usar (ou verificar, pelo menos) o Linux Virtual Server (LVS) que é

an advanced load balancing solution that can be used to build highly scalable and highly available network services, such as scalable web, cache, mail, ftp, media and VoIP services.

(trecho do site).

Para obter o tráfego de seus servidores de back-end diretamente, sem "algo intermediário" entre os / seus clientes, use o Direct Routing . Você encontrará mais informações neste link, mas para ter uma ideia de como isso se parece:

Agoravocêpoderiadizer...bem,issosoalegalechiquenateoria,masvamoslá,ositediz"Últimas notícias da imprensa ... quarta-feira, 8 de agosto de 2012" ... estamos em 2016 agora . Sim, você estaria completamente certo, além disso, LVS é comprovado e é sólido ... eu recomendo dar uma olhada no mínimo?

A Wikimedia Foundation a usa , como muitos outros fazem, e aqui está uma última imagem mostrando a configuração em 2010 .

    
por 15.07.2016 / 12:23
2

Em termos de software - haproxy é uma solução boa e comprovada.

Você tem várias maneiras de alcançar o balanceamento de carga correto.

Equilíbrio de hash IP

Dependendo do seu IP de origem, o servidor de destino será calculado usando o hash do IP de origem. Portanto, todas as solicitações de um IP sempre chegarão ao mesmo servidor (a menos que esteja inativo).

Eu uso essa opção em projetos que não podem usar o JWT.

Marcação de cookies

O servidor da Web ou o balanceador de carga retorna um cookie adicional que marca o servidor, que deve processar outras solicitações provenientes desse usuário.

Compartilhar cookies entre servidores

Eu pessoalmente gostaria de evitar essa opção, pois isso dá complexidade à sua infraestrutura e você precisa se preocupar com o armazenamento de sessão.

JSON Web Tokens (sessão em cookies)

Você não se importa com as sessões, pois elas são armazenadas em cookies. Portanto, seus servidores não podem processar todas as solicitações, não importa onde seja o servidor A ou B. Quanto a mim, essa é a melhor solução para grande parte dos aplicativos da Web, mas! Há um enorme aviso aqui, pois você precisa entender o que faz.

If yes for the question before, then how can I make a solution so the load balancer will not stay in the middle with Client - Backend server?

Isso também é possível, você pode simplesmente usar subdomínios. Se seu usuário acessar www, ele decidirá onde o usuário será redirecionado para s1.domain.tld ou s2.domain.tld, ...

Eu já vi essa solução várias vezes no passado, mas aplicativos modernos não usam isso. Por exemplo cria páginas duplicadas para bots de indexação.

Você também pode se livrar do seu balanceador e usar o ECMP no nível da rede, mas é um pouco mais complexo de configurar. Eu pessoalmente ficaria com o balanceador de carga.

    
por 15.07.2016 / 11:38