Gente,
Estou tentando substituir um único balanceador de carga antigo por várias máquinas virtuais que executam o nginx. No entanto, depois que eu instalei o centos 7 e o nginx, percebi que o heartbeat estava obsoleto. Então, comecei a procurar no corosync e pcs para configurar e gerenciar um cluster de alta disponibilidade.
Eu configurei os nós no cluster e adicionei um recurso para um ip virtual para cada webapp que desejo usar. Os problemas se tornam aparentes quando eu verifico o status
[root@vlb1 nginx]# pcs status
Cluster name: webapps
Last updated: Thu Mar 5 21:27:03 2015
Last change: Thu Mar 5 16:43:22 2015 via cibadmin on vlb1.domain.com
Stack: corosync
Current DC: vlb2.domain.com (2) - partition with quorum
Version: 1.1.10-32.el7_0.1-368c726
2 Nodes configured
2 Resources configured
Online: [ vlb1.domain.com vlb2.domain.com ]
Full list of resources:
webapp1_cluster (ocf::heartbeat:IPaddr2): Started vlb2.domain.com
webapp2_cluster (ocf::heartbeat:IPaddr2): Started vlb1.domain.com
PCSD Status:
vlb1.domain.com: Online
vlb2.domain.com: Online
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
Imediatamente, vejo que tenho clusters de recursos indo para nós diferentes. O maior problema é que, sem o corosync controlando o nginx, o vlb1 pode estar funcionando, enquanto o vlb2 fornecerá um erro de endereço não vinculado, ou seja,
015/03/05 21:15:51 [emerg] 985#0: bind() to 92.168.1.88:443 failed (99: Cannot assign requested address)
Neste ponto, tenho duas perguntas:
É possível iniciar o controle de cluster de alta disponibilidade (no novo nó) e parar (no nó antigo) nginx quando ocorre um failover?
É possível ter vários recursos de cluster e tê-los todos indo para o nó atual ou eu deveria rotear vários aplicativos da Web para um único ip virtual e manipulá-lo na declaração do servidor no nginx?
Originalmente, tínhamos separado cada aplicativo único em seu próprio cluster por motivos de Conformidade com PCI e preferiria não ter vários aplicativos únicos apontando para o mesmo ip virtual.