SSブログ

DRBDの試用 [CentOS]

Linux において、共有ディスクを使用しない HA クラスタ環境の構築について検討するため、DRBD を試用してみた。
詳細は、以下の通りである。

1. DRBD (Distributed Replicated Block Device) の機能


複数のノード間で、パーティションをミラーリングするソフトウェアである。

・TCP/IP ネットワークを利用して同期(ミラーリング)される。
・特別なハードウェアを必要としない。
・Linux 上で動作するオープンソース・ソフトウェアである。
・クラスタリングソフトと組み合わせて、Shared nothing 型の HA クラスタを構成できる。


2. システム要件


(1) ソフトウェアのバージョン


・OS: CentOS 6.7
・drbd84-utils-8.9.5-1.el6.elrepo.i686
・kmod-drbd84-8.4.7-1_1.el6.elrepo.i686


(2) 使用するノード


・vm1.private.net(192.168.0.21)
・vm4.private.net(192.168.0.24)


(3) 使用するデバイス


・パーティション: /dev/sdb1
・DRBD 用デバイス: /dev/drbd0


3. 導入手順

3-1. 手順-1


関係するすべてのノードで、下記の手順を実施する。

(1) ネットワーク環境の構築

(2) パッケージのインストール


(a) elrepo.org をリポジトリに追加

(b) パッケージのインストール

# yum install drbd84-utils kmod-drbd84


(3) DRBD の設定


(a) /etc/drbd.d/global_common.conf の編集

global {
    usage-count no;
}

common {
    handlers {
    }

    startup {
        wfc-timeout 60;
    }

    options {
    }

    disk {
        resync-rate 50M;
    }

    net {
        protocol C;
        csums-alg sha1;
        verify-alg sha1;
    }
}


・usage-count: DRBD プロジェクトへの情報提供の有無(yes/no)
・wfc-timeout: 起動時の他ノードとの接続タイムアウト(sec)
・resync-rate: 再同期に使用する最大帯域幅(Byte/sec)
・protocol: 同期プロトコルのモード(A:非同期, B:メモリ同期, C:同期)
・csums-alg: 更新の検出に使用するアルゴリズム
・verify-alg: 照合に使用するアルゴリズム


(b) /etc/drbd.d/r0.res の編集

resource r0 {
    meta-disk internal;
    device /dev/drbd0;
    disk /dev/sdb1;

    on vm1.private.net {
        address 192.168.0.21:7788;
    }
    on vm4.private.net {
        address 192.168.0.24:7788;
    }
}


・meta-disk: メタ情報の保存方法
・device: DRBD デバイス
・disk: DRBD デバイスを構成するパーティション
・address: ノードのアドレス、使用するポート


(c) メタデータの作成

# drbdadm create-md r0


(補足)
パーティション内にファイルシステムが存在する場合には、エラーとなる。
(その旨のエラーが出力される。)
この場合には、下記の手順により当該パーティションを 0 クリアする。
# dd if=/dev/zero of=<dev-path> bs=1M count=1


(4) リソースの有効化


(a) リソースの有効化

# drbdadm up r0


(b) 状態の確認

# cat /proc/drbd


正常終了した場合には、下記のように出力される。
cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent


(5) drbd の自動起動の有効化

# chkconfig drbd on

3-2. 手順-2


該当するノードで、下記の手順を実施する。

(1) 初期同期


vm4.private.net(同期先) で下記の手順を実施する。

(a) 現在のデータの破棄

# drbdadm invalidate r0


(b) 状況の確認

# cat /proc/dbrd


同期完了後には、下記のように出力される。
cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate


(2) ファイルシステムの作成


vm1.private.net(同期元) で下記の手順を実施する。

(a) Primary への移行

# drbdadm primary r0


(b) ファイルシステムの作成

# mke2fs -j /dev/drbd0


(補足)
同期されるため、他ノードでの実施は不要である。


4. DRBD デバイスの使用方法


Primary ノードにおいて、通常のデバイスと同様に扱うことができる。

(1) Primary または Secondary ノードへの移行


下記のコマンドを実施する。
ただし、同時に複数のノードが Primary ノードとなることはできない。

[Primary ノードへの移行の場合]
# drbdadm primary 

[Secondary ノードへの移行の場合]
# drbdadm secondary 

(例)
# drbdadm primary r0
# drbdadm secondary r0


(2) 状況の確認


下記のコマンドを実施する。

# cat /proc/drbd


[Primary ノードの場合]
cs:Connected ro:Primary/Secondary と出力される。

[Secondary ノードの場合]
cs:Connected ro:Secondary/Primary と出力される。


5. 参考情報


・http://qiita.com/takehironet/items/13518725ee7c694efe90
・https://blog.3ware.co.jp/drbd-users-guide-8.4/drbd-users-guide.html



nice!(10)  コメント(0)  トラックバック(0) 

nice! 10

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。