Saltar para o conteúdo
EuroVPSEuroVPS

Uma migração é um projeto, não um ticket.

A plataforma de alto tráfego de um editor, redesenhada para escala, testada sob carga e migrada para o nosso bare metal. O impacto visível para o cliente foi uma janela de cerca de cinco minutos dentro de uma operação de duas horas.

Por EuroVPS EngineeringA casa das máquinas

8 min de leitura
Neste artigo 4 secções
Em resumo
  • O grupo de sites de alto tráfego de um grande editor tinha de mudar de datacenter para o nosso bare metal, redesenhado para escala pelo caminho. O tráfego das notícias de última hora é o negócio deles, e cada leitor veria uma má transição final (cutover).
  • Desenhámos primeiro a plataforma: uma edge cache de dois níveis em all-flash SAN, um load balancer afinado para contagens de ligações muito elevadas, uma camada de base de dados com separação read/write e uma camada de object cache.
  • Depois provámo-la com um teste de carga à escala real, antes de um único leitor real ser movido.
  • O cutover foi uma operação de duas horas com uma janela de DNS visível para o cliente de cerca de cinco minutos, cada fase com um caminho de rollback.

São sites de notícias e lifestyle em que o pico de tráfego é o próprio negócio. Uma migração que os deita abaixo, ou os levanta mais lentos, é visível para cada leitor a meio de uma notícia de última hora. Isto nunca iria ser um ticket. Foi um projeto com uma noite de cutover.

Porquê uma só equipa para todo o trabalho

O trabalho precisava de duas coisas ao mesmo tempo, de uma só equipa: a engenharia para redesenhar as camadas de caching e de base de dados, e a infraestrutura própria (all-flash SAN enterprise, um verdadeiro fabric de rede) onde a assentar. Juntámos os engenheiros e o metal, e a noite do cutover foi responsabilidade nossa.

A plataforma, tal como foi desenhada

A intenção do desenho era três coisas ao mesmo tempo: redesenhar para escala na cache e na base de dados, fazer o cutover com uma janela mínima e delimitada, e levar cada peça do novo desenho intacta através do cutover. Eis no que se tornou.

A PLATAFORMA, TAL COMO FICOU
No que se tornou a stack do editor

Edge cache Varnish de dois níveis

um nível grande em all-flash SAN enterprise, mais um nível em memória

HAProxy à frente

afinado para contagens de ligações muito elevadas

ProxySQL em cada web node

separação read/write: os reads distribuem-se, os writes ficam seguros

Cluster Percona XtraDB

replicação baseada em certificação, virtualmente síncrona

Valkey + Sentinel

a camada de object cache da aplicação
Provada num teste de carga à escala real antes de um único leitor ser movido.

O determinístico vence o elegante

A base de dados foi movida com um hot backup recente em vez de um catch-up de replicação em direto. Foi uma decisão de desenho com uma justificação declarada: um backup é determinístico, por isso o que está no backup é o que o novo cluster tem, sem estado de replicação para desenredar no pior momento possível. O caminho mais elegante existe, e recusámo-lo de propósito. Na noite do cutover quer-se a mudança cujo resultado já se conhece.

Mover os dados depressa significou retransmiti-los em dois saltos: pela internet pública até um relay de staging, e depois pela LAN interna a line rate, transformando uma cópia limitada pela encriptação em poucos minutos. No destino, o cluster foi reconstruído a partir do backup e ressincronizado nó a nó.

E uma sincronização do filesystem levou uma lista de exclusões cirúrgica para que a migração não pudesse esmagar a configuração da nova casa: a configuração do apontador da base de dados, o drop-in da object cache e a instalação da cache de dois níveis foram todos explicitamente preservados. A única peça de estado que um restore de base de dados apaga silenciosamente, a ativação do plugin de cache-purge, foi mapeada de antemão com a sua reativação pronta a disparar. É isso que significa desenhar o cutover duas vezes: uma vez para a frente, e outra para tudo o que poderia morder pelo caminho.

RELAY

Os dados, em dois saltos

Internet pública até um relay de staging, depois a LAN interna a line rate. Minutos, não horas.

REBUILD

Cluster reposto a partir do hot backup

Ressincronizado nó a nó.

SYNC

Mudança do filesystem, protegida

Uma lista de exclusões protege a nova arquitetura de ser esmagada.

CUTOVER

O DNS muda

A janela visível: cerca de cinco minutos.

RE-ARM

A única definição apagada em silêncio, reativada

A horas, porque tinha sido mapeada de antemão.

“Não movemos os seus servidores. Reconstruímos a sua plataforma e assentámo-la na nossa, numa janela de cerca de cinco minutos, planeada de antemão.”

No que se tornou a relação

A migração foi o ponto de entrada, não o fim. Os sites irmãos seguiram o mesmo padrão, e a disciplina operacional veio como parte da construção e não como um upsell posterior: hot backups frequentes da base de dados e snapshots do filesystem retidos, edge caches afinadas, uma camada de monitorização de desempenho para toda a frota, e validação por teste de carga antes do lançamento. A relação assentou em «operamos e evoluímos a plataforma», não em «alojamo-la».

Respostas diretas

Conseguem migrar um site de alto tráfego sem o deitar abaixo?+

Planeamos uma janela delimitada e declaramo-la de antemão. Neste projeto: cerca de cinco minutos de propagação de DNS visível para o cliente dentro de uma operação de duas horas.

Backup e restore ou replicação para uma migração de base de dados?+

Ambos são legítimos. Aqui escolhemos um hot backup recente porque é determinístico: o que está no backup é o que o novo cluster tem, sem estado de replicação para desenredar a meio do cutover. O caminho elegante nem sempre é o seguro.

O que deve incluir um plano de rollback de uma migração?+

Um caminho de rollback em cada fase, e um caminho documentado de regresso à origem até a nova plataforma ter conquistado confiança.

Redesenham durante uma migração ou limitam-se a mover as coisas?+

Se a mudança merece um projeto, normalmente merece também o redesenho. Esta plataforma ganhou uma edge cache de dois níveis, uma camada de base de dados com separação read/write e uma camada de object cache pelo caminho. O lift-and-shift é por vezes o certo, mas é uma decisão, não uma predefinição.

A planear uma mudança? Traga-nos a plataforma, não um ticket.

Desenho, teste de carga, playbook de cutover, cordas de rollback. Dizemos-lhe a janela honesta antes da noite, e seguramos a rede de segurança.

Fale com um engenheiro

Chegou ao fim.

Ponha a leitura em prática

O que executa?

Fale-nos da carga de trabalho, do tráfego e dos requisitos de recuperação. Comece pelo configurador de servidores ou discuta os detalhes com um engenheiro.

Escrito pelos engenheiros que constroem e operam a infraestrutura que descreve.
Fale com um engenheiro
XIn

Faltam 8 min