2009年6月11日木曜日

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

XML差分ファイルの設定

セカンダリ側を立ち上げるが、その前にマスターとセカンダリの設定が同期がとれていないといけない。

IPnuts4.1ベータ版から、設定ファイルの差分を指定して立ち上げることが出きるようになっている。

/system/sysdiff.conf.sample と /system/sysdiff.conf.lvs_sampleのサンプルがある

/system/sysdiff.conf.lvs_sampleは lvsのセカンダリを作るときのサンプル。今回はこれに当たる。


## sysdiff.conf sample for lvs
##
## Change IP Address of port 2
#set item = { \
"xpath":"/SYSTEM/NETWORK/IP_LIST/IP[@port='2']/@ip", \
"value":"192.168.0.11" \
}
#silent $sysdiff_update.append($item)
##
## HOSTNAME
##
#set item = { \
"xpath":"/SYSTEM/HOST/HOSTNAME", \
"value":"gw2" \
}
#silent $sysdiff_update.append($item)
## VRRP setting
## -- CAUTION:
## -- Change vrid for your system.
##
## VRRP bigger prio has high priority.
##
#set item = { \
"xpath":"/SYSTEM/NETWORK/VRRP_INSTANCE_LIST/VRRP_INSTANCE[@vrid='50']/@
priority", \
"value":"50" \
}
#silent $sysdiff_update.append($item)
##
## VRRP initial state MATER|BACKUP
##
#set item = { \
"xpath":"/SYSTEM/NETWORK/VRRP_INSTANCE_LIST/VRRP_INSTANCE[@vrid='50']/@
state", \
"value":"BACKUP" \
}
#silent $sysdiff_update.append($item)



以下だけ説明する

## Change IP Address of port 2
#set item = { \
"xpath":"/SYSTEM/NETWORK/IP_LIST/IP[@port='2']/@ip", \
"value":"192.168.0.11" \
}
#silent $sysdiff_update.append($item)

PythonのテンプレートユーティティであるCheetahのテンプレートファイルの書式になっている
## #* *#はコメントになる
#はCheetahのコマンド 
それで 上記の例は xupdateに渡すサンプルで IPnutsの設定ファイルは/etc/config/sysconfig.xmlにあるXMLファイルで、それをxpathを指定して該当する値を変更する。
これだとport 2番のIPアドレスを変更する。

設定に変更がある時は、セカンダリ側では同じように設定を変更するのではなく、マスターのconfig.lrpをブートディスクにコピーしてセカンダリ側を作ることができる。
ただし、起動パッケージのリストの/system/lrp.lstを変更した時はこれもコピーする必要がある。

今回はマスター側のブートディスクからconfig.lrpと/system/lrp.lstをコピーしてセカンダリ側を立ち上げる。sysdiff.confのカスタマイズは環境によるが、IPアドレスとホストを設定すればよいと思われる。

セカンダリの起動とDRBDの同期

起動はできて、差分の設定もされているが。DRBDのディスクの同期が始まらない

error receiving ReportState, l: 4!
とか
Split-Brain detected, dropping connection!
のエラーが出る

これには次のようなコマンドを実行する。
r0はリソース名
セカンダリ側で

drbdadm secondary r0
drbdadm -- --discard-my-data connect

プライマリ側で

drbdadm connect

が..... .... プライマリ側のディスクが壊れている ???


めげずにそのままスレーブを再起動

スレーブ側は、何事もなく、drbd,keepalivedともに起動し

drbdadm role all にで Secondary/Primaryになった。

プライマリ側は、ディスクが壊れているようなので、同期を再開しようとしたときにエラーだしまくり。

ご参考まで

Jun 11 13:45:57 db1 kernel: hdb: dma_intr: error=0x40 <3>{ UncorrectableError }, LBAsect=65406887, sector=65406864
Jun 11 13:45:57 db1 kernel: ide: failed opcode was: unknown
Jun 11 13:45:57 db1 kernel: end_request: I/O error, dev hdb, sector 65406864
Jun 11 13:45:57 db1 kernel: drbd0: Local IO failed. Passing error on...
Jun 11 13:45:58 db1 kernel: hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jun 11 13:45:58 db1 kernel: hdb: dma_intr: error=0x40 <3>{ UncorrectableError }, LBAsect=65406887, sector=65406872
Jun 11 13:45:58 db1 kernel: ide: failed opcode was: unknown
Jun 11 13:45:58 db1 kernel: end_request: I/O error, dev hdb, sector 65406872
Jun 11 13:45:58 db1 kernel: drbd0: Local IO failed. Passing error on...
Jun 11 13:46:00 db1 kernel: hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Jun 11 13:46:00 db1 kernel: hdb: dma_intr: error=0x40 <3>{ UncorrectableError }, LBAsect=65406887, sector=65406880
Jun 11 13:46:00 db1 kernel: ide: failed opcode was: unknown
Jun 11 13:46:00 db1 kernel: end_request: I/O error, dev hdb, sector 65406880
Jun 11 13:46:00 db1 kernel: drbd0: Local IO failed. Passing error on...
Jun 11 13:46:00 db1 kernel: drbd0: Sending NegRSDReply. sector 394072s.
Jun 11 13:46:00 db1 kernel: drbd0: Sending NegRSDReply. sector 394080s.
Jun 11 13:46:00 db1 kernel: drbd0: Sending NegRSDReply. sector 394088s.
Jun 11 13:46:00 db1 kernel: drbd0: Sending NegRSDReply. sector 394096s.
Jun 11 13:46:00 db1 kernel: drbd0: Sending NegRSDReply. sector 394104s.
Jun 11 13:49:00 db1 kernel: drbd0: Resync done (total 257 sec; paused 0 sec; 7140 K/sec)
Jun 11 13:49:00 db1 kernel: drbd0: 57 failed blocks
Jun 11 13:49:00 db1 kernel: drbd0: conn( SyncSource -> Connected )
Jun 11 13:49:00 db1 kernel: drbd0: cs:Connected rs_left=57 > rs_total=0 (rs_failed 0)



データは修復する必要はないし、ディスクもない、モチベーションもないから以上で移行テスト終了。

0 件のコメント: