Azion apresenta o Load Balancer de Camada 7

Confira os detalhes do funcionamento do nosso Load Balancer, que promove o direcionamento do tráfego, vital para manter conexões confiáveis e eficientes.

Frank Garland - Technical Researcher
Azion apresenta o Load Balancer de Camada 7

Vamos falar de load balancers. Balancear cargas é essencial para o gerenciamento de redes de tráfego desde os anos 1990. É a ferramenta que garante que seus usuários estão sempre recebendo a conexão mais rápida possível – e que nenhum servidor único da sua rede esteja recebendo mais tráfego do que consegue lidar.

Um load balancer é similar a um proxy reverso. Isso significa que age como um proxy para o servidor em conexões de cliente-servidor, em oposição ao proxy convencional, que agiria como um proxy para o cliente. Quando algum device de um cliente se conecta a um service, o load balancer daquele serviço aceita a conexão e decide para qual de seus servidores deve enviar a conexão, de acordo com as regras do algoritmo de load balancing na qual foi programado (falaremos mais disso em breve). Assim, quando você clica em Azion.com, seu computador na verdade está se conectando a um dos seus load balancers. O load balancer, por sua vez, escolhe um servidor que tenha a informação do site que o seu computador precisa, então esse servidor envia a informação recolhida de volta para o load balancer, que o encaminha para o seu computador e completa o pedido. Tudo isso ocorre nos bastidores, porque seu computador e o servidor nunca se comunicam diretamente. Para o computador, o load balancer aparece para o servidor da qual está puxando os dados, enquanto o servido entende o load balancer como um computador-cliente, sem sequer ter conhecimento da existência do outro.

Desta forma, pode parecer que o load balancer é um intermediário desnecessário, mas o controle que ele promove no direcionamento do tráfego é vital para manter conexões confiáveis e eficientes. Sem o algoritmo do load balancing para regular o tráfego, a conexão pode ser feita para um servidor danificado, ou conexões demais podem ser feitas em um único servidor ao mesmo tempo, fazendo com que ele caia. Com um load balancer, o tráfego pode ser distribuído de forma mais igualitária entre os servidores disponíveis, impedindo que um único servidor fique sobrecarregado.

Há dois principais tipos de load balancers, baseados na camada OSI em que operam. Load Balancers de Camada 4 operam na Camada de Transporte, a camada responsável por coordenar a transferência de dados. Eles também se conectam à Camada 3, a Camada de Rede, onde roteadores e endereços de IP operam. Load Balancers de Camada 4 foram os load balancers originais e ainda mantêm sua popularidade. Essas máquina regulamentam o tráfego para seus servidores ao ler os números da porta TCP e endereços de IP de conexões recebidas, depois alteram o endereço de IP do destino para o servidor escolhido para encaminhar a conexão adiante. Isso é um jeito muito fácil e simples de lidar com balanço de cargas. Já que o Load Balancer está apenas procurando o endereço de IP, ele nunca precisa olhar o conteúdo dos dados transferidos, economizando um tempo precioso nos processos de conexão. E mais, a inabilidade de ver os dados tornam a segurança mais simples. Um Load Balancer de Camada 4 seria inútil para um ataque de hackers, já que a máquina nunca teve acesso a qualquer informação que valesse roubar.

Uma abordagem mais moderna de balancear a carga usa a Camada 7 de Aplicações em vez de a Camada 4 ou 3. A Camada 7 é o que é conhecido pela maioria dos usuários como a Internet. É a camada de superfície, contendo todos os dados que enviamos e recebemos. A maior diferenciação entre Load Balancers de Camada 7 e 4 é que, em vez de endereços de IP, as de Camada 7 lêem os dados que chegam aos servidores. Isso significa que as C7 têm acesso a muito mais informação em relação às C4, permitindo que elas façam escolhas de mais inteligentes de balanceamento que uma C4 simplesmente não tem dados o suficiente para fazer. Essa leitura de dados requer mais energia, precisando de mais poder de processamento, e isso cria pontos de vulnerabilidade que precisam ser protegidos. Assim como um com um C4, você não quer que ninguém consiga roupas seus dados do Load Balancer de Camada 7 do seu sistema. Ambos os C4 e C7 são muito usados, mas cada um tem acesso a algoritmos diferentes que controlam como o tráfego daquele sistema é direcionado.

Azion apresenta o Load Balancer de Camada 7

Algoritmos:

Cada Load Balancer segue um conjunto simples de regras, chamados algoritmos para balancear cargas, que determinam para qual servidor o tráfego será enviado. Load Balancers de Camada 7 conseguem seguir instruções mais sofisticadas, então seus algoritmos podem variar, mas a força dos Load Balancers de Camada 4 está em sua simplicidade, então a maioria delas é programada com um dos seguintes algoritmos.

Round Robin:

Provavelmente a abordagem mais simples, o algoritmo Round Robin distribui os pedidos aos servidores de forma cíclica, para se certificar de que cada servidor do sistema receba um pedido antes de mandar outro pedido de volta para o primeiro servidor. Esse é um jeito fácil de assegurar uma distribuição igualitário entre os servidores, mas está longe de ser perfeito.

