Skip to content

久しぶりにDRBDとHeartbeat

何年か前にうんざりするくらい破壊実験をやって、実運用したDRBD+Heartbeat。
あれから随分時間が経って、Heartbeatは最近じゃあPacemaker+Heartbeat / Corosyncという構成で運用するようになったらしいです。
 
というわけで久々に実験してみたのでその備忘録。いやほんと速攻忘れるので・・・。

まず環境を作る

さいきんめっきりUbuntuな人なのですが、今回はCentOS6.xでいきます。
べつにUbuntuでもできますが、実験後の本番がCentOSなので・・・。

とりあえず検証・実験なのでVMWareでちゃちゃっとやります。AWSとか借りてもいいんですが、お金もったいない・・・←ケチ 
イメージを作ってくれている人がいるのでありがたくそれを使わせていただくとして・・・。
BitTorrentでささっとダウンロードしてVMにインポートします。便利な世の中です。

で、さっさとyum updateして中身を最新にします。ここまではお約束。

 

DRBDをインストールする

最初にリポジトリをインポートします。
# rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm # cat /etc/yum.repos.d/elrepo.repo
ですね。
うまくインポートできたら、
# yum -y install drbd84-utils kmod-drbd84
でインストール。
 

ディスクを追加する

ダウンロードしてきたVMはディスク1個なのでDRBD用のデバイスを追加します。
VMだと一旦仮想マシンを落とさないといけないですが、大した手間でもないので適当に5Gくらいのイメージをこしらえておきます。
 

ホスト名を設定する

DRBDは設定する際にホスト名を参照します。
なのでホスト名を適当に決めましょう。
今回は、
  • drbd-primary
  • drbd-secondary
としました。まあなんでもいいですね。実環境では命名規則やDNSに従ったほうがいいでしょう。
あ、それからIPとホスト名をhostsファイルかDNSで紐付けておきましょう。DNSを使っている場合は何もしなくていいですね。
 
DRBDの設定
ではDRBDの設定をしていきます。
  • /etc/drbd.conf
  • /etc/drbd.d/*.res
  • /etc/drbd.d/global_common.conf
あたりをいじります。
まず、/etc/drbd.conf。
中身には、
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
と書かれてます。特に弄る必要もないのでこのまま放置します。
で、/etc/drbd.d/global_common.confを開きます。
中に色々書いてありますが、
〜略
 
common {
    net {
              Protocol C;
 
〜以下略
赤文字のところを追記して保存します。
あとのパラメータは設定を凝りだしたら必要になってくるはず・・・。
 
で、最後にデバイスの設定をします。/etc/drbd.d/の下に拡張子「.res」で作れば読み込まれるので、適当な名前で作成します。
中身には、
resource drbd-primary {
  volume 0 {
       device /dev/drbd0;
       disk   /dev/sdb1;
       meta-disk internal;
  }
 
  on drbd-primary {
    address 172.16.202.129:7789;
  }
  on drbd-secondary {
    address 172.16.202.130:7789;
  }
}
というように書きます。プライマリ用とセカンダリ用で設定は同じにします。
 

デバイスの作成

設定ファイルができたら、両方のサーバで
 
# drbdadm create-md drbd-primary
 とやってデバイスを作ります。
 

起動・同期

最後にDRBDのデーモンを起動します。といってもserviceや/etc/init.d/に既に用意されているので簡単です。
# service drbd start
でプライマリとセカンダリでそれぞれ起動します。
ちなみにこの時点てiptableでポートが遮断されてるとうまくいかないので、停止しておくかポートを解放しておきましょう。
ノード間が通信できると、
# cat /proc/drbd 
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10
 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:0 dw:0 dr:664 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
のように接続できます。
 

プライマリ昇格とファイルシステム作成・マウント

最後にプライマリを稼動系として昇格させ、ファイルシステムを作成してマウントします。
# drbdadm primary drbd-primary
# fdisk /dev/drbd0
# mkdir /data
# mount /dev/drbd /data
という感じですね。
あとはファイルを作ってからプライマリをセカンダリにしてみて同期しているかを確認すればOKです。
 
いやいや、久々にやると忘れてますが、一回やったことなので概念はきちんと覚えてますし、やりながら思い出すものです。

トラックバック

トラックバックがありません

コメント

コメント表示形式 一覧 | スレッド

コメントがありません

コメントの追加

電子メールアドレスは表示せず、電子メールの通知にのみ使用します。

ロボットからの自動的なコメントスパムを防ぐために、画像の下の入力ボックスに適切な文字列を入力してください。文字列が一致する場合のみ、コメントが送信されるでしょう。ブラウザーが Cookie をサポートし、受け入れることを確認してください。さもなければ、コメントを正確に確認することができません。
CAPTCHA

Form options

送信されたコメントは表示する前にもでレーションされるでしょう。

tweetbackcheck