Failover simples para sites (monitoramento + DNS dinâmico)

Neste artigo, quero mostrar como é fácil e gratuito criar um esquema de failover para um site (ou qualquer outro serviço online) usando uma combinação de monitoramento okerr e um serviço de DNS dinâmico. Ou seja, em caso de qualquer problema com o site principal (desde um problema de "Erro PHP" na página até a falta de espaço ou simplesmente um fluxo suspeitosamente baixo de pedidos em um e-commerce), novos visitantes serão direcionados para um segundo (terceiro, e assim por diante) servidor que esteja funcionando, ou para uma página de "Desculpe", onde será explicado educadamente que "há um problema, já estamos cientes e já estamos consertando, em breve estará tudo resolvido" (e você, nesse caso, realmente estará ciente e poderá consertar).

Viver com failover ou sem?

Enquanto não ocorrer um problema, não há grande diferença. Mas quando acontece, sem o failover, muitas vezes ocorre o seguinte: você tenta rapidamente entender qual é o problema, não consegue (os backups não estão restaurando, o software não funciona como deveria de acordo com a documentação, etc.), e não há tempo, servidores/sites estão fora do ar, clientes estão ligando, todos estão nervosos, você tenta de alguma forma consertar de maneira improvisada e desajeitada, depois parece que funciona com gambiarras e fica. Você pensa que em algum momento deve entender melhor e refazer tudo de forma correta, mas não há nada mais permanente do que o temporário.

Agora, como isso acontece de forma adequada com failover:

  • O erro ocorre
  • O erro é detectado automaticamente
  • Uma notificação é enviada
  • A mudança é transferida para um dos servidores de backup
  • O problema é resolvido com calma e sem pânico, consertado e o servidor é reintegrado ao sistema.

Neste esquema, é claro que também podem surgir problemas, mas, de qualquer forma, o esquema é linear, cada etapa aqui é simples e, o mais importante, pode ser depurada separadamente, portanto a chance de falha neste esquema é muito menor, e todas as ações podem ser automatizadas e executadas rapidamente (diferente da tarefa de encontrar e corrigir uma estranha e desconhecida situação épica). Seu avião pousou em um país distante, você liga o telefone e vê uma notificação no Telegram de que o servidor caiu, mas tudo bem, o servidor de backup foi ativado, você pode continuar sua viagem, não precisa voltar nem consertar via SSH no café mais próximo com WiFi. Você resolve isso quando for mais conveniente.

O futuro já está aqui!

Antes, o principal problema que tornava o failover uma solução frequentemente inaceitável estava no custo envolvido. Era necessário comprar equipamentos caros (e contratar especialistas ainda mais caros). Ou então, improvisar algo complicado com guias (já vi até uma situação em que dois servidores estavam interligados com um cabo null modem, transmitindo um heartbeat para que, no momento certo, o servidor reserva pudesse reconhecer e assumir o controle). Hoje, existem maneiras mais simples e gratuitas. Se você tem um site com gatinhos, não há desculpa para não implementar o failover!

Além disso, para um esquema de failover é necessário um servidor (ou talvez mais de um), o que costumava ser um grande custo. Agora, é possível obter um VDS por um preço acessível.

O site mais confiável com gatinhos

Para uma ilustração prática da solução com okerr + DNS dinâmico, lançamos nosso site com gatinhos cat.okerr.com. Odiamos gatinhos, então eles estarão quase ausentes. Temos três sites, cada um com aparência semelhante (todos no mesmo modelo), mas com gatinhos diferentes para facilitar a distinção, e cada um fornece informações técnicas para demonstrar como o failover funciona. A página se atualiza sozinha a cada minuto, mas você sempre pode pressionar reload no navegador.

Nas informações técnicas, há uma linha 'status=OK'. Às vezes, os servidores simulam problemas e mostram 'status=ERR'. O servidor principal 'cai' a cada 20 minutos de cada hora (0:20, 1:20, 2:20, ...). O servidor reserva cai a cada 40 minutos. O último servidor (o 'sorry' server) está sempre ativo. Às 0 minutos de cada hora, os servidores principal e reserva 'se recuperam'.

Failover simples para sites (monitoramento + DNS dinâmico)

Se você abrir o site e deixá-lo na aba, verá que ele nunca cai (embora cada servidor individual simule problemas periodicamente), e em caso de um problema no servidor, ele simplesmente 'navega' entre os servidores ativos. A imagem, o nome e o endereço do servidor e seu papel mudarão. Às vezes, pode-se pegar o momento em que status=ERR (já há um problema, mas todo o esquema de failover ainda não foi ativado), mas na próxima atualização você verá a página de um servidor ativo.

Failover no okerr + DNS dinâmico

Vamos ver como isso funciona por trás dos panos. A tarefa do failover é garantir que o endereço cat.okerr.com sempre aponte para o endereço IP do servidor ativo.
Para cada um dos servidores que mantêm nosso site de gatos no okerr, há um indicador que verifica seu estado a cada minuto.

Failover simples para sites (monitoramento + DNS dinâmico)

