Como se proteger contra perda de servidor em um orçamento

22

Sou uma empresa pequena e com pouco orçamento, fornecendo sites e bancos de dados para instituições de caridade e clientes sem fins lucrativos.

Eu tenho alguns servidores Debian Linux VPS e garanto que tenho backups diários para um VPS diferente daquele em que o serviço está hospedado.

Recentemente, uma das minhas empresas de hospedagem me disse que duas unidades falharam simultaneamente e que os dados foram perdidos para sempre. Coisas acontecem, disseram desculpas, o que mais eles poderiam fazer? Mas isso me fez pensar em maneiras econômicas de obter basicamente um VPS novamente no caso de um hardware ou outra falha relacionada ao host.

Atualmente eu teria que

  1. Gire um novo VPS
  2. Obtenha o backup do último dia (que inclui bancos de dados, raiz da web e configuração específica do site) no VPS e configure-o como o último, etc.
  3. Atualize o DNS e aguarde a propagação.

Provavelmente levaria um dia ou mais para conseguir isso, com a propagação de DNS sendo uma grande incógnita, embora eu tenha o TTL definido muito baixo (cerca de uma hora).

Alguns hosts fornecem instantâneos que podem ser usados ​​para replicar uma configuração para um novo VPS, mas ainda existe o IP e isso não ajuda no caso em que a empresa anfitriã cancela / suspende uma conta completamente (estive lendo sobre isso comportamento de certos provedores de hospedagem e isso me assustou! Não estou fazendo nada de spam / desonesto e fico de olho na segurança, mas sei que eles literalmente têm o poder de fazer isso e sou bastante avessa a riscos).

Isso, combinado com a escolha de hosts respeitáveis, é o melhor que posso fazer sem procurar uma solução incrivelmente cara?

artfulrobot
fonte
1
Muito cético em relação a uma reivindicação que 2 unidades falharam simultaneamente, particularmente em um VPS
symcbean
Aparentemente, um falhou e outro enquanto o novo estava sendo reconstruído.
Artfulrobot
dê uma olhada no drbd.linbit.com , isso pode atender às suas necessidades.
The
2
@symcbean: O problema é que uma reconstrução RAID-5 requer a leitura de todos os dados de todos os discos restantes. Essa é uma operação bastante longa (horas, se não dias). Um sistema RAID-5 barato pode ter uma configuração 9 + 1 usando unidades de desktop. Todos esses 9 discos serão estressados ​​além dos limites de design em uma reconstrução de RAID. De fato, é de se esperar que fracassos.
MSalters 13/02/2019
1
Bem, na verdade eles têm pools de armazenamento e processadores + pools de memória como entidades separadas, mas a questão não é sobre o que aconteceu ou não em um provedor específico; é mais geral do que uma implementação específica.
Artfulrobot

Respostas:

28

Para mim, escolher hosts respeitáveis ​​e fazer backups regulares - os quais você já parece estar fazendo - é tão bom quanto você pode fazer sem começar a pensar em planejamento de continuidade de negócios, configurações de alta disponibilidade, SLAs e assim por diante.

Eu digo às pessoas que você obtém 99% de tempo de atividade gratuitamente (ou seja, sem gastar nada extra em alta disponibilidade). São cerca de três dias e meio de inatividade por ano. Cada 9 a mais nesse tempo de atividade aumenta o custo entre três e dez vezes.

Se as pessoas não estão prontas para pagar esse tipo de dinheiro, é um erro enganá-las, pensando que podem obter proteção extra de qualquer significado.

