daemontoolsでkeepalivedデーモンの稼動管理

投稿者: | 2011年6月4日
Pocket

サーバ環境

製品名 OpenBlockS 600
OS(kernel ver) Debian lenny(2.6.29)
CPU 600MHz(AMCC PowerPC 405EX)
メモリ 1GB(DDR2 SDRAM)
ストレージ 8GB(Compact Flash)

daemontoolsのインストール

OBS-ACT:~# aptitude search daemontools
p   daemontools                                                               - a collection of tools for managing UNIX services
p   daemontools-run                                                           - daemontools service supervision

上記を二つともインストールします。

OBS-ACT:~# aptitude install daemontools
OBS-ACT:~# aptitude install daemontools-run

daemontoolsの設定

インストールすると、svscanが起動していました。

svscanは指定されたディレクトリを監視して、新たなデーモンが追加された場合はsuperviseを起動します。

superviseはrunファイルを実行してデーモンプロセスを起動します。

本サイトの環境では/etc/serviceを監視していました。

OBS-ACT:~# ps aux | grep svscan
root      4986  0.0  0.1   3512  1400 ?        Ss   21:37   0:00 /bin/sh /usr/bin/svscanboot
root      4988  0.0  0.0   1916   440 ?        S    21:37   0:00 svscan /etc/service
root      4992  0.0  0.0   3316   916 pts/0    SN+  21:38   0:00 grep svscan

以下のように、/etc/daemon/keepalivedというディレクトリを作成し、その中にrunファイルを作成します。

実行権限を付与しなければ起動しないので要注意です。

OBS-ACT:~# mkdir -p /etc/daemon/keepalived
OBS-ACT:~# cd /etc/daemon/keepalived/
OBS-ACT:/etc/daemon/keepalived# vi run

#!/bin/sh
exec 2>&1
exec /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d

"run" [New File] 3 lines, 60 characters written

OBS-ACT:/etc/daemon/keepalived# ls -al /etc/daemon/keepalived/run
-rw-r--r-- 1 root root 123 2011-06-02 22:12 /etc/daemon/keepalived/run
OBS-ACT:/etc/daemon/keepalived# chmod 755 /etc/daemon/keepalived/run

keepalivedのオプションは前回の記事(keepalived(1.2.1)の導入)を参照して下さい。

次に、svscanの監視している/etc/service/に、上記で作成したrunファイル等を置いている/etc/daemon/keepalivedディレクトリを指すシンボリックリンクを作成します。

OBS-ACT:/etc/daemon/keepalived# ln -s /etc/daemon/keepalived /etc/service/

OBS-ACT:/etc/daemon/keepalived# cd /etc/service
OBS-ACT:/etc/service# ls -al
合計 8
drwxr-xr-x  2 root root 4096 2011-06-02 21:49 .
drwxr-xr-x 63 root root 4096 2011-06-02 21:48 ..
lrwxrwxrwx  1 root root   22 2011-06-02 21:49 keepalived -> /etc/daemon/keepalived

OBS-ACT:/etc/service# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.151:80 rr
  -> 172.16.0.3:80                Masq    0      0          0
  -> 172.16.0.2:80                Masq    0      0          0

デーモンが起動しました。

OBS-ACT:~# ps aux | grep kee
root      3023  0.0  0.0   1756   412 ?        S    Jun02   0:00 supervise keepalived
root      3024  0.0  0.1   4392  1236 ?        S    Jun02   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3025  0.0  0.1   4732  1732 ?        S    Jun02   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3026  0.0  0.1   4732  1108 ?        S    Jun02   0:01 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3548  0.0  0.0   3320   932 pts/0    SN+  22:21   0:00 grep kee

3つkeepalivedプロセスが上がっていました。

daemontoolsの動作試験

試しにkeepalivedをkillしてみます。

OBS-ACT:~# kill -KILL 3024 3025 3026
OBS-ACT:~# ps aux | grep kee
root      3023  0.0  0.0   1756   412 ?        S    Jun02   0:00 supervise keepalived
root      3549  3.0  0.1   4392  1244 ?        S    22:22   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3551  6.0  0.1   4732  1728 ?        S    22:22   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3552  2.0  0.1   4732  1108 ?        S    22:22   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3554  0.0  0.0   3320   932 pts/0    SN+  22:22   0:00 grep kee

自動的に再起動していました。

次に、svcコマンドにより、superviseを経由してデーモンプロセスにTERMシグナルを送ってプロセスを停止させてみます。

OBS-ACT:~# svc -d /etc/service/keepalived
OBS-ACT:~# ps aux | grep kee
root      3023  0.0  0.0   1756   412 ?        S    Jun02   0:00 supervise keepalived
root      3557  0.0  0.0   3316   916 pts/0    SN+  22:23   0:00 grep kee

keepalivedプロセスが落ちました。

反対にプロセスを起動してみます。

OBS-ACT:~# svc -u /etc/service/keepalived
OBS-ACT:~# ps aux | grep kee
root      3023  0.0  0.0   1756   412 ?        S    Jun02   0:00 supervise keepalived
root      3559  1.0  0.1   4392  1236 ?        S    22:23   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3560  2.5  0.1   4732  1724 ?        S    22:23   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3561  0.5  0.1   4732  1108 ?        S    22:23   0:00 /usr/local/sbin/keepalived -n -S 1 -f /usr/local/etc/keepalived/keepalived.conf --check --vrrp -d
root      3563  0.0  0.0    340    80 pts/0    RN+  22:23   0:00 grep kee

keepalivedが立ち上がりました。

参考文献

[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

こんなに簡単! Linuxでロードバランサ (2)

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です