Balanceamento de carga do SQL Server 2008

4

As informações que encontrei na Web até agora indicam que o SQL Server 2008 não oferece suporte ao balanceamento de carga verdadeiro.

Isso é verdade? Eu não sou capaz de encontrar documentação decente no site da MS, então qualquer link seria apreciado.

Além disso, as diferenças entre ativo / ativo e ativo / passivo.

Eu presumo que você não pode ter mais de uma instância do SQL Server conectada ao mesmo banco de dados, certo? Porque isso indicaria um verdadeiro balanceamento de carga.

Portanto, Ativo / Ativo é apenas quando você tem duas instâncias separadas do SQL Server acessando dois bancos de dados COMPLETAMENTE SEPARADOS? Se um falhar, apenas compartilha a carga na instância restante? Esta configuração só é realmente usada se tivermos dois bancos de dados COMPLETAMENTE SEPARADOS então?

Então, no meu caso, onde eu tenho apenas um db, eu tenho que ir para Active / Passive como a opção High Availability?

Estas são perguntas básicas, mas não consegui encontrar respostas bastante básicas!

Obrigado Duncan

    
por Duncan 03.07.2009 / 12:16

5 respostas

6

O que você descreve basicamente é chamado Clustering do SQL Server . Refere-se a um grupo de dois ou mais servidores (nós) que atuam juntos e são vistos como um único servidor virtual para os clientes.

Os clusters do SQL Server podem ser configurados como Ativo / Ativo ou Ativo / Passivo em um cenário de dois servidores. Ambos os nós do Microsoft SQL Server Cluster são dedicados a executar pelo menos uma única instância do SQL (Active-Active) ou pelo menos um desses nós é reservado como um standby para aceitar o failover de um SQL com falha Instância do servidor (ativo-passivo).

Aqui estão alguns artigos que você pode ler:

Algum artigo descrevendo outras opções (no nível do aplicativo):

por 03.07.2009 / 12:34
3

O clustering é uma solução de alta disponibilidade, não uma solução de escalabilidade. O chamado "Ativo / Ativo" é na verdade uma reutilização dos nós em espera para implantar outra instância completamente separada.

Para solicitações de Transact-SQL de leitura e gravação, não há balanceamento de carga em nenhum formulário. Para apenas Transact-SQL (relatórios) rad, existe a opção do ' Banco de Dados Compartilhado Escalonável '.

A única tecnologia que suporta o balanceamento de carga 'out-of-the-box' no SQL 2005 e SQL 2008 é o Service Broker, através da implantação de rotas de balanceamento de carga. Mas duvido que isso seja de algum interesse para você.

    
por 03.07.2009 / 21:44
3

Adicionar simplesmente mais nós a um cluster do SQL não adiciona capacidade de processamento, apenas aumenta a disponibilidade, pois você tem mais nós para permanecer on-line. O processamento de consultas de leitura / gravação é limitado a um nó, não há conceito de balanceamento de carga round-robin.

Este é um white paper da Microsoft intitulado Desempenho e escala do SQL Server 2008 link

Este white paper discute as diferenças entre o Scaling Up e o Scaling Out do SQL Server. Como apontado por Remus, há um conceito de um banco de dados compartilhado e escalável para bancos de dados somente leitura (pense em grandes armazéns de dados).

Você pode usar a replicação ponto a ponto para processamento distribuído, se isso atender às suas necessidades. Introduz outras complicações, é claro.

    
por 10.07.2011 / 05:44
2

Você pode querer ler sobre o MySpace e como eles lidaram com cargas altas com o SQL Server. É uma série de truques, mas não há balanceamento de carga.

link

    
por 07.07.2009 / 18:20
1

Primeiro: o SQL Server não suporta balanceamento de carga se a caixa permitir que o Windows faça o trabalho. Você pode instalar 2 instâncias do SQL Server e configurar a "replicação ponto a ponto" para que você tenha dados consistentes nos dois servidores. Você realmente trabalha com 2 (!) Bancos de dados diferentes. Mas então podem ocorrer conflitos durante as instruções DML no mesmo registro de dois usuários (um por acaso está no servidor 1 e o outro no servidor 2 ..). É sua tarefa evitar tais conflitos por seu planejamento e programação de front-end. O SQL Server não pode assumir essa tarefa, infelizmente. Por outro lado, "Cluster failover" é possível quando uma LOJA COMPARTILHADA é usada para todos os nós participantes. Portanto, o sistema está trabalhando em UM banco de dados distinto e não há balanceamento de carga (!), Mas apenas failover. Refletir que não é o mesmo! Se um nó falhar, o outro assumirá suas tarefas imediatamente. Até agora espero que isso possa ajudá-lo. Thomas

    
por 27.10.2011 / 22:27