O Microsoft Azure exige que os aplicativos utilizem duas instâncias em vários data centers para atingir seu SLA de "alta disponibilidade" e garantir que seus sites não fiquem inoperantes para manutenção de rotina. Eles ainda dizem quais pares de data centers nunca irão para manutenção ao mesmo tempo.
Tudo bem, mas como você faria isso facilmente na prática para um aplicativo como o WordPress com um banco de dados MySQL na mesma VM? Não sou estranho ao balanceamento de carga entre duas VMs, mas a instalação de replicação de banco de dados me ilude. Não queremos duas versões dos dados que possam ficar fora de sincronia. A replicação do MySQL parece exigir uma configuração mestre-escravo que falharia em sincronizar as alterações no banco de dados mestre se um usuário aterrisse na instância escrava.
Estou apenas entendendo mal esse conceito? Qualquer ajuda é muito apreciada!
Respostas:
As más notícias: A principal base de código-fonte aberto do Wordpress faz algumas suposições sobre a execução em um único servidor (conteúdo wp, upload de usuários e biblioteca de mídia, para citar alguns)
As boas notícias: praticamente todos os provedores de nuvem (incluindo o Azure) têm abstrações que permitem solucionar essas limitações de design.
Fundamentalmente, você abordará as seguintes preocupações:
Gerenciando sessões SE você estiver permitindo que os usuários acessem os sites. Nesse caso, será necessário garantir, quando eles fizerem login no servidor 1, que todas as suas solicitações futuras sejam roteadas para esse servidor (sessões permanentes) ou que não importa qual servidor eles acessam porque as sessões são gerenciadas por algum outro mecanismo (via clustering de sessões do Zend Server , por exemplo).
Gerenciamento de logins de administrador SE você estiver permitindo que alguns usuários acessem o back-end para gerenciar o conteúdo (semelhante ao acima).
Escolhendo o sistema de banco de dados que também é altamente disponível. Não adianta ter dois servidores front-end se o travamento do banco de dados derrubar todo o sistema. Você precisará alavancar a replicação Master / Slave do MySQL via ClearDB ou modificar o WordPress via plug-in para alavancar o SQL Server para poder usar seus sistemas de cluster nativos . Isso significa que você precisará de pelo menos 4 VMs se quiser gerenciar a camada de banco de dados (2 x App e 2 x DB). Veja como isso pode parecer:
NOTA - para garantir um failover confiável e proteger a segurança do sistema, geralmente é usada uma sub-rede de rede TERCEIRA para conectar os dois nós do banco de dados através de um canal privado separado das outras redes de comunicação com as quais os servidores de aplicativos usam para conversar. o banco de dados e os servidores de aplicativos usam para se comunicar com o mundo exterior.
Habilitando o Pool de conexões para maximizar o desempenho e a confiabilidade das conexões com o banco de dados do servidor de aplicativos.
Aproveitando um plug-in de cache, como o W3 Total Cache ou o Super Cache, para minimizar a carga nos servidores front-end.
Os guias a seguir oferecem detalhes sobre como você pode lidar com cada um dos desafios acima. Existem várias maneiras de lidar com cada uma delas no Azure; portanto, você decide como deseja atacar cada desafio e, em seguida, lida com as restrições que cada uma dessas opções impõe enquanto você trabalha para cima e para baixo na pilha.
fonte