A melhor maneira de sincronizar servidores de aplicativos em um aplicativo da web de carga balanceada?

2

Estou tentando descobrir como balancear a carga de um aplicativo, como o WordPress. Minha matriz de servidores ficaria assim:

  1. Balanceador de carga.
  2. Servidor de banco de dados.
  3. 2 ou mais servidores de aplicativos.

A maioria, se não todo o conteúdo, será armazenada no banco de dados, então o conteúdo não será um problema, e as implementações também serão resolvidas com ambos os servidores clonados de um repositório remoto do GIT, mas o que acontecerá se alguém enviar uma imagem para um servidor? Como seria sincronizado com o outro?

Eu estou supondo que eu poderia fazer isso com o rSync, mas eu sinto que isso é meio desatualizado. Qualquer recomendação seria muito apreciada.

    
por Zach Russell 25.02.2013 / 14:38

2 respostas

3

Parece que você precisa analisar DRBD , glusterfs e produtos semelhantes para replicação em tempo real de seus arquivos. Naturalmente, essas soluções serão muito mais eficientes se o atraso da rede for muito pequeno, como implantá-las na mesma LAN.

    
por 25.02.2013 / 14:43
1

Se os dados enviados pelo usuário não forem armazenados em cache e / ou estiverem armazenados em um local de rede centralizado, não haverá problemas.

Os dados em cache são definitivamente um problema. Existem pelo menos algumas abordagens gerais.

  • Mantenha a afinidade de sessão (sessões "fixas") com um determinado servidor web / de aplicativos. Isso essencialmente renderiza o aplicativo da Web stateless "stateful" e o aplicativo agora tem um tempo limite de conexão implícito Geralmente, o balanceador de carga tem um tempo limite e o servidor da Web tem um tempo limite de conexão e / ou um tempo limite de keep-alive HTTP. Os tempos limite do balanceador de carga podem ser mais difíceis de resolver, pois seus recursos podem ser mais limitados do que apenas o aplicativo / servidor da web.

  • Se possível, tenha um mecanismo incorporado ao aplicativo para sincronizar os dados criados / modificados / excluídos entre os servidores da web / de aplicativos parceiros.

Uma solução intermediária de armazenamento em cache, como o Azure AppFabric, pode não ser viável. Muitos aplicativos que armazenam em cache grandes dados não podem obter o mesmo desempenho ao usar um cache intermediário, embora isso deva ser determinado por meio de testes.

    
por 25.02.2013 / 15:47