共有クラスタ用ファイルシステムと
マルチマスタレプリケーション
今回は、Oracle社開発の共有クラスタ用ファイルシステムOCFS2とレプリケーションソフトのDRBDを合わせものです。
[styled_images width=”483px” height=”309px”]
[image]https://techpjin.sakura.ne.jp/techpjin_new/wp-content/uploads/2012/07/図面2.jpg[/image]
[/styled_images]
[clearboth]
DRBDの複製機能を使い、2台の端末間でハードディスクをマルチマスタレプリケーション構成にします。
マルチマスタレプリケーションとは、2台の端末間でデータをリアルタイム共有しつつ、どちらの端末からも編集できるデータ領域です。
2台の端末からすると1台のディスクを共有している扱いになるので、OCFS2ファイスシステムで管理する形式にします。
OCFS2とは、一般的なファイルシステムでは端末ベースで行なっているアクセス管理や位置情報を
ネットワーク上で複数OS間で行えるようにしたものです。
※DRBDのマルチマスタ構成機能は試験扱い機能となっており、
一般のファイルシステムでフォーマットするとアクセス管理や位置情報が2台のディスク間で狂ってしまいディスクエラーを起こします。
共有クラスタと比較して上記の構成の場合、片系が故障してもデータ提供は停止しません。
共有クラスタの弱点は共有クラスタ自身が故障するとデータ提供が停止します。
【環境準備】
※修正を意識するべき値はオレンジ色
両端末ともに:
2.6.18-308.8.1.el5xen
予めハードディスクにはパーティション作成:
fdisk /dev/sdb
両端末でOCFS2用アプリケーションを3つ入手:
- wget http://oss.oracle.com/projects/ocfs2/dist/files/RedHat/RHEL5/x86_64/1.4.7-1/2.6.18-308.8.1.el5/ocfs2-2.6.18-308.8.1.el5xen-1.4.7-1.el5.x86_64.rpm
- wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.6.3-2/ocfs2-tools-1.6.3-2.el5.x86_64.rpm
- wget http://oss.oracle.com/projects/ocfs2-tools/dist/files/RedHat/RHEL5/x86_64/1.6.3-2/ocfs2console-1.6.3-2.el5.x86_64.rpm
OCFS2をインストール:
- rpm -ivh ocfs2-tools-1.6.3-2.el5.x86_64.rpm
- rpm -ivh ocfs2console-1.6.3-2.el5.x86_64.rpm
- rpm -ivh ocfs2-2.6.18-308.8.1.el5xen-1.4.7-1.el5.x86_64.rpm
DRBDのインストール:
- yum -y install drbd83.x86_64 kmod-drbd83-xen.x86_64
設定
OCFS2設定1、以下ファイルで構文変更(両端末で実施):
-
vi /etc/sysconfig/o2cb
====以下の値をtrueに変更===
O2CB_ENABLED=true
OCFS2設定2、以下ファイル作成(両端末で実施):
-
vi /etc/ocfs2/cluster.conf
====以下を記載===
node:
ip_port = 7777
ip_address = 192.168.100.28 ##1台目端末IP
number = 0
name = sierra.local ##1台目端末hostname
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.100.29 ##2台目端末IP
number = 1
name = tango.local ##2台目端末hostname
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
DRBD設定、以下ファイル生成(両端末で実施)
-
vi /etc/drbd.conf
===以下記入===
global {
usage-count yes;
}
common {
syncer {
rate 100M;
al-extents 257;
}
}
resource r0 {
protocol C;
startup {
become-primary-on both; ### For Primary/Primary ###
degr-wfc-timeout 60;
wfc-timeout 30;
}
disk {
on-io-error detach;
}
net {
allow-two-primaries; ### For Primary/Primary ###
cram-hmac-alg sha1;
shared-secret “FooFunFactory”;
after-sb-0pri discard-zero-changes;
after-sb-1pri violently-as0p;
after-sb-2pri violently-as0p;
}
##端末名とIP指定
on sierra.local {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.100.28:7788;
meta-disk internal;
}
##端末名とIP指定
on tango.local {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.100.29:7788;
meta-disk internal;
}
}
接続・動作作業
DRBD接続環境整理、ディスクバイナリ掃除(両端末で実施):
-
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1024
DRBDの仮想ディスクを接続(両端末で実施):
-
drbdadm create-md r0
/etc/init.d/drbd stop
/etc/init.d/drbd start
DRBD動作開始(両端末で実施):
-
drbdsetup /dev/drbd0 primary -o
動作確認:
cat /proc/drbd
===以下の記載になるまで待機、初期はsync表記で同期動作を実施中===
0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r—–
DRBDが生成した仮想ディスクをさらにOCFS2で管理:
-
!!!OCFS2にフォーマット、以下のコマンドはどちらか1台でのみ実施すること!!!
mkfs.ocfs2 /dev/drbd0
OCFS2管理を開始(両端末で実施):
/etc/init.d/o2cb start
ディレクトリをマウントする(両端末で実施):
mount -t ocfs2 /dev/drbd0 /repdata
以上です、
ディレクトリ上でデータ作成・編集・削除が両端末上で反映していれば成功です。
片系がダウンしたり、ネットワークダウン時に発生するスプリットブレイン現象には要注意:
[styled_link link=”http://www.drbd.jp/users-guide/s-resolve-split-brain.html” variation=”red”]http://www.drbd.jp/users-guide/s-resolve-split-brain.html[/styled_link]
関連サイト
DRBD本家:http://www.drbd.jp/
OCFS2本家:https://oss.oracle.com/projects/ocfs2/