Use keepalived, ucarp, heartbeat ou algo semelhante para ter um IP mestre virtual que responda aos aplicativos php.
Estou tentando configurar a replicação MySQL master-slave altamente disponível. Eu pretendo ter dois servidores em redes diferentes, com um funcionando como mestre e outro funcionando como escravo da seguinte forma:
A B
10.0.1.0/24 | 10.0.2.0/24
__________________________
Master -----|---> Slave
10.0.1.20 | 10.0.2.20
Meus servidores de aplicativos se conectarão a (e executarão as gravações do mysql em) 10.0.1.20
se o sistema estiver totalmente operacional.
Em uma condição de failover, o escravo será promovido e o mestre ficará assim:
A B
10.0.1.0/24 | 10.0.2.0/24
__________________________
(DOWN) | Master
10.0.1.20 | 10.0.2.20
Portanto, o servidor A
está inativo e B
foi promovido para o MySQL mestre. No entanto, preciso que meu servidor de aplicativos saiba que B
foi promovido e todas as futuras gravações devem ser feitas para 10.0.2.20
.
Isto é trivial para o caso em que há apenas um mestre e um escravo, mas como isso deve ser tratado se houver um mestre e três escravos? Como o aplicativo PHP saberá para qual servidor mysql gravar? Eu preciso que a promoção do escravo mysql seja automática e ocorra dentro de 5 segundos. Não posso ter os dois servidores compartilhando um VIP usando heartbeat porque eles estão em duas redes diferentes em locais físicos completamente diferentes.
Como esse failover é normalmente tratado com topologias semelhantes?
Use keepalived, ucarp, heartbeat ou algo semelhante para ter um IP mestre virtual que responda aos aplicativos php.
Tags mysql mysql-replication