Quando falo de ambiente WEB, eu estou me referindo a grandes sites e portais como Americanas.com, Mercadolivre.com.brwww.real.com.br, www.itau.com.br, sites ou portais que o volume de acesso pode passar de 5.000.000 por dia fácil. Se cada acesso desencadeia o download de arquivos e dados com uma média de 15KB de tamanho cada, imaginem a quantidade de dados trafegados pelos servidores Web/HTTPServer (servidores que hospedam os sites), teremos uma média de mais de 200GB por dia, para cada servidor.

Por isso que a arquitetura de um ambiente Web é ponto chave para o sucesso do negócio destes sites, já que o seu negócio é baseado no acesso de usuários.

Temos hoje mais de 50% dos sites sendo hospedados no Apache HttpServer no mundo todo.

Dados by netcraft.com

O gráfico aponta um dado interessante, o Web Server do Google (GWS) e a quantidade de sites no mundo que o utilizam, mais de 14 milhões.

Dados by netcraft.com

O Apache é um excelente HttpServer, mas como diz o padre no livro “O conde de Monte Cristo”: Eu sou um padre e não um santo. Ele não consegue fazer milagres, mas o santo neste caso chama-se Load Balance (Balanceador de Carga), tendo a capacidade em alguns dos casos ou produtos, garantir um ganho de performance de mais de 80%, já citado em um post anterior.

Arquitetura utilizando Load Balance.

O Load Balance é na verdade um hardware ou software que tem a capacidade de balancear a carga de dados trafegados, com a utilizam de métricas e algoritmos, ele determina qual webserver ou servidor está apto a receber uma determinada requisição.

Uma lista das principais funcionalidades:

  • Asymmetric load: A ratio can be manually assigned to cause some backend servers to get a greater share of the workload than others. This is sometimes used as a crude way to account for some servers being faster than others.
  • Priority activation: When the number of available servers drops below a certain number, or load gets too high, standby servers can be brought online
  • SSL Offload and Acceleration: SSL applications can be a heavy burden on the resources of a Web Server, especially on the CPU and the end users may see a slow response (or at the very least the servers are spending a lot of cycles doing things they werent designed to do). To resolve these kinds of issues, a Load Balancer capable of handling SSL Offloading in specialized hardware may be used. When Load Balancers are taking the SSL connections, the burden on the Web Servers is reduced and performance will not degrade for the end users.
  • Distributed Denial of Service (DDoS) attack protection: load balancers can provide features such as SYN cookies and delayed-binding (the back-end servers dont see the client until it finishes its TCP handshake) to mitigate SYN flood attacks and generally offload work from the servers to a more efficient platform.
  • HTTP compression: reduces amount of data to be transferred for HTTP objects by utilizing gzip compression available in all modern web browsers
  • TCP offload: different vendors use different terms for this, but the idea is that normally each HTTP request from each client is a different TCP connection. This feature utilizes HTTP/1.1 to consolidate multiple HTTP requests from multiple clients into a single TCP socket to the back-end servers.
  • TCP buffering: the load balancer can buffer responses from the server and spoon-feed the data out to slow clients, allowing the server to move on to other tasks.
  • Direct Server Return: an option for asymmetrical load distribution, where request and reply have different network paths.
  • Health checking: the balancer will poll servers for application layer health and remove failed servers from the pool.
  • HTTP caching: the load balancer can store static content so that some requests can be handled without contacting the web servers.
  • Content Filtering: some load balancers can arbitrarily modify traffic on the way through.
  • HTTP security: some load balancers can hide HTTP error pages, remove server identification headers from HTTP responses, and encrypt cookies so end users cant manipulate them.
  • Priority queuing: also known as rate shaping, the ability to give different priority to different traffic.
  • Content aware switching: most load balancers can send requests to different servers based on the URL being requested.
  • Client authentication: authenticate users against a variety of authentication sources before allowing them access to a website.
  • Programmatic traffic manipulation: at least one load balancer allows the use of a scripting language to allow custom load balancing methods, arbitrary traffic manipulations, and more.
  • Firewall: direct connections to backend servers are prevented, for network security reasons
  • Intrusion Prevention System: offer application layer security in addition to network/transport layer offered by firewall security.

Temos hoje no mercado dois grandes players, o F5 BIG-IP LTM e o Cisco ACE. Se tratando de performance, vários documentos e comparações dizem que as funcionalidades de load balance do Cisco Ace são superiores ao do F5 BIG-IP LTM. O Cisco ACE é um módulo que pode ser instalado em chassis da série 5000 e 6000, ele possui funcionalidades de virtualização com a capacidade de criar contextos/ambientes separados por sites ou domínios.

O F5 BIG-IP LTM trás algumas funcionalidades que o Cisco ACE não possui, como por exemplo a capacidade de substituir por completo um servidor Apache HTTPServer com conteúdo estático. Eu particularmente já vi essa solução implementadas em algumas empresas, tendo grandes ganhos de performance. Claro que é necessária uma configuração adequada para esse tipo de implementação,.

Um vídeo demonstrando o Cisco ACE:

Ambientes virtualizados e soluções de Cloud Computing possuem em seus Load Balances a responsabilidade de gerencias e manipular a sua infraestrutura de acordo com a necessidade e demanda de seus clientes.

Existem soluções que operam exclusivamente em  algumas camadas do Modelo OSI:

Abaixo uma lista de fornecedores de soluções de Load Balance no mercado:

fontes: Cisco,F5,wikipedia,Internet