Cluster de alta disponibilidade do RHEL usando pcs, configurando o serviço como um recurso

0

Eu tenho um cluster de 2 nós no RHEL 6.9. Tudo está configurado, exceto que estou tendo dificuldades com um aplicativo iniciado por meio de shell script criado em um serviço (em /etc/init.d/myApplication ), que eu apenas chamarei de "myApp" . A partir desse aplicativo, eu fiz um pcs resource create myApp lsb:myApp op monitor interval=30s op start on-fail=standby . Eu sou novo em usar este conjunto de software, mas é para o trabalho. O que eu preciso é que este aplicativo seja lançado em ambos os nós simultaneamente, já que ele precisa ser iniciado manualmente. Portanto, se o primeiro nó falhar, ele precisará de intervenção se já não estiver ativo no nó passivo.

Eu tenho dois outros serviços:
- VirtIP (ocf:heartbeat:IPaddr2) para fornecer um IP de serviço para o servidor de aplicativos
- Cron (lsb:crond) para sincronizar os arquivos do aplicativo (não estamos usando armazenamento compartilhado)

Eu tenho o VirtIP e o Cron como dependentes via colocation para myApp.

Eu tentei mestre / escravo, bem como clonagem, mas devo estar faltando alguma coisa sobre sua configuração. Se eu colocar o aplicativo offline, o marcapasso não detecta que o serviço ficou inativo e pcs status indica que o myApp ainda está em execução no nó (ou nós, dependendo da minha configuração). Às vezes, também estou recebendo o problema de que o serviço que está executando o aplicativo está parado pelo marca-passo no nó passivo.

Qual é a maneira que eu preciso para configurar isso? Eu passei pela documentação do RHEL, mas ainda estou presa. Como obtenho o pacemaker para iniciar o failover se o serviço myApp ficar inativo? Eu não sei porque não está detectando que o serviço parou em alguns casos.

EDIT: Então, para fins de teste, eu removi o requisito de senha para iniciar / reiniciar e o serviço é iniciado / reiniciado bem como esperado e os recursos dependentes de colocation param / iniciam conforme o esperado. Mas parar o serviço myApp não reflete como um recurso parado, mas simplesmente permanece no node1 Iniciado. Da mesma forma, a simulação de um failover, colocando o node1 no modo de espera, simplesmente interrompe todos os recursos no node1.

    
por Greg 29.09.2017 / 09:52

1 resposta

2

Meu palpite é que seu script shell / init não está retornando os códigos de retorno apropriados. Para que o marcapasso funcione bem com um script de inicialização, o script de inicialização precisa ser totalmente compatível com LSB. Execute o script de inicialização com as verificações de compatibilidade aqui: link

Suspeito que seu script esteja retornando um 0 no status quando não deveria.

    
por 29.09.2017 / 17:08