Weighted Round Robin:

Um dos defeitos do Round Robin é que ele pressupõe que todos os servidores podem processar o mesmo número de requisições, inundando servidores pequenos em um sistema, enquanto os servidores maiores são parcialmente inutilizados. O algoritmo Weighted Round Robin tentar compensar esse problema indicando cada servidor de um sistema com pesos proporcionais à sua capacidade de requisições. Então se há três servidores em um sistema, servidor A tem cinco vezes a capacidade de servidor B, e servidor C tem duas vezes a capacidade de B, então um Weighted Round Robin enviaria 5 requisições para o servidor A, 1 requisição para B e 2 para C, depois enviaria outras 5 para A, mais 1 para B e assim por diante.

Least Connections:

Outra questões dos algoritmos Round Robin é que nem todas as conexões duram o mesmo tempo. Se você estiver distribuindo requisições à la Round Robin entre dois servidores, de modo que as conexões 1, 3 e 5 vão para o servidor A enquanto 2, 4 e 6 vão para o servidor B, pode parecer que ambos os servidores estão lidando com o mesmo número de requisições. Mas se 2 e 6 forem conexões breves que terminam rapidamente, de repente o servidor A está lidando com as conexões 1, 3 e 5, enquanto o servidor B está apenas com a conexões 4. Assim, continuar usando o Round Robin para distribuir conexões pode exacerbar essa disparidade. É aí que o algoritmo Least Connections (Menos Conexões, em inglês) torna-se útil. Em vez de focar em quantos conexões cada servidor recebe, o algoritmo Least Connections acompanha quantas conexões cada servidor está mantendo no momento. Assim, limitações de conexões irregulares não promovem impactos adversos, já que qualquer servidor que esteja mantendo conexões mais longas não se sobrecarregue com mais se há servidores dispostos a aguentar o tranco. Algoritmos Weighted Least Connections também existem, seguindo os mesmo princípios de indicação de pesos usado no Weighted Round Robin, mas aplicado ao algoritmo Least Connections.

IP Hash:

Algoritmos de IP Hash focam em outra questões chave de balanceamento de cargo: Persistência. Algumas transações, como e-commerce, dependem de dados de cache gerados localmente no servidor específico a que você está conectado, de modo a funcionar com eficiência máxima. Imagine que você esteja incluindo itens que quer comprar em um carrinho de compras digital, mas saiu da página antes do checkout. Se o algoritmo de load balancing não estiver prestando atenção a isso e depois te enviar aleatoriamente para um novo servidor que não salvou seus dados no cache, você vai precisar começar todo o processo de compras do zero. IP Hash resolve esse problema ao pegar o endereço de IP do cliente e do servidor e combinar os dois para criar uma única chave de hash que pode ser regenerado e lido no futuro. Assim, na próxima sessão com tal sistema, o cliente sempre será redirecionado para o servidor que já lhe conhece, permitindo que ele continue exatamente de onde parou.

Least Pending Requests:

Já comentamos que balancear tráfego pela Camada 7 oferece opções demais para resumir aqui. Mas, além dos algoritmos de Camada de Rede listadas acima, há um algoritmo específico para Camada 7 que tem se tornado bem popular. Least Pending Requests (LPR) monitora todas as conexões pendentes e as distribui simultaneamente para os servidores com maior disponibilidade. Não segue um processo lógico simples, como Round Robin ou Least Connections, porque não precisa. Diferentemente de Load Balancers C4, ele pode ler os dados que está encaminhando, permitindo que analise os servidores usando critérios mais complexos do que apenas perguntar qual servidor tem mais espaço disponível. Isso dá espaço a alguns truques como configurar um conjunto de servidores exclusivamente para repositórios de imagens, e depois enviar todas as requisições de imagem para lá, enquanto outros pedidos são enviados para outros lugares. É uma ferramenta muito útil, mas complexa, e muitos serviços ainda estão satisfeitos com algoritmos de balanceamento de tráfego mais simples. Se você estiver lidando com um tráfego muito alto, no entanto, o nível de detalhe com que um algoritmo LRP consegue lidar é um milagre.

Código Aberto

A variedade de posicionamentos e algoritmos de camadas de rede levou ao desenvolvimento de todo o tipo de produtos de código aberto para balanceamento de carga, cada um com abordagens únicas para distribuir o tráfego de servidores. Vamos nos aprofundar em alguns dos maiores nomes e ver o que cada um traz de diferente.

Maglev

O Maglev é criação do Google, então é fácil de entender porque ele foi construído para lidar com cargas de tráfego tão extremas. Na verdade, o Google balanceia sua rede em nuvem global usando uma versão mega do software Maglev que vende para os clientes. O Maglev é um load balancear baseado em software, o que foi uma mudança significativa do hardware padrão de distribuição de tráfego de quando o Google lançou o produto em 2008, mas, desde então, isso tem se tornado norma entra a maioria das empresas. O Maglev é uma tecnologia de balanceamento de carga inteligente, capaz de lidar com dados em ambas as camadas de Aplicação e de Rede. (Para os apaixonados por cyber-segurança, o Google também tem um Load Balancer de Camada 4 construído com foco em privacidade do usuário). O Maglev é especializado em uma versão mais complexa do algoritmo de IP Hash, chamado “consistent hashing”, que aumenta a flexibilidade e escalabilidade ao minimizar as interrupções do tráfego que ocorrem ao adicionar ou remover servidores do sistema. O Maglev tem ótimas funções de redundância e oferece a estabilidade que muitos empresas procuram em um load balancer.

