DRBD構築手順メモ その2
前回の続き…。
DRBDの起動
■DRBDの起動
# /etc/rc.d/init.d/drbd start ← プライマリ機にてDRBD起動 Starting DRBD resources: [ d(r0) s(r0) n(r0) ]. .......... *************************************************************** DRBD's startup script waits for the peer node(s) to appear. - In case this node was already a degraded cluster before the reboot the timeout is 120 seconds. [degr-wfc-timeout] - If the peer was available before the reboot the timeout will expire after 0 seconds. [wfc-timeout] (These values are for resource 'r0'; 0 sec -> wait forever) To abort waiting enter 'yes' [ 29]:yes ← yes応答 # /etc/rc.d/init.d/drbd start ← スタンバイ機にてDRBD起動 Starting DRBD resources: [ d(r0) s(r0) n(r0) ]. ついでにお約束だけどchkconfigで自動起動を設定しておく # chkconfig drbd on → 自動起動に追加 # chkconfig --list drbd → 自動起動設定を確認 drbd 0:off 1:off 2:on 3:on 4:on 5:on 6:off >
■DRBDの状態確認
# /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32 m:res cs st ds p mounted fstype 0:r0 Connected Secondary/Secondary UpToDate/UpToDate C ← 同期完了して両方ともにスタンバイで起動していることを確認
■アクティブ機でのプライマリ設定とファイルシステム作成、マウント
# drbdadm primary all プライマリ機で実行 # /etc/init.d/drbd status プライマリ機で実行 drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32 m:res cs st ds p mounted fstype 0:r0 Connected Primary/Secondary UpToDate/UpToDate C →プライマリになったことを確認 # /etc/init.d/drbd status セカンダリ機で実行 drbd driver loaded OK; device status: version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32 m:res cs st ds p mounted fstype 0:r0 Connected Secondary/Primary UpToDate/UpToDate C →セカンダリ状態とプライマリを検知したことを確認 # mkfs -t ext4 /dev/drbd0 プライマリ機で実施 → /dev/drbd0にext4にてファイルシステム作成(少し時間がかかる。) # mkdir /pgdata # mount /dev/drbd0 /pgdata # df -kh Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/VolGroup00-LogVol02 556G 5.2G 522G 1% / /dev/sda1 99M 13M 82M 14% /boot tmpfs 16G 0 16G 0% /dev/shm /dev/drbd0 197G 188M 187G 1% /pgdata →ファイルシステムを作成して、postgres用のディレクトリを作成し DRBD領域にマウント。その後dfで確認。 # /etc/init.d/drbd status プライマリ機で実行 drbd driver loaded OK; device status: version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:r0 Connected Primary/Secondary UpToDate/UpToDate C /pgdata ext4 →/pgdataにext4でマウントされたことを確認する。
■DRBDの動作確認
テストとしてデータのレプリケーションの確認はもちろんだが
パーミッションについても引継ぎは問題ないのかどうかを確認する。
プライマリ機でテスト準備
# chown postgres:postgres /pgdata → /pgdataをpostgresユーザー(既に作成済)に変更して引き継ぐのか確認 # echo test > /pgdata/test.txt → テストファイルを作成 # echo "test hoge" > /pgdata/test2.txt → テストファイルを作成 # chown hoge:hoge /pgdata/test2.txt → テストファイルの所有者を変更 # umount /pgdata → ディレクトリをアンマウント # ls /pgdata → ファイルがないことを確認 # drbdadm secondary r0 → プライマリ機をセカンダリ機に変更 # /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary UpToDate/UpToDate C → 両方ともにスタンバイになっていることを確認 → mountedが解除されていることを確認 # df -kh Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/VolGroup00-LogVol02 556G 5.2G 522G 1% / /dev/sda1 99M 13M 82M 14% /boot tmpfs 16G 0 16G 0% /dev/shm → /pgdataのマウントが解除されたことを確認
セカンダリ機にてテスト確認
# drbdadm primary r0 → プライマリ機に昇格するように設定変更 # /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:r0 Connected Primary/Secondary UpToDate/UpToDate C → プライマリに変化したことを確認 # mkdir /pgdata # ls -la → 作成された/pgdataが/配下でrootの所有になっていることを確認 # mount /dev/drbd0 /pgdata →/pgdata をマウント # df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol02 290G 1.8G 273G 1% / tmpfs 32G 0 32G 0% /dev/shm /dev/sda1 485M 54M 406M 12% /boot /dev/drbd0 197G 188M 187G 1% /pgdata → /pgdataがマウントされたことを確認 # ls -la / → マウントした/pgdataがアクティブ側で設定したpostgresの 所有になっていることを確認 # cd /pgdata # ls -la total 32 drwxr-xr-x 3 postgres postgres 4096 Jul 3 16:18 . dr-xr-xr-x. 23 root root 4096 Jul 3 16:26 .. drwx------ 2 root root 16384 Jul 3 15:50 lost+found -rw-r--r-- 1 postgres postgres 5 Jul 3 16:17 test.txt -rw-r--r-- 1 hoge hoge 11 Jul 3 16:18 test2.txt → アクティブ側で作成したファイルが存在して 所有者も同様になっていることを確認 ※ユーザー環境はdevel1とdevel2で同一となっています。 # cat test.txt test # cat test2.txt test hoge → アクティブ側で作成したファイルの中身となっていることを確認
セカンダリ機にてテスト準備
# echo "test devel2 create" > /pgdata/test3.txt テストファイル作成 # chown hogehoge:hogehoge /pgdata/test3.txt # umount /pgdata → ディレクトリをアンマウント # ls /pgdata → ファイルがなにもないことを確認 # drbdadm secondary r0 → 一旦プライマリにしたセカンダリ機を再度セカンダリ機に変更 # /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:r0 Connected Secondary/Secondary UpToDate/UpToDate C → 両方ともにスタンバイになっていることを確認する。 → mountedが解除されていることを確認する。 # df -kh Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/VolGroup00-LogVol02 556G 5.2G 522G 1% / /dev/sda1 99M 13M 82M 14% /boot tmpfs 16G 0 16G 0% /dev/shm → /pgdataのマウントが解除されたことを確認 # drbdadm primary r0 → 一旦セカンダリにしたプライマリ機を再度プライマリ機に変更 # /etc/init.d/drbd status drbd driver loaded OK; device status: version: 8.4.2 (api:1/proto:86-101) GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10 m:res cs ro ds p mounted fstype 0:r0 Connected Primary/Secondary UpToDate/UpToDate C → プライマリに変化したことを確認 # ls -la → /pgdataがrootの所有になっていることを確認 # mount /dev/drbd0 /pgdata →/pgdata をマウント # df -kh Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol02 290G 1.8G 273G 1% / tmpfs 32G 0 32G 0% /dev/shm /dev/sda1 485M 54M 406M 12% /boot /dev/drbd0 197G 188M 187G 1% /pgdata → /pgdataがマウントされたことを確認 # ls -la / → マウントした/pgdataがpostgresの所有になっていることを確認 # cd /pgdata # ls -la total 32 drwxr-xr-x 3 postgres postgres 4096 Jul 3 16:18 . dr-xr-xr-x. 23 root root 4096 Jul 3 16:26 .. drwx------ 2 root root 16384 Jul 3 15:50 lost+found -rw-r--r-- 1 postgres postgres 5 Jul 3 16:17 test.txt -rw-r--r-- 1 hoge hoge 11 Jul 3 16:18 test2.txt -rw-r--r-- 1 hogehoge hogehoge 11 Jul 3 16:54 test3.txt → セカンダリ側で作成したファイルが存在して 所有者も同様になっていることを確認 # cat test3.txt test devel2 create → セカンダリ側で作成したファイルの中身となっていることを確認本日は一旦ここまで。お疲れ様でした。