Configuração rápida e simples de farm da web

1

Estou usando o asp.net 3.5 e o SQL Server 2008 e quero configurar um farm da Web muito simples.

Adquiri 2 servidores VIRTUAL, NÃO uso viewstate ou sessões em minhas páginas, apenas cookies, então tudo que preciso fazer é ter 2 versões do mesmo banco de dados, em cada servidor virtual (suponho) e 2 versões de os binários / páginas da web em cada servidor (suponho). O que eu preciso é de algum tipo de guia para configurá-los para que, quando um usuário fizer uma solicitação:

a) Os servidores são balanceados por carga e a solicitação é enviada ao servidor menos carregado b) Sempre que uma alteração no banco de dados SQL é feita, ela é refletida no outro banco de dados também

Esse som é possível?

    
por Nick Kavadias 22.10.2009 / 12:44

3 respostas

1

Para responder à sua pergunta, sim, isso não só parece possível, mas também é possível.

Primeiro, eu estou supondo pela frase que você comprou 2 servidores virtuais que estes são de alguma empresa de hospedagem? OK, vamos supor que isso seja verdade, você honestamente seria melhor usar um como servidor de banco de dados e outro como o servidor web, se você está limitado a apenas os dois. Se você acha que terá tráfego suficiente para exigir dois servidores da Web, obtenha um terceiro servidor e execute-o como seu servidor de banco de dados. Se você obtiver dois servidores web, sim, você quer seu código nos dois servidores.

Se você realmente quiser dois servidores da Web e dois servidores de banco de dados e comprar apenas dois servidores, NÃO poderá executá-los no modo ativo ativo no mesmo banco de dados. As atualizações só podem ser enviadas para um mestre e, em seguida, a replicação pode propagar essas alterações para os escravos.

A maneira simples de balancear a carga é fazer o DNS round-robin, isso é simples, rápido e não é muito difícil de configurar e faz um bom trabalho ao distribuir a carga. Com base na sua pergunta, estou fazendo suposições de seu nível de habilidade recomendando isso como ponto de partida.

Isso realmente risca a superfície e, se você levar a sério esse site e acreditar honestamente que terá tráfego suficiente para exigir uma configuração de balanceamento de carga, encontre alguém que conheça o lado dos sistemas para ajudá-lo.

    
por 22.10.2009 / 13:38
1

O que você descreve lá, do ponto de vista do banco de dados, é um esquema de replicação "master-master" ( veja aqui algumas anotações sobre isso o que provavelmente significa que você precisa do SQL Enterprise Edition (uma licença para cada servidor) que não é barato - você não será capaz de fazer isso com o Express Edition e provavelmente não com o Standard Você poderia tentar implementar isso na lógica do seu aplicativo, mas isso seria uma lata complexa de worms.Se os dois servidores estiverem na mesma vlan no DC, você poderá ter ambos os servidores acessando o mesmo banco mestre em solicitações quando eles precisarem. para escrever qualquer coisa, mas ler a partir de seus bancos de dados individuais para solicitações somente leitura - isso pode ser feito com replicação mestre-escravo, o que é uma perspectiva mais fácil (e potencialmente mais barata): cultivar um banco de dados SQL para muitas máquinas é muito mais difícil do que cultivar os servidores da web que acessam o banco de dados.

A maneira mais fácil de passar solicitações para dois servidores da Web diferentes (se, como na situação, descrever onde todas as solicitações HTTP (S) transportam todo o estado de que precisam, em vez de serem mantidas em uma "sessão" do servidor , você não precisa de nada como "sessões persistentes") é usar o DNS round-robin tendo vários registros A para o nome relevante. Veja aqui . Isso não leva em consideração o fato de um dos servidores estar inativo, portanto, não é uma solução para alta disponibilidade e você tem pouco controle sobre a balança (não é possível decidir qual máquina recebe os acessos para reduzir os hits em um servidor quando ele já está ocupado). Para HA e balanceamento controlado, você precisa de uma máquina extra para que todos os pedidos sejam atendidos e decidir qual servidor web real recebe o resultado.

Escalar seu aplicativo em vários servidores (para desempenho, alta disponibilidade, localização geográfica ou alguma combinação dos itens acima) não é tão simples quanto parece.

    
por 22.10.2009 / 14:27
0

Por que você precisa de 2 cópias do banco de dados? Que tipo de aplicativo você está hospedando? está perto de sincronização em tempo real para os bancos de dados bom o suficiente?

por que não apontar dois servidores da web para um único servidor de banco de dados? servidor sql de escala na maneira que você descreveu não é algo para ser tomada de ânimo leve & isso definitivamente não será considerado um rápido & configuração simples!

    
por 22.10.2009 / 14:56