説明

CentOS6.4でnagiosサーバのフェイルオーバー構成を設定する方法について記載します。

実現方法

nagiosサーバのファイル同期はrsyncで行ないます。
nagiosサーバのフェイルオーバー構成はpacemaker+corosyncで設定します。

手順

■corosync,pacemakerをインストールする

http://blog.livedoor.jp/aloha_net/archives/39836080.html
上記blogのcorosync,pacemaker,crmインストール手順参照。

■corosyncのコンフィグファイルを作成する

http://blog.livedoor.jp/aloha_net/archives/39836080.html
上記blogのcorosyncコンフィグファイル参照。

■corosyncを起動する

http://blog.livedoor.jp/aloha_net/archives/39836080.html
上記blogのcorosync起動手順参照。

■nagiosの起動スクリプトをLSB準拠させる

pacemakerから利用できるよう、nagios起動スクリプトのリターンコードをLSB準拠させます。
(yumインストール時の起動スクリプトはLSB非準拠です。)
参考URL:http://chibitcpu.blogspot.jp/2014/04/lsb.html

/etc/nagios/nagios.cfg

~
pid_nagios ()
{

     if test ! -f $NagiosRunFile; then
          echo "No lock file found in $NagiosRunFile"
#          exit 1
          return 1
     fi

     NagiosPID=`head -n 1 $NagiosRunFile`
}
~
     stop)
          echo -n "Stopping nagios: "

          pid_nagios
                if [ $? -eq 1 ]; then
                        exit 0
                fi
~
     status)
          pid_nagios
                if [ $? -eq 1 ]; then
                        exit 3
                fi
          printstatus_nagios nagios
                if [ $? -eq 1 ]; then
                        exit 3
                fi
          exit $?
          ;;
~

■crmコマンドでフェイルオーバー設定

# crm configure property no-quorum-policy="ignore" stonith-enabled="false"
# crm configure rsc_defaults resource-stickiness="INFINITY" migration-threshold="1"
# crm configure primitive nagios lsb:nagios op start interval="0s" timeout="120s" op monitor interval="10s" timeout="30s" op stop interval="0s" timeout="120s"
# crm configure group nagios-group nagios

※ここまででフェイルオーバー設定は終了です。2系サーバは上記で構築したサーバをAMIコピーから起動して、corosyncのコンフィグファイルでIPアドレスを自IPに設定すればよいと思います。

■rsyncインストール

マスタ側
# yum install rsync
スレーブ側
# yum install xinetd rsync

■rsyncマスタ設定
nagiosサーバの同期設定になります。
configファイル、プライグインファイルはyumインストールの場合は/etc/nagios、/usr/lib64/nagiosになります。
/var/log/nagios/retention.datの同期(“/var/log/nagios”)も必要になるのでお忘れなく。
これを同期しておかないとdisable notificationの設定が同期されず意図しないアラート通知メールが飛んだりします。

/etc/rsyncd.conf

[nagios_conf]
path = /etc/nagios
read only = false
uid = root
gid = root

[nagios_plugins]
path = /usr/lib64/nagios
read only = false
uid = root
gid = root

[nagios_retention]
path = /var/log/nagios
read only = false
uid = root
gid = root

■rsyncスレーブ設定

crontabに同期処理を登録します。例では5分間隔で設定しています。

# crontab -l
*/5 * * * * rsync -aucz --delete /etc/nagios/ 10.0.3.63::nagios_conf
*/5 * * * * rsync -aucz --delete /usr/lib64/nagios/ 10.0.3.63::nagios_plugins
*/5 * * * * rsync -aucz --delete --include="retention.dat" --exclude="*" /var/log/nagios/ 10.0.3.63::nagios_retention

■nagiosのretention.dat更新間隔を設定する

retention.datとはnagiosサーバが再起動時に使用する、状態を保持しておくファイルです。
このファイルにdisable notification等の設定情報を持っています。
ファイルの更新間隔がデフォルトでは60分になっているので、rsyncの周期に合わせて調整します。

/etc/nagios/nagios.cfg ※例は更新間隔を5分にしています。

~
# RETENTION DATA UPDATE INTERVAL
# This setting determines how often (in minutes) that Nagios
# will automatically save retention data during normal operation.
# If you set this value to 0, Nagios will not save retention
# data at regular interval, but it will still save retention
# data before shutting down or restarting.  If you have disabled
# state retention, this option has no effect.

retention_update_interval=5

~

以上です。

元記事はこちら

CentOS6.4でnagiosサーバのフェイルオーバー構成をpacemaker+corosync+rsyncで設定する方法