- Uma topologia de rede multicamadas significa que você nunca deve executar o MySQL em seu servidor da web. Se você precisar de servidores MySQL redundantes ou de carga balanceada, então crie db1, db2, db3, etc. Não crie mais escravos do que realmente precisa, já que a replicação é uma transação de tudo ou nada com o MySQL padrão.
- O que eu normalmente faço é a replicação MASTER-MASTER. Isso normalmente não é recomendado devido aos principais riscos de conflito, mas eu escrevi alguns scripts que o servidor secundário executa no modo read_only para evitar gravações. Assim, se um servidor morrer, é fácil inverter o switch read_only e começar a aceitar as gravações.
- O NFS está bem; basta fazer o ajuste de desempenho e testes habituais.
- Dê uma olhada no haproxy para fazer o balanceamento de carga do Apache / HTTP e do TCP. Funciona muito bem com o MySQL. . Você pode executar o haproxy em uma VM.
- Ter VMs redundantes é ótimo, mas a execução em uma única máquina física ainda é um ponto fraco. Ter 10 VMs Linux idênticas competindo por recursos também pode ser um ponto fraco.
Comentário final: o ESXi é ótimo (não me leve a mal), mas eu não o usaria nessa situação. Dê uma olhada em um sistema de conteinerização como OpenVZ . O Proxmox fornece uma ótima interface de usuário para ele. O desempenho será significativamente melhor; cada VM pode usar todos os núcleos de RAM e CPU. (A menos que você o restrinja, é claro). O OpenVZ só funciona com o Linux, é claro. Mas qualquer webapp que funcione no Xserve também deve funcionar em um container Linux?