Qual é a melhor maneira de adicionar servidores extras para confiabilidade no nosso caso?

1

Temos os seguintes servidores:

1 x servidor web executando o MySQL (um fórum).
B. 1 servidor web x executando o RT com o Postgres.
C. 1 servidor web x executando um aplicativo caseiro com o MonetDB como backend

Agora, é claro, queremos adicionar um pouco de confiabilidade aqui, adicionando um servidor extra a cada servidor web no caso de 1 servidor morrer, etc. Mas qual é a maneira melhor e relativamente mais barata de fazer isso?

  1. Obtenha um servidor extra para cada um deles e replique os bancos de dados usando as tecnologias apropriadas em cada caso? Replicação MySQL para A, Slony, etc para B, e eu realmente não sei como replicar o MonetDB, mas eu acho que é possível.

Por que eu não gosto disso: possível corrupção de dados devido a problemas de sincronização, ou seja, um power blip temporário pode fazer com que os dados sejam gravados no escravo, o mestre retorna e a replicação é interrompida. No caso de Slony, você não pode nem fazer isso, você tem que promover o escravo para um mestre primeiro, etc, AFAIK.

A outra coisa que eu não gosto sobre isso é ter que percorrer manualmente tudo isso e descobrir quem está fazendo o que agora e sincronizar as coisas, etc.

2. Obtenha 2 servidores com uma quantidade razoável de armazenamento e configure o DRBD através deles.

Como eles terão um único IP compartilhado, coloque todos os bancos de dados, por exemplo, MySQL, Postgres e Monet no armazenamento do DRBD. A coisa boa sobre o DRBD é que não teremos um único ponto de falha, pois mesmo se perdermos uma parte do cluster, o outro servidor poderá assumir o controle, tornando-o muito mais resiliente. E meu entendimento é que os servidores da web acima desse nível podem simplesmente fazer o failback e a devolução sem qualquer necessidade de se preocupar com replicação e sincronização de coisas, etc.

3.VMs?
Qual é a melhor prática ao usar VMs para configurar algo assim?

    
por afa 02.06.2009 / 12:32

4 respostas

3

As VMs não o ajudarão muito aqui, no que diz respeito à alta disponibilidade, embora possam ser úteis para simplificar a consolidação.

Sua pergunta não pode ser respondida sem dois dados importantes: seu orçamento e a carga. Se você tem um orçamento limitado, mas sua carga é baixa o suficiente, você pode facilmente mover tudo isso para dois servidores em uma configuração ativa / passiva.

Se o seu orçamento permitir, você poderá considerar a aquisição de uma SAN (ou, preferencialmente, duas para HA). Nesse caso, você ainda pode ter os bancos de dados, possivelmente virtualizados, no mesmo servidor que os aplicativos, mas com os dados gravados na SAN. Bancos de dados são principalmente ligados a E / S.

Outra rota é, na verdade, ter um cluster de failover de dois nós para os bancos de dados e ter as partições de banco de dados replicadas por meio do DRBD; ele funciona muito bem. No entanto, você quer ter certeza de que cada um tenha seu próprio disco; para isso eu recomendaria usar algo como uma máquina 2U com 6 discos com ataque de hardware com bateria.

Se você tiver ainda mais tráfego, mas ainda quiser manter um orçamento baixo, tente o seguinte:

  • 2x servidor de banco de dados na configuração ativa / passiva replicada com DRBD
  • 2 servidores front-end que executam os aplicativos, ambos ativos
  • Executar um balanceador de carga de software em um VIP no front-end, apenas um deles receberá conexões de entrada, mas ele será reenviado localmente ou para o outro nó. Eu recomendo Haproxy

Cuidado com a carga embora; Se um dos nós falhar quando você estiver no pico de uso, você terá muitos problemas, mas pode ser uma boa maneira de lidar com o ocasional slashdotting.

    
por 02.06.2009 / 13:35
2

Não use o drbd para o failover do mysql. Use a replicação master-master e coloque haproxy na frente deles para balancear a carga da conexão mysql e fornecer failover. Em seguida, coloque o heartbeat nos servidores haproxy. Failover completo com balanceamento de carga.

drbd é bom para coisas como arquivos da web com o nfs rodando sobre ele.

    
por 28.01.2011 / 04:58
1

Para uma solução que está lá "no caso" suas primárias falham e não para balanceamento / failover freqüente, uma combinação de # 2 & # 3 funcionaria bem. Obtenha uma caixa com recursos razoáveis para armazenar e executar VMs para cada sistema primário. Use o DRBD para simplificar a replicação dos dados. Para adicionar sinos e assobios, você pode jogar no heartbeat para failover automatizado ou não. E, claro, replicação! = Backup.

    
por 02.06.2009 / 13:38
0

Por que não usar o VMWare / virtualização para criar um cluster de dois servidores + DB, cada um executando todos os seus vários bancos de dados e um segundo cluster de servidores web + dois servidores, cada um servindo todos os seus diversos aplicativos da Web.

Dessa forma, você precisa do menor número possível de servidores e possui uma solução de dimensionamento integrada que permitirá que você cresça / mova seus pontos de acesso conforme eles ocorrem e também fará o melhor uso de seus recursos.

    
por 02.06.2009 / 13:59