2台のLinuxサーバを使った DRBD + GFS2 での Primary/Primary 構成では,シャットダウンと起動の順序に気を遣う必要があります.そうしないと DRBD が Split-Brain1となってしまいます.それを防ぐために,以下のようなスクリプトを作ってみました.
使い方はかんたん.
% git clone git://gist.github.com/71325.git gist-71325
% sudo cp cluster /etc/init.d/cluster
% sudo /sbin/chkconfig --add cluster
VirtualBox 上で何度か再起動実験してますが,特に問題はありません.起動時間がずれたときにどうするかという問題がありますが,そのときは wfc-timeout / degr-wfc-timeout の値を調整すればいいのではないかと思います.
##追記 start/stopに反応するスクリプト書いて,K01とかやれば1番目に実行されるだろうと思ってたらそうではなく,/etc/rcにある 49行目~52行目で continue されてしまいます.
45 # First, run the KILL scripts.
46 for i in /etc/rc$runlevel.d/K* ; do
47 check_runlevel "$i" || continue
48
49 # Check if the subsystem is already up.
50 subsys=${i#/etc/rc$runlevel.d/K??}
51 [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] \
52 || continue
53
54 # Bring the subsystem down.
55 if LC_ALL=C egrep -q "^..*init.d/functions" $i ; then
56 $i stop
57 else
58 action $"Stopping $subsys: " $i stop
59 fi
60 done
どうやら /var/lock/subsys/$script_name のロックファイルが存在しないとスルーして「あとで実行」するようなので,他のスクリプトを参考に touch /var/lock/subsys/cluster を追加したところ,万事うまくいきました.
まだまだ知らないこと多いなぁ・・・・
- 記憶領域の分裂.つまり同期失敗の可能性ありってことかな [return]