MadHatter apoia Monica
fonte
3
Esta é uma ótima resposta. Tenho uma configuração e um tipo de clientes muito semelhantes aos @artfulrobot (até usamos a mesma empresa de hospedagem), e sua pergunta e sua resposta me fizeram perceber que é minha responsabilidade comunicar aos meus clientes as limitações e riscos, em inglês muito claro, para garantir que eles tenham expectativas realistas. A maioria deles é muito não-técnica, então há uma probabilidade muito real de eles acharem que tudo funcionará magicamente, sem parar e ad infinitum. Não quero gerenciar suas expectativas durante / após uma grande falha, preciso fazer isso antes!
Simon Blackbourn
Não estou dizendo que as falhas não sejam totalmente correlacionadas, mas a redundância 1 + 1 na teoria deve fornecer dois noves extras pelo dobro do custo. Você sugere que o custo para dois noves extras esteja entre 9 e 100 vezes. 2x versus ~ 30x é uma enorme diferença.
MSalters 13/02/2019
2
@ MSalters isso é verdade, contra certos tipos de falha (falha do servidor). Contra, por exemplo, falha no site, ele não faz nada, a menos que os dois servidores estejam em sites diferentes, e isso se torna extremamente complexo em termos de administrador de rede. Você também considera apenas os custos de capital e ignora os custos de funcionamento aumentados - manter dois servidores perfeitamente sincronizados não é trivial, dependendo do tipo de coisa que eles estão fazendo, e há o custo de administrador dos balanceadores de carga. Meu sentimento é que servidores redundantes em um único site, compartilhando a carga LB, oferecem outros nove em troca de 3-4 vezes o custo.
MadHatter apoia Monica
Maneira boa e fácil de apresentá-lo. (Mas ... eu acrescentaria algum preço em algum lugar, pois 3 a 10 vezes "grátis" ainda é grátis;). Ou, claro, você quer dizer o custo total do serviço em si? )
Olivier Dulac
@OlivierDulac justamente!
MadHatter apoia Monica
8

Pequenas empresas com orçamentos pequenos, especialmente organizações sem fins lucrativos, normalmente não terão condições de oferecer alta disponibilidade. A questão é: se você praticamente não tem orçamento, como é o caso em situações como essa, qual é a sua estratégia de restauração?

Eu tenho alguns clientes como este, e é isso que eu faço:

Primeiro, para alguns deles, eu tenho um backup incremental e um dump completo do banco de dados a cada seis horas. Um cliente já estava usando o CrashPlan Pro, então apenas o usei. Faça o que fizer, você precisa ter um backup restaurável.

Eu tenho um manual simples do ansible que reuni em cerca de uma hora (sem ter trabalhado anteriormente com o ansible) que instala o nginx, php-fpm e o MariaDB e os prepara para hospedar um site ou sites. A execução desse manual de instruções resulta em um servidor (ou servidores) pronto para hospedar um aplicativo Web típico, e posso simplesmente restaurar o host virtual nginx, os arquivos do aplicativo e o banco de dados para ele.

O resultado disso é que posso acessar um site desse tipo em apenas alguns minutos, em oposição à maneira manual, que pode levar uma hora ou mais.

Michael Hampton
fonte
Ei, isso soa bem. Eu vou investigar isso. Obrigado.
Artfulrobot
A alta disponibilidade está prontamente disponível, mesmo para clientes pequenos de bons fornecedores. Eles obtêm economia de escala.
21415 JamesRyan
@JamesRyan Sim, mas você não obtém economia de ... economia. Diga-me se faz sentido executar duas instâncias da Amazon e um balanceador de carga elástico para um site que recebe 300 acessos por mês?
Michael Hampton
@ MichaelHampton que nem é remotamente o que eu estava sugerindo. Uma empresa que hospeda VPS para centenas de clientes pode distribuí-los por hardware redundante, em vez de simplesmente colocar vários deles em um único servidor físico e cruzar os dedos.
JamesRyan
4

A complexidade da implementação depende da pilha de aplicativos, mas, idealmente, você deseja configurar um "hot standby" (em um provedor diferente), com os dados sendo replicados em tempo real (ou o mais próximo possível).

Fazer o argumento comercial de ter 2 servidores "ativos" é tão simples quanto comparar a perda potencial de receita durante um período de "recuperação de imagens" com as despesas de outro servidor.

