Eu tenho um par de servidores CentOS Linux em cada datacenter. Eles têm failover em cada datacenter, gerenciado por heartbeat e DRBD (sei que são ferramentas desatualizadas, mas são estáveis, portanto não há necessidade de alterá-las).
Eles também têm a capacidade de alternar entre datacenter, para tornar ativo o datacenter leste, enquanto o oeste se torna passivo. Mas este é um processo de engenharia manual, e tudo bem.
O datacenter oeste é atualmente o ativo, o datacenter leste é passivo.
serverA.west <-> serverB.west <-----------> serverA.east <-> serverB.east
ACTIVE DATA CENTER PASSIVE DATA CENTER
Servidores podem executar o mysqld e um aplicativo Java.
O aplicativo Java neste servidor deve ser executado apenas no host Principal no datacenter ativo (por exemplo, serverA.west). Se outra instância do aplicativo Java for iniciada no host secundário (serverB.west) ou em qualquer host no datacenter passivo, há um risco de problemas de divisão cerebral.
Hoje serverA.east foi reinicializado, o que causou a pulsação do computador para o serverB.east. O Heartbeat então iniciou o aplicativo Java no serverB.east, o que não queremos que aconteça.
O Heartbeat também iniciou o mysqld em serverB.east, o que é correto, porque a replicação do MySQL deve continuar, replicando as mudanças do datacenter oeste continuamente para que o East DC esteja pronto para assumir quando necessário.
/etc/ha.d/haresources nomeia os scripts /etc/init.d para o mysqld e a aplicação Java como os recursos para iniciar.
Queremos permitir que o heartbeat gerencie o par A / B no datacenter passivo. Ele deve iniciar o mysqld em um failover, mas não no aplicativo Java. Mas se o datacenter leste for o ativo, a pulsação deve iniciar o aplicativo Java durante um failover automatizado de pulsação.
Qual é uma boa maneira de implementar isso?
O que eu espero é algo que precise de um passo para configurar à medida que mudamos o datacenter ativo de oeste para leste. Idealmente, deve ser à prova de erros, isto é, deve ser garantido que exatamente um dos datacenters esteja configurado como o ativo.