RSS RSS
tacchiの中身(Ruby on Railsのシステム開発)
2007.12.27
カテゴリ:サーバー - 役立ちツール

DRBDのインストール

こんにちは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 secondary

 

 

drbdsetup /dev/drbd0 primary
(primaryにする。)
mount /dev/drbd0 /mnt/drbd0
ls /mnt/drbd0

 


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

これで設定完了です。

 

 

 

 

 

 

 

 

 

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ブラウザゲーム エインヘリアル
ブラウザゲーム「エインへリアル」
αテスター募集中
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」

プロフィール

tacchi
tacchi
Ruby On Railsでバリバリ開発している会社に勤めてます。
新しい技術に興味もありますし、サーバにも興味ありますので
気になった事が合ったらジャンジャン書いて行きます!

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