Mark R.
fonte
Obrigado. Estou usando uma pilha LAMP. Eu acho que o tempo real seria algo como a replicação do MySQL, embora isso possa ser bem complicado de gerenciar. E está dobrando os servidores que tenho que gerenciar. Talvez fizesse sentido ter uma caixa de baixa especificação que tivesse uma cópia ao vivo de todos os outros servidores, portanto era apenas a propagação do DNS. Então eu poderia clonar isso de volta para um novo VPS e alterar o DNS (hmmm.).
Artfulrobot
A replicação do MySQL é geralmente bastante simples de instalar e configurar, além do tempo gasto na transferência do conjunto de dados inicial. Quanto ao DNS, a maioria dos resolvedores respeita TTLs baixos atualmente e definir o TTL de um registro para 60 segundos geralmente funciona bem.
Mark R.
A replicação do MySQL é mais complexa quando você precisa adicionar novos bancos de dados extras e acredito que ainda é complicado ter um servidor sendo escravo de mais de um mestre (replicando vários dbs em um servidor em espera). Além disso, é claro que você precisa proteger o acesso entre servidores, por exemplo, stunnel, para que seja uma PKI a manter etc., a menos que você tenha uma LAN privada, mas isso é descartado pela necessidade de estar em uma empresa de hospedagem separada.
Artfulrobot
Sempre há replicate-do-db e túneis SSH com chaves.
Mark R.
Usado para executar o túnel SSH padrão, mas não era confiável. O Stunnel é brilhante quando você o coloca em funcionamento.
Artfulrobot
2

Lembre-se de que o tempo de atividade não é o mesmo que a integridade dos dados. Você pode ter um tempo de atividade de 99,99% e perdeu todos os seus dados duas vezes em um ano, desde que o servidor tenha sido reiniciado "em breve". A maioria dos provedores de VPS garante que seu servidor esteja em execução, NÃO que seus dados estejam seguros. Seus dados são seu problema :(.

O que você está procurando é algo que armazene seus backups em um servidor separado e (IMHO) nem mesmo no mesmo provedor. Dependendo do tamanho dos dados que você está falando, um disco rígido portátil pode ser usado como uma terceira linha de defesa offline. Faça backup dos dados como você estava fazendo e copie-os regularmente (ou apenas as alterações, se possível) para o disco rígido portátil ou mesmo para um computador local. Também existem opções razoavelmente baratas, como o Backblaze, para soluções de backup, mas o preço dependerá da quantidade de dados de que você está falando. Se você puder fazer backups incrementais, será muito mais barato que os backups completos, mas os backups incrementais podem ser muito difíceis, dependendo de onde os dados estão armazenados (arquivos simples = fácil, banco de dados = não tão fácil).

millebi
fonte
Sim, eu faço isso :-) E sim, as empresas de hospedagem não se preocupam com dados, eu lidei com corrupção de disco antes também!
Artfulrobot
0

A resposta depende totalmente da sua arquitetura e requisitos. Algum tempo atrás, três discos falharam em um servidor meu, derrubando mais de 20 vm quando um Raid 6 falhou.

Eu escrevi sobre isso em

https://www.linkedin.com/pulse/20140827173324-2064263-how-i-nearly-lost-my-business-to-3-hard-discs

Mas: como isso é crítico, tivemos backups - diariamente para itens não importantes, 15 minutos para bancos de dados e e-mails. Caramba, agora eu adicionei um servidor que é replicado para outra máquina a cada 30 segundos.

Você não diz nada sobre a pilha, nada sobre qualquer orçamento - portanto, o melhor e único conselho aqui é ir a algum provedor de nuvem e começar a usar seus mecanismos de backup. Mas comece a definir o que você realmente precisa.

Além disso - o orçamento para esse backup deve estar no seu preço. Ele precisa ser pago. E qualquer infraestrutura que você precisar ... você precisa. Não é "ridículo caro" então.

TomTom
fonte
TomTom: aoe + openfiler e algumas caixas e você pode criar uma micro-san de alta disponibilidade
symcbean