私はアパッチのバーチャルで複数のWEBを運営していますが、全てのWEBでどのメニューをクリックしても、URLは正しく表示されているが、表示されているページはホームぺージだ!!!
実はDRBDを使い2つのサーバーでプライマリーとセカンダリーを自動で切り替えている。そこで、セカンダリー側をプライマリーにしても同じ状態!!
原因は全く不明なのでがここで何が問題か考える。先ずはアパッチ, phpやデーターベースなどのサーバー側の問題。だけどこれは2台同時にいかれるのは考えにくい。そして各WEBのデーターはデフォルトからは変更をしていて、50GiBの領域を専用に割り当てている。これはDRBDが自動で同期するので、何かの問題でプライマリー側のデーターが問題になると、セカンダリーも同じデーターになる筈。なのでこれが原因と勘繰る。幸いbaculaで バックアップがあるので、仮にアタッチしたディスクにバックアップしている全てのWEBデーターをリストアする。そしてDRBDで動いているWEBサーバーで drbdadm down r0でdrbdをストップしておく。ここでリストアのデーターがある場所が/testと仮定し、WEBデータがある場所を/test2と仮定しコピーをする。
# cd /test
# cp -pr -f ./ /test2
アレー、上書きの確認が出る。このままでは何千回も確認が出るので止める。
これはエイリアスでalias cp=’cp -i’となっているからだ。なのでエイリアスを無効にする。これにはコマンドの前に\(バックスラッシュ)をつければいい。
# \cp -pr -f ./ /test2
やっとコピーが終わり、drbdを起動
# drbdadm up r0
Device ‘0’ is configured!
Command ‘drbdmeta 0 v08 /dev/vdc internal apply-al’ terminated with exit code 20
Device ‘1’ is configured!
Command ‘drbdmeta 1 v08 /dev/vdd internal apply-al’ terminated with exit code 20
とエラーが出る。
念の為、
# pcs status
Online: [ web3 ] (抜粋)
OFFLINE: [ web4 ]
Full list of resources:
Resource Group: apachegroup
vipcheck_res (ocf::myres:VIPcheck): Started web3
VirtualIP (ocf::heartbeat:IPaddr2): Started web3
FS_DRBD0 (ocf::heartbeat:Filesystem): Started web3
FS_DRBD1 (ocf::heartbeat:Filesystem): Started web3
HTTPD (ocf::heartbeat:apache): Started web3
MARIADB (systemd:mariadb): Started web3
POSTFIX (systemd:postfix): Started web3
dovecot (systemd:dovecot): Started web3
Master/Slave Set: MS_DRBD0 [DRBD0]
Masters: [ web3 ]
Stopped: [ web4 ]
Failed Resource Actions:
* DRBD0_monitor_20000 on web3 ‘not running’ (7): call=40, status=complete, exitreason=”,
last-rc-change=’Wed Sep 13 12:01:41 2023′, queued=0ms, exec=0ms
あれー、エラーは出ているもののdrbdも起動している。
このエラーはそのままにして、もう片方のサーバーを立ち上げて
# pcs status
とすると(抜粋)
Online: [ web3 web4 ]
Full list of resources:
Resource Group: apachegroup
vipcheck_res (ocf::myres:VIPcheck): Started web3
VirtualIP (ocf::heartbeat:IPaddr2): Started web3
FS_DRBD0 (ocf::heartbeat:Filesystem): Started web3
FS_DRBD1 (ocf::heartbeat:Filesystem): Started web3
HTTPD (ocf::heartbeat:apache): Started web3
MARIADB (systemd:mariadb): Started web3
POSTFIX (systemd:postfix): Started web3
dovecot (systemd:dovecot): Started web3
Master/Slave Set: MS_DRBD0 [DRBD0]
Masters: [ web3 ]
Slaves: [ web4 ]
Failed Resource Actions:
* DRBD0_monitor_20000 on web3 ‘not running’ (7): call=40, status=complete, exitreason=”,
last-rc-change=’Wed Sep 13 12:01:41 2023′, queued=0ms, exec=0ms
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
エラーが出ているものの、初めに立ち上げたWEBが動いているようなので、WEBにアクセスすると無事元に戻っていた。
# cat /proc/drbd
0: cs:Connected ro:Secondary/Primary ds:Diskless/UpToDate C r—–
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
1: cs:Connected ro:Secondary/Primary ds:Diskless/UpToDate C r—–
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
disklessになっているので
# drbdadm attach r0
0: cs:Connected ro:Secondary/Primary ds:Negotiating/UpToDate C r—d-
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:12264
1: cs:Connected ro:Secondary/Primary ds:Negotiating/UpToDate C r—d-
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:120
何時迄もNegotiatingのままなので、drbdを再起動してみる
# systemctl restart drbd
# cat /proc/drbd
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r—–
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:12264
1: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r—–
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:120
これでスプリットブレイン状態になったので、
# drbdadm — –discard-my-data connect r0
そして最初に起動したサーバーに戻って
出て行たエラーを消す
# pcs resource cleanup
そしてスプリットブレインを解消するため
# drbdadm connect r0
でもってcat /proc/drbdで見ると動機が始まった。
これでやっと正常になった。