Usando o HAProxy para balanceamento de carga do SQL Server 2008

1

É possível / viável / razoável usar o HAProxy para balancear a carga de três servidores de banco de dados do SQL Server 2008?

Aqui está a nossa situação: temos dois servidores da Web com balanceamento de carga no Amazon EC2. Atualmente, estamos usando um servidor de produção SQL Server 2008 DB. Esse servidor está começando a ficar sobrecarregado, então gostaríamos de adicionar mais dois servidores de banco de dados e implementar uma solução de balanceamento de carga.

No Amazon EC2, não podemos usar um endereço IP virtual, o que nos impede de usar o NLB (Balanceamento de carga de rede do Windows) ou qualquer outro método de balanceamento de carga que exija um VIP.

Nosso aplicativo é pesado para leitura, mas não podemos separar as leituras das gravações, portanto, a solução de balanceamento de carga precisa levar em conta isso.

Estamos planejando usar o recurso de replicação integrado do SQL Server para manter todos os três DBs atualizados (entendemos que haverá algum tempo de atraso, mas isso é aceitável).

Quaisquer pensamentos ou sugestões são bem-vindos e agradecemos antecipadamente por sua ajuda.

    
por htxryan 07.02.2011 / 17:20

1 resposta

1

Is it possible/feasible/reasonable to use HAProxy to load-balance three SQL Server 2008 database servers?

Não, não é. E mesmo se você pudesse usar o NLB do Windows, isso também não funcionaria de forma confiável.

Quando seus servidores de aplicativos conversam com o SQL Server, o protocolo de comunicações TDS mantém o 'estado'. Pense em transações ou consultas demoradas, por exemplo.

HAProxy e NLB não entendem o TDS. Se você acabou de usar o HAProxy para balancear a carga no modo TCP / IP, a conexão pode ser alternada bem no meio de uma transação - fornecendo resultados altamente imprevisíveis e possivelmente perda de dados.

AFAIK, não há balanceador de carga plug-and-play para o SQL Server .

    
por 08.02.2011 / 01:29