2009年6月11日木曜日

DRBD7からDRBD8.3.1への移行テスト(3)

DRBDのディスクのアップグレードは終了したので、マスター側を立ち上げてIPnuts4.3a3(testing)への環境整備をする。

そのまえに、IPnuts4.1b(ベータ版での機能をおさらい:というか今頃初公開かな)

自動起動スクリプトでディスク切り替え時にサービスの起動も制御する

自動起動の抑制
keepalivedのフックでサービスを制御するので、起動時に勝手に立ち上がらないようにする。
/etc/no_boot_rc

exim4
mysql
dhisd
nfs-kernel-server
bind9
apache2

これは、rc.lrpの設定ファイルになっていて/etc/init.d/rcSがこのファイルを参照する用になっている。

WebadminでLVSの設定(内部的にはkeepalivedの設定)を見ると

マスター時 実行コマンド/etc/keepalived/ha_start
バックアップ時 実行コマンド/etc/keepalived/ha_stop
フォルト時 実行コマンド/etc/keepalived/ha_stop

になっている。ha_start ha_stopは自作のshなのでパッケージには含まれてはいない。
ha_startの最後の方に
APPS="`cat /etc/keepalived/apps.list`"
for app in $APPS
do
if [ $? -eq 0 ] ;then
/etc/init.d/$app start
else
$LOGGER "fail to start $app"
fi
done
となっていて apps.listのサービスを起動している。
/etc/keepalived/appslistの中身はこれ
exim4
mysql
dhisd
nfs-kernel-server
bind9
apache2
4.3ではIPnutsだけで動作するのは nfs-kernel-server、bind9のふたつ。ほかはサポートする予定は無くて動作させる場合は仮想マシン(vserver)で動作させる。

よってexim,mysql,dhisd,apache2は起動パッケージのリスト(/system/lrp.lst)、no_boot_rc ,apps.listから消す。
(/etc/no_boot_rcはapps.listへのリンクになってる場合もある)

起動パッケージのリスト(/system/lrp.lst)からは他に起動時に読み込めなかった/var/lib/lrpkg/packages_fialedに記録されているパッケージも消す。

not found: - hotplug
not found: - dhcpcd
not found: - hotplug
not found: - less
not found: - xdelta
not found: - cipe
not found: - minihttp
not found: - license
not found: - passwd
minihttp,licenseは除外

設定保存して、再起動、動作確認

動かない。
keepalivedが起動すると、ha_startが動き、マウントするのだがディスクが古いことになっているからプライマリディスクにできないといって怒られる。

Jun 11 07:53:48 db1 kernel: drbd0: State change failed: Refusing to be Primary without at least one UpToDate disk
Jun 11 07:53:48 db1 kernel: drbd0: state = { cs:WFConnection ro:Secondary/Unknown ds:Outdated/DUnknown r--- }
Jun 11 07:53:48 db1 kernel: drbd0: wanted = { cs:WFConnection ro:Primary/Unknown ds:Outdated/DUnknown r--- }
そこで、無理やりprimaryにするおまじない

drbdadm -- --overwrite-data-of-peer primary all

これでOK


ha_start、ha_stop、に使っていたスクリプトも互換性の問題があり
drbdadm state all

drbdadm role all
に変更

### MEMO:また、別件だが ###
neither /etc/bind/rndc.conf nor /etc/bind/rndc.key was found
の時は rndc.confを作る
# rndc-confgen -a -r /var/cropkg/python2_5.squ
wrote key file "/etc/bind/rndc.key"

ランダムファイル渡さないと固まる
#############################

/etc/init.d/keepalivedをstart stopしてnfsサーバとbind9がきちんと動作することを確認

次はスレーブ側を立ち上げて同期させる
ーーーつづく

0 件のコメント: