Comprei recentemente um segundo servidor da Web porque me preocupo com a falha de hardware do meu antigo servidor. Agora que eu tenho esse segundo servidor que eu gostaria de fazer um pouco mais, basta ter um servidor em espera e replicar o dia todo. Enquanto estiver lá, eu também posso tirar vantagem disso!
Eu tenho um site alimentado pelo Ubuntu 12.04, nginx, php-fpm, apc, mysql (5.5) e couchdb.
No momento, estou testando configurações em que posso obter failover E fazer bom uso do hardware extra para respostas mais rápidas / carga distribuída.
A configuração que estou testando agora envolve heartbeat para failover de ip e dois servidores idênticos. Dos dois servidores, apenas um possui um endereço ip público. Se um servidor trava, o outro servidor assume o endereço IP público. Em uma requisição recebida, o nginx encaminha a requisição para php-fpm para o servidor a do servidor b (50/50, se ambos os servidores estiverem ativos). Uma vez que o pedido foi enviado para o php-fpm, ambos os servidores olham para localhost para o servidor mysql. Eu uso master-master mysql replicação para isso. O sistema de arquivos é sincronizado com o lsyncd.
Isso funciona muito bem, mas estou lendo é desencorajado pela comunidade (mysql).
Outra opção que eu poderia pensar é usar um servidor como um mestre mysql e um servidor como um servidor web / php. Os servidores ainda sincronizariam seu sistema de arquivos, ainda executariam o mesmo software duplicado (nginx, mysql), mas a replicação master slave do mysql poderia ser usada. Enquanto os servidores incomodarem, eu poderia preferir que o nginx ouça o ip a e o mysql ao ip b. Se um servidor estiver inativo, o outro servidor poderá assumir a tarefa do outro servidor, simplesmente por comutação de IP.
Mas eu sou completamente novo nisso, então eu valorizaria muito o seu aconselhamento especializado. Qualquer uma das duas configurações é boa? Se você tiver alguma opinião sobre isso, por favor me avise!
PS, virtualização, hospedagem em diferentes locais ou configurações ativas / passivas não são soluções que eu estou procurando. Acho servidor virtual muito lento ou muito caro. Eu já tenho um failover passivo em outro local. Mas, em caso de falha, descobri que o site ainda estava inacessível por muito tempo devido ao cache do DNS.