Quando é o momento certo para introduzir alta disponibilidade para o site?

16

Quando é o momento certo para introduzir alta disponibilidade para o site?

Existem muitos artigos sobre as opções de alta disponibilidade. Não é tão óbvio, no entanto, QUANDO é a hora certa de mudar do servidor único para a configuração de alta disponibilidade.

Por favor, considere minha situação:
http://www.postjobfree.com é um site 24/7 com tráfego significativo:
http://www.similarweb.com/website/postjobfree.com

Atualmente, eu o executo em um único servidor: o servidor Web IIS 7.0 e o SQL Server 2008 são executados na mesma caixa de hardware.

Ocasionalmente (~ um por mês) ~ 5 minutos de inatividade geralmente causados ​​por reinicialização exigida por alguma atualização do Windows Server. Normalmente, o tempo de inatividade é programado e acontece à noite. Ainda é desagradável, porque o Google Bot e alguns usuários ainda estão ativos à noite.

A receita atual do site é de aproximadamente US $ 8.000 / mês.

Considero mudar para a configuração de dois servidores (web farm de 2 servidores web e cluster de 2 servidores SQL hospedados em dois servidores de hardware).

Prós:
1) Alta disponibilidade (teoricamente sem tempo de inatividade). Mesmo se um dos servidores cair - outro servidor assumirá o controle.
2) Sem perda de dados: sem o cluster SQL, até um dia de dados podem ser perdidos em caso de falha de hardware (fazemos backup diário).

Contras:
1) Mais esforço para definir e manter essa configuração.
2) Maior custo de hospedagem. Em vez de ~ US $ 600 / mês, seria cerca de US $ 1200 / mês.

Qual seria sua recomendação?

Dennis Gorelik
fonte
A resposta para minha pergunta pode afetar o desenvolvimento. Por exemplo, posso considerar dividir o banco de dados em partes e manter os dados que exigem alta confiabilidade (entrada do usuário) separadamente dos dados que exigem alto desempenho (cálculos).
2
Oi Dennis, essa não é realmente uma recomendação, por isso deixei de comentar, mas seus custos de hospedagem parecem bem altos para um único servidor Windows? Suponho que seja um servidor totalmente dedicado (não uma VM), mas mesmo assim você deve considerar talvez metade desse custo para um servidor de especificação decente com 8 GB de RAM, uma boa quantidade de espaço em disco etc. Pode valer a pena conversar com sua empresa de hospedagem sobre como obter um preço melhor.
Ewan Leith
6
Eu acho que a alta disponibilidade deve ser planejada desde o primeiro momento da concepção do projeto.
Tom O'Connor
Ewan, eu quero que meu site funcione rápido, por isso tenho um processador Quad com 8 GB de memória e unidade SDD. Fator no custo das licenças de software (Windows, SQL Server), SSL e suporte técnico. Você tem uma boa solução com preço baixo para isso? Atualmente, uso o Server Intellect (suportado pelo SoftLayer) para hospedagem. Você recomendaria algo melhor?
Dennis Gorelik
2
A atualização do Windows está chegando com atualizações de segurança. Se eu não corrigir o servidor, ele poderá ficar vulnerável a ataques. Qual frequência de atualização você recomendaria para o servidor de produção do Windows?
Dennis Gorelik

Respostas:

15

Resposta curta: quando o tempo de inatividade ou o risco disso custam mais do que custaria ter alta disponibilidade.

É fundamentalmente uma decisão econômica. Como um exemplo. US $ 8.000 / mês implica que uma interrupção de 2 horas custará US $ 22. Se você puder configurar seu sistema de forma que possa ir do zero para um site totalmente funcional em 2 horas, a alta disponibilidade ganhará apenas US $ 22 em funcionalidade acima disso.

Em outras palavras, você pode economizar dinheiro, a menos que / até que você tenha 54 horas de inatividade inevitável em um determinado mês.

Slartibartfast
fonte
16
Você também deve considerar o risco de reputação
gbn
7
O custo por hora de tempo de inatividade quase certamente dependerá do momento em que o servidor ficar inativo. É improvável que as transações sejam distribuídas uniformemente por um período de 24 horas. É mais normal ocorrer durante apenas algumas horas de pico, momento em que a perda seria muito maior.
John Gardeniers
Slartibartfast, entendo sua resposta dessa maneira: verifique se o tempo de recuperação após uma falha catastrófica é razoável (poucas horas), a perda de dados é razoável (algumas horas) e me permito ter períodos de inatividade programados de tempos em tempos (pelo menos por enquanto) . Isso significaria ter backups diários, backups parciais incrementais e um servidor disponível para restaurar toda essa configuração. Isso soa certo?
Dennis Gorelik
Respostas: gbn: Concordado; Eu estava indo para uma explicação simples, mas a reputação poderia facilmente ser um fator significativo. John Gardeniers: Claro, mas se o site for usado apenas aos domingos entre 11h e 13h, o tempo de inatividade programado não é realmente um problema, enquanto o preço de US $ 2 mil para uma interrupção não planejada de 2 horas é_direito . Nesse ponto, você precisa descobrir qual é a probabilidade de uma interrupção prematura (com um custo de receita de US $ 2 mil) em relação à cobrança de US $ 600 / mês para o servidor addnl. Dica: a menos que falhas aleatórias durante o período crítico aconteçam com mais de 4 anos / ano, não vale a pena.
precisa
Dennis Gorelik: Decida sobre os riscos que você deseja proteger (por exemplo, perda de negócios durante a manutenção, perda de servidor, perda de datacenter, conta / segurança / criação de banco de dados) e aja para protegê-los. Nesse caso, você está protegendo contra o tempo de inatividade devido a manutenção e falha imprevisível (até onde eu sei). O que você descreve deve fazer o truque, mas lembre-se de que você não precisa possuir o servidor, desde que tenha certeza de que pode adquiri-lo e configurá-lo no período de restauração.
precisa
2