Katran

Para o Facebook, os criadores do Katran, velocidade de conexão é prioridade máxima. Essa é a maior razão para o Facebook não ter feito a mudança de muitas outras empresas de transferência para as tecnologias C7 de Load Balancing. Apesar do estardalhaço da C7, ela ainda não é tão rápida em encaminhar conexões quanto a clássica C4, então Katran é construído como um Load Balancer de Camada 4, ainda que seja uma bem sofisticada. Katran é outro exemplo de load balancing como software. Menos comum em C4s, isso dá níveis de escalabilidade e flexibilidade ao Facebook competitivos ao do usuário de C7. O algoritmo do Katran usa uma versão personalizada do “consistent hashing” do Maglev. Porque todos esses projetos foram lançados ao público como códigos abertos, muitos deles se alimentam do design dos outros. Já que velocidade é tão importante para o Katran, muito trabalho foi feito para empurrá-lo além da já impressionante velocidade de encaminhamento de C4s básicos ao incorporar um sistema eficiente para manusear pacotes chamado eXpress Data Path. Falta ao Katran as personalizações avançadas dos seus concorrentes C7, mas, olha, é bem rápido.

Traefic

O Traefic é um load balancer mais especializado, construído com foco em micro-processos. Ele usa sua arquitetura de camada 7 para oferecer distribuição inteligente de carga de momento a momento. O maior diferencial do Traefic é sua capacidade dinâmica de auto-configuração. O load balancer consegue se gerenciar em tempo real, reduzindo drasticamente a necessidade de manutenção e supervisão humana. Não é o mais rápido em encaminhar dados e tem um processo de instalação meio complexo, mas oferece distribuição de carga inteligente orientada aos detalhes a nível de container. O Traefic também é construído com foco em customização, com uma gama de presets opcionais que permitem personalização na regulagem de interrupções, verificações de certificados e roteamento de servidores de backend. Não é construído com os mesmos objetivos de tráfego massivo de load balancers como o Katran e o Maglev, focando mais em microprocessor. Se o Maglev é uma serra elétrica, o Traefic é mais como um estilete bem esperto.

HAProxy

O HAProxy é a Wikipédia dos load balancers, um software Camada 7 totalmente open-source que sobrevive a base de doações da comunidade. Eles também tem uma opção comercial chamada HAProxy ALOHA, com algumas funções adicionais de segurança e capacidade de integração com load balancers de camada 4. Dito isso, a versão open-source ainda é um pedaço impressionante de tecnologia que está sendo constantemente melhorada e oferece boa concorrência para os produtos mais comerciais.

Azion Load Balancer de Camada 7

Desenvolvemos nosso próprio balanceador de carga para atender às nossas necessidades exclusivas de balanceamento de tráfego sem servidor na edge network. Azion Load Balancer de Camada 7 é um software, equipado com um conjunto completo de algoritmos de balanceamento personalizáveis, incluindo Weighted Round-Robin, Weighted Least Connections e IP Hash. Atualmente, não oferecemos recursos da Camada 4, pois nosso trabalho na edge requer um nível de complexidade e personalização que exige o uso de tecnologias da Camada de Aplicativos. As conexões de alta velocidade que a computação de borda possibilita compensam os problemas de velocidade que podem prejudicar alguns produtos L7, permitindo que o Balanceador de Carga Avançado execute um balanceamento de solicitações baseado em conteúdo em ritmo acelerado. Como sempre com nossas ferramentas, não queremos que os usuários percam tempo nessa importante fase de configuração, por isso criamos o Balanceador de Carga Avançado com foco na facilidade de uso, tornando-o um processo simples de instalar e configurar.

Resumo

Esta é apenas a ponta do iceberg do balanceamento de carga. Existem muitas outras ferramentas excelentes de balanceamento de carga por aí, cada uma com suas próprias áreas especiais de enfoque. O balanceamento de carga é uma parte simples, mas essencial de cada processo de rede, e se você deseja que o fluxo de tráfego de sua solicitação aumente de bom para ótimo, é vital encontrar o balanceador de carga que melhor atende às suas necessidades. Se suas funções de rede dependem de um enxame de microprocessos coordenados suavemente, você pode querer dar uma olhada no Traefic. Se você deseja que sua rede seja um Fort Knox digital, o HAProxy pode ser uma boa opção. E se você está deixando sua rede sem servidor e quer uma ferramenta amigável projetada especificamente para aquele ambiente, ou simplesmente não consegue decidir entre inteligência e velocidade e está procurando o melhor dos dois mundos, venha experimentar o Azion Advanced Load Balancer e deixe-nos saber o que você pensa.

Inscreva-se na nossa Newsletter