Nesta captura de tela, vemos como o site cat.okerr.com é verificado a partir do servidor alpha.okerr.com. A página deve conter status=OK, e como podemos ver na parte superior, o status do indicador atualmente é OK. Quando o servidor “quebrar”, será ERR. (Este é apenas um exemplo de indicador, okerr é uma ferramenta de monitoramento, por isso pode-se anexar qualquer tipo de indicador, por exemplo, verificar espaço livre em disco, número de novos pedidos na base, e até indicadores lógicos, por exemplo, durante a noite haverá um conjunto de critérios de erro, e durante o dia outros).

Nas configurações do projeto, criamos um esquema de failover com estes indicadores:

Failover simples para sites (monitoramento + DNS dinâmico)

No esquema, há três indicadores (três servidores), diferentes em prioridades. O servidor principal para o site é o charlie, se ele não estiver funcionando (não tiver “status=OK” ou simplesmente estiver indisponível), então passamos para o bravo e, por último, o alpha. Na parte direita da página, é mostrado o estado do registro DNS em diferentes servidores.

Para quem notou que usamos o nome cat.he.okerr.com: Estamos usando um esquema um pouco mais complexo. Em vez de simplesmente alterar o registro DNS cat.okerr.com, alteramos cat.he.okerr.com (no provedor de DNS dinâmico Hurricane Electric), e cat.okerr.com é um CNAME (alias), que não muda, sempre apontando para cat.he.okerr.com. Nós simplesmente gostamos mais do Hurricane como DNS dinâmico, e ele tem chaves para gerenciar um registro separado (e não toda a zona), o que nos parece mais seguro. Você também pode optar por não especificar senhas-chaves no okerr para gerenciar todo o domínio, mas apenas para um subdomínio ou registro.

Da queda à recuperação

Passo a passo, como funciona este esquema:

  1. Ocorre (é simulado) um problema no servidor
  2. O sensor okerr verifica a cada minuto o estado de cada servidor e informa ao servidor principal do projeto no okerr
  3. O indicador do servidor correspondente muda de estado de OK para ERR
  4. Ao alterar o status do indicador, o failover é recalculado, determinando qual endereço deve ser definido (se necessário. Por exemplo, se o servidor principal estiver funcionando, mas o backup morrer, não haverá alterações)
  5. Este endereço é informado ao serviço de DNS dinâmico. Ao final dessa etapa, à direita você verá o status “sincronizado”
  6. Muito em breve (em segundos), a gravação chegará aos servidores DNS do seu domínio (para o site de gatos, isso é ns1-ns5.he.net).
  7. A partir deste momento, alguns usuários já estarão acessando o novo servidor ao vivo. No entanto, nem todos os servidores DNS do mundo atualizaram os registros, e a antiga entrada pode ainda estar em cache em alguns lugares. É possível observar como os dados nos servidores DNS públicos "flutuam", exibindo tanto o valor novo quanto o antigo. Se você atualizar a página de configuração de failover, o okerr solicitará novos dados aos servidores DNS.
  8. Depois que os dados se estabilizarem, o antigo registro em cache terá expirado em todos os lugares — 100% das solicitações serão direcionadas ao novo servidor.

Para acelerar a etapa 7 (que frequentemente é a mais longa), o TTL do registro DNS dinâmico deve ser configurado o mais baixo possível. Normalmente, os serviços permitem intervalos de 90 a 120 segundos. Esse é um compromisso razoável.

Além disso

Tudo isso pode ser configurado em uma noite (se você já tiver um servidor de duplicação). Tanto o okerr quanto os serviços de DNS dinâmico são gratuitos. Para obter mais verificações e um período de verificação mais curto no okerr, você precisa passar pelo treinamento (na página do perfil). Após a conclusão, o nível aumenta imediatamente (20 indicadores por hora + 1 rápido, de 10 minutos). E se isso não for suficiente — escreva para support@okerr.com, provavelmente será possível aumentar (até agora sempre houve essa possibilidade, nunca houve uma negativa, pelo contrário, ofereceram isso). Mas, inicialmente, não quero prometer tudo a todos, não tenho certeza se teremos recursos suficientes para cumprir as promessas. Mas, por enquanto, há poucos usuários, então não há problemas em aumentar os limites.

O que o okerr pode fazer — veja no site apresentação. Na verdade, isso é monitoramento (zabbix na nuvem), e o failover é uma função adicional agradável. Também é possível acessar a demonstração no site sem registro.

Ao alterar o estado do indicador — uma notificação é enviada por e-mail ou Telegram. (Nós observamos o que está acontecendo e percebemos que, aparentemente, o Telegram é o mensageiro mais confiável. Obrigado ao RKN pelo teste de estresse!) Com a configuração correta do okerr, qualquer notificação será um sinal de "parem tudo, é preciso consertar!" ou "tudo tranquilo!". Não deve haver alertas desnecessários do okerr (se houver, é necessário ajustar de outra forma). Por exemplo, para o nosso site de gato, o servidor alpha é o último e nunca simula erros. Se ele falhar — devemos saber. Por outro lado, os outros servidores simulam erros constantemente, portanto, para não receber alertas várias vezes por hora, esses indicadores estão com o status "silencioso".

Vale a pena também criar um servidor de desculpas (em qualquer hospedagem mais barata), que ou terá sua página de desculpas (caso todos os servidores principais e de reserva fiquem fora do ar) ou redirecionará para a página de status do okerr (por exemplo, nosso cp.okerr.com/status/okerr) ou statuspage.io.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster