As duas camadas

Prévia grátis 3 min de leitura

Um balanceador de carga entende o seu tráfego ou não entende, e essa única distinção produz duas famílias de produto que quase só têm o nome em comum.

Camada 4

Ela encaminha pacotes. Ela vê uma conexão chegando, com endereço e porta de origem e de destino, escolhe um backend e passa os bytes entre os dois.

Ela não sabe se o tráfego é HTTP. Pode ser um protocolo de banco, um jogo ou um fluxo de vídeo, e essa generalidade é o que a torna rápida.

Um balanceador de camada 4 aguenta uma vazão enorme em hardware modesto, porque faz quase nada por conexão.

Camada 7

Ela lê a requisição: método, caminho, cabeçalhos e cookies. Depois roteia com base no que encontra.

Para ler uma requisição HTTPS, ela precisa decifrá-la, o que significa que ela guarda o certificado e termina o TLS. Esse fato explica a maior parte das diferenças que vêm a seguir.

flowchart TB
  C["uma conexão chega"] --> L{"qual camada?"}
  L -->|4| P["escolha um backend. canalize bytes"]
  P --> F["rápido. agnóstico a protocolo. não sabe nada"]
  L -->|7| D["termine o TLS. interprete a requisição"]
  D --> R["roteie por caminho, cabeçalho, ou cookie"]
  R --> S["mais lento. ciente de HTTP. consegue decidir"]

O que a camada 7 compra

Roteamento por caminho: /api para uma frota, todo o resto para outra.

Verificações de saúde de verdade. Um balanceador de camada 4 sabe se uma porta aceita conexões. Um de camada 7 sabe se o /up devolveu 200. São perguntas muito diferentes, já que um processo Rails travado ainda aceita conexões.

Novas tentativas. Um GET idempotente que falhou pode ser tentado de novo em outro backend. A camada 4 não consegue fazer isso, porque não sabe que a requisição era um GET.

Manipulação de respostas: compressão, injeção de cabeçalhos, cache.

O que ela custa

Ela decifra e interpreta cada requisição, e não cada conexão.

O certificado fica no balanceador, o que é uma questão de segurança: o tráfego do balanceador até os seus servidores vai decifrado, a menos que você o cifre de novo.

E ela vira um componente que entende a sua aplicação, o que significa que esse entendimento pode se afastar da realidade. Uma regra de roteamento que casa com algo inesperado é uma categoria inteira de problemas que a camada 4 não pode ter.

Qual delas esta aplicação tem

O kamal-proxy é um balanceador de camada 7. Ele termina o TLS, lê o cabeçalho Host para escolher um contêiner e verifica o /up enquanto um deploy sobe um contêiner novo. Na frente dele, a Cloudflare é outro proxy de camada 7: ela termina o TLS do visitante e cifra de novo o trecho até o servidor.

O kamal-proxy não costuma ser descrito como balanceador de carga, porque, com um backend só, o roteamento é trivial. Mas o mecanismo é o de que este curso trata, e reconhecê-lo é o objetivo.

Pontos-chave

  • A camada 4 encaminha pacotes, e é rápida porque não entende nada.
  • A camada 7 decifra e interpreta, e consegue rotear por caminho, cabeçalho ou cookie.
  • Verificações de saúde de verdade precisam da camada 7, porque um processo travado ainda aceita conexões.
  • O certificado fica no balanceador, então o trecho atrás dele vai decifrado, a menos que seja cifrado de novo.
  • O kamal-proxy é um balanceador de camada 7 cujo roteamento, por acaso, é trivial hoje.
Aula 1 de 7 · grátis

Continue com a aula 2

Escolhendo um backend

Explica round robin, menos conexões, hashing e variantes com peso, e por que menos conexões é o padrão.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...