Se você não estiver vinculado ao marca-passo / corosync, o comportamento que você descreve pode ser obtido com opensvc , usando o arquivo de configuração de serviço abaixo:
[DEFAULT]
id = 84327b87-13f6-4d32-b90a-a7fad87a8d92
nodes = server1 server2
flex_min_nodes = 2
topology = flex
orchestrate = ha
monitor_action = freezestop
[ip#vip]
ipname@server1 = 192.168.100.240
ipname@server2 = 192.168.100.241
ipdev = br0
monitor = true
[app#haproxy]
type = simple
start = /sbin/haproxy -f /etc/haproxy/haproxy.cfg
restart = 1
monitor = true
Explicações:
[DEFAULT section são as configurações globais:
-
id = .... ID de serviço exclusivo, gerado automaticamente no momento da criação do serviço ( svcmgr -s myservice create e, em seguida, svcmgr -s myservice edit config )
-
nodes = server1 server2 significa que estamos executando dois nós opensvc cluster
-
flex_min_nodes = 2 informam que esperamos que o serviço execute pelo menos 2 instâncias. Neste cluster de 2 nós, teremos 1 instância por nó.
-
topology = flex especificam que estamos executando uma topologia de serviço ativo / ativo
-
orchestrate = ha informa que o serviço precisa ser gerenciado automaticamente pelo daemon opensvc
-
monitor_action = freezestop é usado para forçar o comportamento quando um recurso crítico é desativado (como um processo de falha do haproxy ou kill). Se isso acontecer, o
O daemon opensvc tem que tomar uma decisão. 3 parâmetros possíveis:
-
freezestop : a instância do serviço local é interrompida e colocada no estado congelado.
-
reboot : o nó é reinicializado.
-
crash : o nó está com falha.
[ip#vip] : é usado para declarar o serviço vip:
- em
server1 o ip 192.168.100.240 será configurado na interface br0 no início do serviço
- em
server2 o ip 192.168.100.241 será configurado na interface br0 no início do serviço
-
monitor = true informa opensvc agente que este recurso é crítico (se ele cair, acione o serviço monitor_action )
[app#haproxy] : descreve o material do aplicativo:
-
type = simple especifica que o serviço gerencia um aplicativo de processo único (daemon não de bifurcação)
-
start = /sbin/haproxy -f /etc/haproxy/haproxy.cfg é o comando a ser executado quando o serviço é iniciado
-
restart = 1 diz ao daemon opensvc para tentar reiniciar 1 tempo este recurso se ele cair.
-
monitor = true haproxy é um recurso crítico. Se ele cair, tente reiniciar 1 vez devido ao parâmetro anterior e, se ele falhar, acione o monitor_action
Como o serviço confia no vip, você não é obrigado a ligar *: 443, mas somente o serviço vip.
Sobre sua pergunta sobre restart / stonith se o haproxy cair, basta colocar um restart = 1 no [app#haproxy] para tentar reiniciar, e também um monitor_action = crash na seção DEFAULT . Dessa forma, 1 restart é tentado e, se isso não funcionar, o nó está com falha.
Espero que isso ajude.