web-dev-qa-db-ja.com

Keepalived通知スクリプトが実行されない

/etc/keepalived/keepalived.confで通知スクリプトを設定しました

/etc/keepalived/keepalived.conf

global_defs {
  notification_email {
    [email protected]
  }
  notification_email_from [email protected]
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id DEFAULT_ROUT_ID
}


vrrp_script notification {
  script ""
  interval
  weight
}

vrrp_instance VI_1 {
  interface eth0
  virtual_router_id 10
  nopreempt
  state backup
  priority 110
  advert_int 1
  virtual_ipaddress {
    22.22.22.22
  }
  track_script {
    notification
  }

  notify_master "/etc/keepalived/master.sh"
  notify_backup "/etc/keepalived/backup.sh"
}

そして状態が変わるたびに出てきます

enter image description here

動作しているように見えますが、それらのシェルスクリプトは実行されません。

何か提案はありますか?

1
Peco

私も同じ問題を抱えていました。通知スクリプトが実行されていませんでした。結局、SELinuxがスクリプトの実行をブロックしていることに気付きました。次のように入力すると、これがわかりました。

[root@server ~]# journalctl

出力を確認すると、通知スクリプトを実行できるようにSELinuxを無効にするコマンドに関するヒントが表示されます。また、notifyは使用しませんでしたが

      notify_master "/path/to/script"
      notify_backup "/path/to/script"

SELinuxの結果:keepalivedにデフォルトでdac_override機能があるはずだと思われる場合。次に、これをバグとして報告する必要があります。このアクセスを許可するローカルポリシーモジュールを生成できます。次のコマンドを実行して、今のところこのアクセスを許可してください。

   ausearch -c 'keepalived' --raw | audit2allow -M my-keepalived

   semodule -i my-keepalived.pp

これらのコマンドを実行したら、keepalivedを再起動します。

   service keepalived restart
2
Oluwaleke Aina

私の場合、フルパスを(正しく)指定する必要がありました。

Feb 14 17:14:01 lb0-0 Keepalived_vrrp[22728]: WARNING - script `killall` resolved by path search to `/usr/bin/killall`. Please specify full path.
Feb 14 17:14:01 lb0-0 Keepalived_vrrp[22728]: Cannot find script  in path
Feb 14 17:14:01 lb0-0 Keepalived_vrrp[22728]: Disabling track script chk_haproxy since not found
0
William Edwards