Acho que a maioria dos usuários pode lidar com um pouco de tempo de inatividade programado. Considere que o ebay tem atualizações semanais nas noites de sexta-feira e lances por aí às vezes não funcionam. O banco on-line do meu banco (principal da Austrália) agendou interrupções por horas toda semana. O Twitter fica offline o tempo todo. Heroku / EC2 caiu por dias recentemente.

Eu o manteria nessa perspectiva, se você estiver falando apenas 5 minutos por mês, estará fazendo um bom trabalho como administrador de sistemas.

Chris
fonte
1

Você já mencionou o Google como um fator em termos de indexação, mas também pode valer a pena considerar o impacto que a capacidade de resposta da latência / site pode ter no SEO. É uma caixa preta e tudo isso, tão difícil de quantificar - embora, pelo que vale, Matt Cutts calcula que é um por cento . Eu ficaria mais preocupado com a reputação, como outros já declararam.


fonte
1

Lembre-se de que o HA, como segurança, não é um produto, mas um processo.

Por exemplo, a replicação do banco de dados o levará apenas ao ponto em que cada espelho do banco de dados poderá continuar por conta própria, mas você também precisará de uma estratégia de ressincronização após a substituição dos componentes com falha.

Considere um sistema de pedidos como um exemplo: o cliente envia um pedido e, durante o processamento, o sistema físico com o qual ele estava falando falha após armazenar as informações do pedido em sua cópia local do banco de dados. Impaciente, o cliente pressiona "enviar" novamente e é direcionado para outro servidor, que aceita o pedido. Se seus bancos de dados forem ressincronizados simplesmente reproduzindo as instruções INSERT ausentes do outro lado, a ordem será duplicada, o que pode não ser o que você deseja.

Como o @Slartibartfast sugeriu, tudo se resume a uma decisão econômica, no entanto, eu recomendo que você também planeje alguns anos no futuro aqui. Se você espera precisar de uma configuração adequada de HA, então agora seria um bom momento para reservar recursos para o trabalho preparatório.

Simon Richter
fonte
1

Enquanto você pensa sobre isso, acho que você considera criar uma página "falhar baleia".

Existem várias maneiras de fazer isso, mas a combinação aws de route53 e s3 funciona bem em meus pequenos sites.

Eu configuro o domínio com verificações de integridade para que, em falhas, o DNS envie usuários aos usuários para uma página html estática localizada em s3; Custa quase nada.

De acordo com a minha experiência, ter seu site dizendo "desculpe, mas estamos trabalhando nisso" faz muita diferença para os usuários. Uma conta no Twitter onde você pode se comunicar com os usuários é ainda melhor.

Isso leva muito tempo a atenuar a "perda de reputação", que pode ser o impacto mais significativo de uma interrupção.

consulte: https://aws.amazon.com/blogs/aws/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting/ para obter um guia sobre como configurá-lo.

O failover social do DynDns http://dyn.com/managed-dns/social-failover/ é um tipo de coisa semelhante.

Você pode fazer o seu próprio, executar suas verificações de saúde e, em seguida, criar um script para as alterações no DNS, desde que seus registros DNS tenham um TTL baixo e você tenha alguma maneira de manipulá-los programaticamente.

Nath
fonte
Essas verificações de integridade precisam ser executadas no mesmo servidor que hospeda o DNS? Não consigo imaginar como fazer a atualização condicional do DNS.
Dennis Gorelik
@DennisGorelik não necessariamente, mas seus registros DNS precisam de um TTL curto e o que quer que esteja fazendo sua verificação de saúde precisa poder mudar os registros rapidamente. Atualizou a resposta com mais informações sobre como conseguir isso.
Nath
TTL curto para DNS, combinado com a dependência da verificação de integridade, pode tornar o sistema geral um pouco menos estável (pode alternar mesmo que o servidor principal funcione bem). Na verdade, pode piorar a situação para os usuários finais, não melhor.
Dennis Gorelik
O TTL curto por si só não deve ser um problema para qualquer provedor DNS decente e, se você definir uma barra muito baixa nas suas verificações de saúde (por exemplo, Failover se não houver http 200s por 10 minutos), a estabilidade não será um problema. Como alternativa, você pode pular a parte de verificação de saúde e fazer uma transição manual. Isso significará um longo período de tempo em que os usuários terão "tempo limite de conexão esgotado" e outros erros feios, mas nenhuma chance de falsos positivos.
Nath
0

Você já pensou em usar algo como o EC2 que permitirá escalar com flexibilidade e também negar seus contras? Em última análise, é uma decisão econômica se o uso do EC2 vale a pena ou não, mas é pelo menos uma opção a considerar.

manku
fonte
-2

Para evitar a perda de dados, você deve examinar as configurações do Raid antes dos clusters. Você também deve configurar um IP de Failover que possa alternar de um servidor para outro em caso de desastre sem ter que esperar pela propagação do DNS.

yqt
fonte
De onde isto vem? o que faz você pensar que o pôster já não está usando RAID?
Chopper3
Chopper3. Tudo o que eu disse é que o Raid resolveria seu problema de perda de dados.
yqt 14/06
2
Quão? se um disco morreu certeza, mas o que dizer se o seu controlador foi ruim
Chopper3