Melhor Prática: Usando o Asp.net e o Microsoft SQL 2005, qual é a melhor maneira de balancear a carga / atingir alta disponibilidade em dois locais físicos?

4

Eu perguntei isso no StackOverflow quando o serverfault estava na versão beta. Dando uma segunda chance.

Eu tenho 4 servidores em dois locais fisicamente separados. Cada servidor está executando o Windows Server 2003 Standard e a edição padrão do Microsoft SQL Server 2005.

  • Servidor A1 e A2 no datacenter A
  • Servidor B1 e B2 no datacenter B

Esses servidores estão conectados uns aos outros com uma VPN pela Internet.

Qual seria a melhor maneira de fornecer alta disponibilidade entre os dois datacenters?

Eu considerei as seguintes ideias.

Cenário A

  • DNS Round robin entre o Datacenter A e B
  • Espelhando bancos de dados nos servidores A1 e B1 pela VPN
  • Os servidores A2 e B2 terão registros enviado para eles como Warm Standbys para recuperação de desastres.
  • Todos os servidores da Web apontarão o banco de dados tráfego sobre a VPN para o servidor A1 até failover em que eles vão pedidos diretos para B1
  • Os servidores estarão executando o Microsoft Software do balanceador de carga.

Cenário B

  • Espelhar bancos de dados nos servidores A1 e A2
  • A1 e A2 estarão executando o Microsoft Software do balanceador de carga
  • B1 e B2 estarão executando o Microsoft Software do balanceador de carga.
  • Enviar para os servidores B1 e B2 como aquecidos standby para troca manual entre datacenters se Datacenter A desce registro de mudança de DNS para aponte para Datacenter B.

Eu sou um programador C # e não um designer de sistemas, portanto estou sem ideias. Estou tentando trabalhar com a configuração de hardware e data center que temos. Se necessário, podemos comprar balanceadores de carga de hardware.

    
por Josiah Peters 24.08.2009 / 09:42

3 respostas

1

Acho que se você quiser fazer algo de forma confiável e sem uma conta de trânsito enorme, você precisa de uma conexão dedicada entre os dois datacenters (fazemos isso e temos uma rota de backup pela internet com um custo de roteamento maior, caso haja um problema com o link dedicado).

Realmente, o ponto de partida para isso é definir o custo de inatividade do negócio - você precisa considerar se o aumento no custo de um failover frio versus quente versus quente é garantido. Sem saber mais sobre isso, é difícil dar uma boa orientação sobre as diferentes opções disponíveis.

    
por 28.09.2009 / 14:57
0

A solução mais barata que configuramos para nossos clientes são múltiplos bancos de dados somente leitura (o envio de logs é geralmente suficiente) - Então, para quaisquer atualizações no banco de dados, elas são enviadas para o servidor primário - com um "sinalizador" no código. o servidor está inativo (que é automaticamente acionado em uma interrupção). Se esse sinalizador estiver definido, não serão permitidas gravações de alguma maneira amigável.

Às vezes, uma configuração como "admin.example.com" pode ser usada em um único servidor / servidor SQL para todas as atualizações - especialmente em um cenário em que você tem uma base de clientes que faz atualizações e uma base de "usuários" basicamente vê tudo o que os clientes publicaram (listagens de imóveis, por exemplo, este modelo se encaixa muito bem).

Quanto ao link dedicado em vez da VPN - Se você estiver em dois data centers bem conectados, provavelmente haverá pouca preocupação com o tráfego entre eles - e esse tráfego será menor que um link dedicado. Mas você verá uma diminuição significativa no desempenho usando o link VPN em vez de uma LAN, especialmente se você tiver um aplicativo sql "tagarela" (muitas pequenas consultas). Dedicado ou VPN terá essa diminuição, embora as VPNs usem o TCP em vez do UDP, o que praticamente duplica a latência.

Quanto ao DNS: Configurar servidores DNS em cada local para que você tenha DNS redundante, você pode ter cada ponto DNS apenas para os servidores locais em vez de Round Robin (dessa forma, se um servidor dns não pode ser alcançado você assume o servidor da Web nesse local também está inativo). Caso contrário, com apenas round robin básico, você pode relatar o registro "A" para o local de descida.

No entanto, essas coisas não são apenas uma configuração simples, você precisa gastar um pouco de dinheiro no planejamento para que tudo funcione corretamente. Um segundo local geralmente eu digo às pessoas para orçamentar pelo menos 3x um único custo de localização - especialmente na fase de planejamento - Mais tempo para os programadores implementarem as mudanças necessárias.

Temos algumas opções melhores onde dividimos um cliente entre dois prédios na mesma vizinhança (no Equinix Ashburn (DC) há vários prédios). Nós executamos nossas conexões de backbone divididas entre edifícios - o que nos dá failover entre edifícios e ainda todas as vantagens de uma LAN para planejamento. Se você precisa apenas de 2-8 servidores, encontre alguém como nós para configurá-lo e ajudar no planejamento será muito mais barato do que tentar fazê-lo sozinho.

O compartilhamento de data centers na costa leste / costa oeste está além de pessoas com orçamento / complexidade de 4 a 8 servidores quase sempre.

Boa sorte.

    
por 19.11.2010 / 22:51
0

E quanto ao loadbalancing para o EC2, isso custaria menos do que um segundo datacenter?

    
por 21.12.2011 / 02:15