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.