shutdown keepalived - não executa o hook “notify” no desligamento do daemon

3

Estou executando mantido o serviço sob o Debian (Lenny, Squeeze) de forma bastante justa configuração simples, eu estou apenas (ab) usando-o como um daemon VRRP para decidir o maestria entre duas máquinas iguais para alguns IPs virtuais. Toda a mágica acontece no notify -script.

Quando eu paro o daemon completamente (usando o init-script do debian) keepalived faz Não execute o script de notificação para backup ou, pelo menos, o modo de falha, que é o que eu suspeitaria e precisaria.

Eu poderia "consertar" o script rc com alguns efeitos indesejados - o O script notify seria codificado no script rc, introduzindo um acoplamento indesejado destes dois e a bagunça de portar o patch para o próximas versões do Debian, então esta não é a maneira que eu realmente quero ir ...

Quaisquer sugestões para uma solução mais limpa para este problema?

vrrp_instance FOORRP {
  virtual_router_id 42
  interface eth0
  state BACKUP
  priority 200
  nopreempt
  authentication {
    auth_type AH
    auth_pass foobar42
  }
  notify "/usr/local/bin/vrrp-state"
  virtual_ipaddress {
    127.0.0.2
  }
}

PS: o uso dos scripts "three notify _" não altera nada

PPS: no changelog (release 1.1.16) há algo mencionado, que de alguma forma se encaixa no meu problema (embora eu não esteja usando nada relacionado ao lvs no keepalived), mas estou usando uma versão mais recente (1.1.20): "notify_down não é executado para servidores reais em funcionamento no keepalived desligamento. "

    
por Michuelnik 08.05.2012 / 09:02

2 respostas

5

Pesquisou mais documentação e finalmente encontrou:

notify_stop "/usr/local/bin/vrrp-state fault"

Funciona como esperado .... X -}

    
por 08.05.2012 / 17:13
0

Eu enfrentei esse problema recentemente e descobri que é lógico não executar esses scripts. Esses scripts são executados no caso de eventos específicos, como se tornar um mestre ou um escravo. O processo de manutenção de energia não deve ser desligado a menos que seja feito manualmente e há uma boa razão para isso. Se você está preocupado com a falha no processo keepalived (não é o caso de desligá-lo manualmente), você pode usar monit . É uma ótima ferramenta para monitorar seus processos em execução e reiniciá-los se alguém falhar.

Como você mencionou, você pode simplesmente modificar o script de inicialização do keepalived para executar o script desejado (como parar outro serviço). Acho que isso será mais limpo do que consertar o código keep-alive, mantendo-o você mesmo e fazendo o patch necessário sempre que quiser reinstalá-lo / atualizá-lo.

    
por 08.05.2012 / 09:18