Múltiplas instâncias de um site em um único servidor - atualize uma de cada vez

4

Gostaria de hospedar uma única máquina física com duas cópias do mesmo site para minimizar o tempo de inatividade durante as atualizações .

Acho que posso colocar um balanceador de carga na frente da máquina, atribuir dois IPs a essa máquina e definir os IPs no balanceador de carga.

A questão é quando eu preciso atualizar o site (seu código não é a infra-estrutura). Eu acho que eu poderia minimizar o tempo de inatividade tirando uma das 'instâncias' do site, atualizando-a e depois colocando-a de volta online e fazendo o mesmo com a outra.

Isso é viável?

Vale a pena?

    
por Andrei Rinea 07.03.2012 / 09:14

2 respostas

2

Claro, isso é o que fazemos. Temos dois servidores web, A e B. Temos haproxy sentado na frente deles, balanceando respeitosamente os pedidos entre eles. Assim como você, nós não armazenamos os dados da sessão de uma forma que uma solicitação deva retornar ao servidor de origem.

Quando queremos fazer uma atualização, retiramos o Servidor A do pool. Realizamos a atualização e testamos o site internamente. Em seguida, colocamos o Servidor A no pool e, no mesmo momento, retiramos o Servidor B do pool. Em seguida, atualizamos o Servidor B e o colocamos de volta.

Upside: atualizações do site com 0 downtime.

Desvantagem: Durante a atualização, você não tem balanceamento de carga ou redundância. Para resolver isso, você tem muito mais servidores no mix.

Quanto a se vale a pena ou não, só você pode responder isso. Nosso software é incrivelmente complexo e uma implantação pode levar mais de 5 minutos (e isso é totalmente automatizado), e está em uso praticamente 24/7. Então, foi um acéfalo para nós.

Se o seu site só obtiver tráfego esporadicamente ao longo do dia, ou principalmente durante as horas de trabalho, e você não estiver forçando as barreiras do que um servidor da Web pode suportar, talvez não valha a pena. Lançar um banner de manutenção por 10 segundos enquanto svn export runs pode ser uma solução mais apropriada.

    
por 07.03.2012 / 11:09
1

Dê uma olhada no WebFarmFramework & ARR. O WFF irá automatizar a implantação do código, bem como as configurações do IIS para você. Além disso, se você usar o balanceador de carga, os nós ficarão off-line durante a atualização.

Na verdade, estou pesquisando o mesmo problema agora, então não posso garantir isso em produção, apenas uma outra ideia para analisar.

    
por 09.03.2012 / 16:15