Saltar para o conteúdo
EuroVPSEuroVPS

O que fazemos · Dados e web: Camadas web de alta disponibilidade, N+1 em cada nível

Stacks web N+1 com HAProxy, Varnish, nginx e PHP-FPM atrás de endereços flutuantes. Falhas de nós, reinícios e patches de PHP invisíveis para os visitantes.
Chassis de blades HPE c7000 no Digital Realty Athens

Cada camada do seu site existe pelo menos duas vezes: terminação TLS, cache de páginas, servidor web e PHP. Os endereços flutuantes movem-se sozinhos quando um nó falha, e dimensionamos a stack para correr a plena velocidade com um nó de cada camada em falta.

O que é: load balancing e clustering para camadas web

Uma plataforma web para sites que não podem estar em baixo: notícias, e-commerce, publicação, front ends de SaaS. O edge termina o TLS e faz cache das páginas, a camada web corre nginx com PHP-FPM, e o conjunto é construído para que perder um nó, reiniciar um ou corrigir um seja algo que os seus visitantes nunca veem.

Como o construímos

Um edge cruzado. Dois nós de edge por propriedade correm HAProxy para TLS, encaminhamento e health checks, Varnish para cache de página completa, e keepalived para os endereços flutuantes. Cada edge é primário para um endereço público e standby para o outro, pelo que ambos transportam tráfego a toda a hora. Um script de saúde despromove um edge cujo HAProxy deixe de responder, e o par assume o seu endereço em segundos.

Uma camada web sem favoritos. Atrás do edge, dois ou mais nós web correm nginx e PHP-FPM com um pool por site, com pesos iguais. O caminho de administração está fixado a um nó, que é também a origem da replicação de ficheiros unidirecional, para que uploads e alterações de plugins cheguem aos outros nós em segundos, sem eliminações em conflito.

Uma cache que serve durante os problemas. O Varnish assenta em storage all-flash com suporte SAN e um pool de memória limitado, o que lhe permite guardar muito mais objetos do que a RAM permitiria, praticamente à mesma velocidade. Se todos os backends estiverem em mau estado, o Varnish continua a servir a última cópia boa de cada página durante até um dia. A invalidação da cache é feita por eventos a partir do CMS, para que um artigo publicado apareça de imediato em vez de esperar por um temporizador.

Reinícios que ninguém vê. O HAProxy repete e reencaminha um pedido quando um backend reinicia, os health checks estão afinados para que a rotação de logs nunca provoque flapping, e o PHP-FPM pode ser reiniciado um nó de cada vez enquanto o edge cobre o intervalo.

Dual-homed no fabric. Cada nó web está dual-homed no nosso fabric, com ambas as ligações em uso; a forma como os bonds são construídos está na página do fabric do datacenter.

Do que o protege

  • Um único nó web, de cache ou de load balancer a falhar ou a precisar de reinício.
  • Um problema de backend (manutenção da base de dados, um pool PHP encravado) a transformar-se numa página em branco: os leitores continuam a receber conteúdo em cache.
  • Reinícios de segurança e atualizações de PHP a produzir erros visíveis.
  • Um pico de tráfego a sobrecarregar o PHP quando a maioria dos pedidos podia ser servida a partir da cache.

Na prática

Teste de carga antes do lançamento. No novo par de edge de uma editora de lifestyle corremos dezenas de milhares de utilizadores virtuais durante quinze minutos, sustentando mais de dez mil pedidos por segundo com zero 503 e zero falhas de saúde nos backends.

Uma atualização de segurança do PHP em horário de expediente. Corrigimos ambos os nós web de um portal desportivo em produção, um nó de cada vez. O origin registou breves intervalos de reinício de cerca de um segundo cada; o edge repetiu os pedidos e serviu conteúdo em cache, e o número de erros recebidos pelos visitantes foi zero.

Mais cache, menos memória. Mover um par de edges de uma cache em RAM para storage com suporte flash libertou uma grande quantidade de memória para outro trabalho.

Porquê a EuroVPS

  • N+1 em cada nível, incluindo os load balancers, não apenas «dois servidores web atrás de um proxy».
  • Failover testado e medido antes da entrega.
  • A cache é concebida para manter o seu site online quando o backend não está.
  • Afinamos health checks, retries e redispatch, os detalhes que decidem se um failover de backend é invisível ou apenas curto.
  • Os mesmos engenheiros operam a rede, o storage e a stack, para que nada caia entre equipas.

Perguntas frequentes

  1. Precisamos também de um CDN? Não para a disponibilidade. Muitos clientes acrescentam um para alcance global; a stack funciona com ou sem ele, e configuramos o Varnish e o HAProxy para o respeitar.
  2. Quanto tempo demora um failover do edge? Segundos. Medimo-lo em cada construção e damos-lhe o número na entrega.
  3. Conseguem correr WordPress, Magento e PrestaShop nisto? Sim, juntamente com Laravel e PHP à medida. Cada site tem o seu próprio pool PHP-FPM.
  4. O que acontece aos utilizadores autenticados e aos checkouts? Esses pedidos contornam a cache por desenho e são distribuídos pela camada web. Perder um nó web passa os novos pedidos para os sobreviventes.
  5. Podemos fazer deploy do código nós próprios? Sim. Os deployments chegam ao nó de administração e replicam-se para fora, ou passam pelo seu próprio pipeline até cada nó.

Quer um site que continua a servir enquanto trabalhamos nele? Fale com um engenheiro.

O seu próximo parceiro de infraestrutura

Vamos analisar a sua infraestrutura.

Diga-nos o que executa hoje e o que precisa de melhorar. Um engenheiro vai analisar o seu pedido e ajudar a planear o passo seguinte.

+357 222 32280
Um engenheiro da EuroVPS a transportar um nó de servidor no piso do datacenter
Uma conversa com as pessoas que vão cuidar da sua infraestrutura.

Comecemos pela sua infraestrutura.

Um pouco de contexto ajuda-nos a começar a conversa certa.

Utilizaremos os seus dados para responder ao seu pedido. Política de privacidade