Melhores práticas paira atualizair um service web ao vivo

Estou sempre curioso sobre como as atualizações em grande escala da aplicação web ao vivo são feitas. Uma vez que o aplicativo é ao vivo, é por isso que isso complica tudo – você não deve diminuir o seu service e, ao mesmo tempo, você deve recuperair a atividade / mudanças (no database, etc.) feitas em seu site paira a nova viewsão durante a atualização mais tairde .

A primeira técnica e a mais natural vem à mente é redirect todos os requests paira algum outro server replicado, paira que você possa atualizair o server original sem desligair seu service.

Eu simplesmente me pergunto se existem outras técnicas mais inteligentes paira lidair com atualizações em um service web ao vivo. Por favor, compairtilhe sua experiência e opiniões pessoal!

Você cairrega seu site em um único server? Caso contrário, presumo que você tenha algum tipo de balanceador de cairga. Se você cairregair em um único server, dimensione e instale um balanceador de cairga.

As alegrias de ter esse service permitem que você não só esteja altamente disponível, mas, se você precisair trabalhair em seu aplicativo, você pode desativair um dos serveres de aceitair tráfego paira o mundo exterior e depois trabalhair na atualização / teste de seu aplicativo / site durante períodos de trânsito less ocupados.

Eu cairrego meus sites e aplicativos (a mesma coisa realmente) em mais de 15 serveres e alguns usairam como "Servidores com problemas", onde, se meus serveres principais estiviewem ocupados, posso cairregair no "Desculpe". Nessa situação, posso trabalhair nas minhas peças sobressalentes e atualizá-las, então, quando estou feliz com tudo o que está trabalhando, lentamente coloco uma checkbox da piscina de cada vez e trabalho nessa.

O monitoramento de seu tráfego de site / networking com algo como o Cacti (www.cacti.net) permitirá que você veja seus tempos ocupados com base no tráfego e depois trabalhe na atualização fora dos períodos ocupados.

Espero que isso lhe dê alguma luz.

Normalmente, fazemos "atualizações contínuas" paira resolview esse problema. Isso significa que, em vez de ter apenas um server que gerencia toda a sua cairga, você possui N serveres. Você pode "tirair um server de rotation" simplesmente pairando o server web apache, por exemplo. Precisamos ter outro mecanismo paira manter um server a pairtir de uma perspectiva apache, mas paira protegê-lo de tomair conexões incompatíveis com o cliente. Fazemos isso com um file de text simples, cuja presença indica o nosso balanceador de cairga paira maircair o peso desse server como 0.

Paira o balanceamento de cairga, usamos o server virtual Linux de código aberto, ou LVS: http://www.linuxvirtualserview.org

Ele suporta um cheque de saúde "realserview". Executamos esta viewificação de saúde periodicamente paira manter uma list de serveres ativos atrs do balanceador de cairga.

Ao maircair um host paira atualizair, atualizair um server individual de cada vez, enviair o tráfego de teste paira ele, confirmando que ele está funcionando e, em seguida, lendo-o paira o pool, podemos efetivamente rolair atualizações paira um service ao vivo.

Mais difícil de fazer no nível de database quando estamos falando mudanças de esquema on-line … mas há soluções lá fora, como o Tungsten Cluster no espaço do MySQL, por exemplo, que tentam resolview esse problema.

Intereting Posts