Use dois hospedeiros de website para melhor disponibilidade

1

Eu tenho dois servidores VPS de duas empresas de hospedagem diferentes. Eu quero fazer algum fallback para segundo VPS se primeiro não estiver disponível (de preferência automático). Entendo que, se eu tiver um único balanceador de carga com acesso raiz, posso configurá-lo para alternar entre diferentes servidores de back-end. Mas é possível fazer isso com o VPS de duas empresas de hospedagem diferentes? Obrigado.

    
por dbf 06.08.2013 / 10:45

6 respostas

6

Tudo depende um pouco da situação. Uma maneira padrão de obter maior disponibilidade é de fato o balanceador de carga. O problema é que você precisa de pelo menos dois loadbalancers

Um pequeno desenho para deixar claro:

                                  +-----------+
                             +--->| Backend 1 |
        +----------------+   |    +-----------+
WAN --->| Loadbalancer 1 |---+
        +----------------+   |    +-----------+
                |            +--->| Backend 2 |
                | Fallback        +-----------+
                v
        + - - - - - - - -+
        | Loadbalancer 2 |
        + - - - - - - - -+

Explicação

O balanceador de carga está diante de todos os proxies de anúncios de servidores de backend que solicitam todos os servidores de back-end. Um balanceador de carga secundário também permanece on-line e verifica se o balanceador principal está acessível. Se, em qualquer caso, o balanceador de carga primário for desativado, o balanceador de carga secundário assumirá seu IP e iniciará a veiculação.

Vantagens (desta confguração)

  • O balanceador de carga distribui o tráfego sem ter muita carga e pode, portanto, atender mais usuários do que os servidores de backend [1]
  • O balanceador de carga pode detectar se um back-end não pode mais lidar com o tráfego e pode parar de enviar tráfego para lá [2]
  • O balanceador de carga pode fazer o cache de arquivos estáticos para o backend
  • O balanceador de carga pode finalizar o SSL [3] [4]
  • Se o balanceador de carga falhar, ele poderá retornar ao balanceador secundário sem tempo de inatividade [5] [6]

Desvantagens

  • Custa mais dinheiro
  • Isso não ajuda se a rede na frente do balanceador cair.

Notas de rodapé

[1] É claro que o balanceador de carga precisa de mais largura de banda do que a soma da largura de banda máxima dos servidores back-end (isso não é necessariamente a largura de banda máxima da interface dependendo do aplicativo)

[2] Isso não é bom apenas. Se ambos os backends estiverem em sua capacidade máxima ou perto dela e o balanceador de carga reduzir um, o outro backend receberá todo o tráfego e a coisa toda se desmoronará. Isso requer bons ajustes

[3] Na verdade, o balanceador de carga deve fazer isso se ele não quiser rotear o tráfego cegamente por conexão.

[4] Talvez você precise restabelecer uma nova conexão ssl após o beckend se não confiar na rede backend

[5] Você precisa ter certeza de que, quando o primário for desativado, ele ficará inativo até que você o deseje novamente para evitar que coisas como toggeling e IPs sejam usados duas vezes

[6] Você deve garantir que a conexão entre os balanceadores de carga é muito, muito, muito estável

    
por 08.08.2013 / 13:28
3

Se você tiver um balanceador de carga único, não ajudaria muito em termos de alta disponibilidade, você ainda teria um único ponto de falha. CDN costumava ser um caminho a percorrer, mas você pode querer esperar por mais algumas respostas ...

    
por 06.08.2013 / 11:01
2

Mesmo que você tenha um balanceador de carga em um terceiro local (você pode configurá-lo no modo de espera ativo de alta disponibilidade), ainda estará propenso a problemas de rede. Como seus dois VPS estão presumivelmente localizados em dois datacenters diferentes, você pode acabar com um desempenho de rede ruim, pois o balanceador de carga entraria em contato com o VPS, faria as solicitações e encaminharia respostas aos clientes, assim se o datacenter que contém o balanceador ficar off-line ou tiver problemas de rede seus 2 VPS são inúteis.

    
por 08.08.2013 / 12:50
2

Um conf bruto pode ser:

  • monte uma partição do DRBD no servidor
  • mova conf / web / db na partição drbd
  • altere as configurações de DNS ao rodar os dois servidores

Estou fazendo as seguintes suposições:

  • você não tem muitas atualizações (você provavelmente matará a taxa de transferência da sua rede)
  • o site não é uma loja

De qualquer forma, não há detecção automática de falhas e resposta nesta configuração.

    
por 08.08.2013 / 11:09
2

Tudo o que foi publicado está correto e correto. No entanto, vejo uma abordagem diferente para alcançar a meta descrita (sistema de fallback hospedado por uma empresa de hospedagem de terceiros):

Fallback de DNS

Com esse método, o provedor de DNS verifica a disponibilidade do seu sistema principal e alterna para um sistema de fallback, caso o sistema verificado não responda adequadamente.

Existem muitos fornecedores no mercado que fornecem esse tipo de serviço (Amazon Route 53, DNS Made Easy ...). Além disso, você obterá um sistema DNS mais rápido (servidores DNS de escuta espalhados em todo o mundo).

Mas - isso não é alta disponibilidade! No caso de uma interrupção, é necessário algum tempo para reconhecer a interrupção e ajustar o DNS. Mas talvez já seja o suficiente para suas necessidades.

    
por 08.08.2013 / 19:26
1

Provavelmente é tarde demais para isso ser útil, porque você já tem o seu VPS configurado (embora eu não saiba com quais provedores)

Mas me foi apresentada uma situação semelhante há algum tempo. Se bem me lembro com o Amazon EC2 você pode ter dois nós em diferentes zonas de disponibilidade (existem zonas de disponibilidade dentro de regiões) e Elastic load balance entre os dois, as chances de duas zonas de disponibilidade diminuirem ao mesmo tempo, embora não impossíveis, são muito magro e assim o risco se espalha.

Existe uma taxa para zonas de disponibilidade de passagem de dados, mas pelo que me lembro é insignificante.

    
por 08.08.2013 / 13:56