So-net無料ブログ作成

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