ホーム DoRuby DRBDのインストール

DRBDのインストール

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちはtacchiです。

DRBD

DRBDとはDistributed Replicated Block Deviceの略で、本家WEBサイトは http://www.drbd.org/です。

ブロックデバイス全体をネットワーク経由でミラーリングしています。
要は、昔はrsyncとcronを利用してミラーリングしていたものを、DRBDでできちゃうよということです。

Ruby案件で必要だったのでDRBDとHeartBeatを利用させてもらいました。
なかなか苦戦しましたが、先駆者がのこしてくれているありがたい情報を元に設定を行っていきました。
参考にさせていただいたのは、以下のサイトです。

Webサーバが2台あり、テストサーバから本番サーバへのデプロイを同時に反映させること、差異のないアプリケーションを稼働させるという意図から、DRBDを利用。
テストサーバとWebサーバをDRBDで結ぶという案もありましたが、実際に稼働しているアプリケーションを容易に変更できないようにという意図から、テストサーバとWebサーバ間はrsyncで結び、デプロイシェルを作成し、それを叩けば本番に反映できるようにしました。
(やり方は、沢山考えられますが、今回はこれで行きました。)


じゃぁ実際の設定を以下に示します。


■まず、DRBDのインストールから(Web01とWeb02にインストール)wget http://oss.linbit.com/drbd/8.0/drbd-8.0.5.tar.gz
tar zxvf drbd-8.0.5.tar.gz
cd drbd-8.0.5
make rpm
cd dist/RPMS/x86_64
rpm -ivh drbd-8.0.5-3.x86_64.rpm drbd-km-2.6.18_8.1.8.el5-8.0.5-3.x86_64.rpm
drbd-debuginfo-8.0.5-3.x86_64.rpm


■設定ファイルをいじりましょう。(/etc/drbd.conf)
※もちろんWeb01とWeb02に設定resource r0 {

protocol C;

startup {
degr-wfc-timeout 120; # 2 minutes.
}

disk {
on-io-error detach;
}

syncer {
rate 100M;
}

on hogeweb01 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.2.79:7789;
flexible-meta-disk internal;
}

on hogeweb02 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.2.222:7789;
meta-disk internal;
}


■iptablesを利用しているならiptablesの設定も必要!
tcpの7789ポートを利用しますので、アクセス許可を行います。
※もちろんWeb01とWeb02に設定/sbin/iptables -I INPUT -p tcp -m tcp –dport 7789 –syn -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart


■サービスの起動をしてみましょう 
※Web01とWeb02で起動。service drbd start


■使ってみましょう
 Web01 以下を実行cat /proc/drbd
上記コマンドをたたくと以下が表示される。今は両方セカンダリですよーって表示。
cs:Connected st:Secondary/Secondary


■じゃぁWeb01をプライマリに変更しましょう。(Web01で実行)drbdsetup /dev/drbd0 primary
cat /proc/drbd
以下の表示に変わったはず。
cs:Connected st:Primary/Secondary


■じゃぁマウントしてみましょう。(Web01で実行)mount /dev/drbd0 /mnt/drbd0


■ファイルを作っておいてみる(Web01で実行)touch /mnt/drbd0/test


■マウント解除して、Web02の方でmountできるようにsecondaryにする。(Web02で実行)umount /dev/drbd0
drbdsetup /dev/drbd0 secondarydrbdsetup /dev/drbd0 primary
(primaryにする。)
mount /dev/drbd0 /mnt/drbd0
ls /mnt/drbd0


こちらにもtestができてればOK

これで設定完了です。

記事を共有

最近人気な記事