Carpe Diem

  Top > スポンサー広告> 高信頼性システム > DRBD でストレージ冗長化  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DRBD でストレージ冗長化

2014 - 03/12 [Wed] - 23:28

DRBD を用いてネットワークディスクミラーリングを構築します。
NIC が1つでも構築できますが、冗長化目的なので通常サービス用の NIC とは別で NIC を用意して同期させます。

今回用いる環境は
○PC1 - CentOS6.4
hostname: drbd01
eth0: 192.168.1.1 // サービス用
eth1: 192.168.11.1 // ミラーリング用
/dev/sda // システム
/dev/sdb // 同期するストレージ

○PC2 - CentOS6.4
hostname: drbd02
eth0: 192.168.1.2 // サービス用
eth1: 192.168.11.2 // ミラーリング用
/dev/sda // システム
/dev/sdb // 同期するストレージ

です。IPの固定化は「CentOS6 の設定 その2(ネットワーク)」を参考にして下さい。

基本的に drbd01 の方を設定していきます。drbd02 も同様に設定して下さい。

◆事前準備
SELinux は disabled、iptables, NetworkManager は stopさせておいて下さい。

# service NetworkManager stop
# chkconfig NetworkManager off
# service iptables stop
# chkconfig iptables off



◆ホスト名の修正
ホスト名が localhost のままだと drbd でエラーが出るので変更しておきます。

# vi /etc/sysconfig/network
HOSTNAME=drbd01

設定反映のために再起動しておきます。

# reboot

変更が完了したら /etc/hosts に以下を追記します。DNSサーバがあれば不要です。

# vi /etc/hosts
192.168.11.1 drbd01
192.168.11.2 drbd02


◆同期用ディスクの設定
追加したディスクでパーティション切っておきます。

[root@drbd01 ~]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n // n で新しいパーティションを作成
Command action
e extended
p primary partition (1-4)
p // p でprimary diskに
Partition number (1-4): 1 // sd*1を作成
First cylinder (1-391, default 1): // デフォルト値で良いのでEnter
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-391, default 391): // デフォルト値で良いのでEnter
Using default value 391

Command (m for help): w // w でwrite
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

drbd02 も同様に。


◆drbd インストール
yum でインストールしますが、elリポジトリが必要です。

# rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm

ではインストール

# yum -y install drbd84-utils kmod-drbd84


◆drbd 設定
リソースファイル名を r0.res として新規作成し、DRBDデバイス名を /dev/drbd0 とします。

# vi /etc/drbd.d/r0.res
# リソース名を r0 に
resource r0 {
# DRBDデバイス
device /dev/drbd0;
# 物理デバイス
disk /dev/sdb1;
meta-disk internal;
# ホスト名
on drbd01 {
# IP:ポート
address 192.168.11.1:7788;
}
on drbd02 {
address 192.168.11.2:7788;
}
}


モジュールロードします

# modprobe drbd


メタデータを作成します。この手順は、最初にデバイスを作成するときにのみ必要です。
これにより、DRBDのメタデータを初期化します。リソース名を指定して実行します。

# drbdadm create-md r0
--== Thank you for participating in the global usage survey ==--
The server's response is:

you are the 6744th user to install this version
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success



◆起動、同期確認
サービス起動します。まずdrbd01の方から。

# service drbd start
Starting DRBD resources: [
create res: r0
prepare disk: r0
adjust disk: r0Operation canceled.
:failed(apply-al:20)
adjust net: r0
]
..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
reboot the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
expire after 0 seconds. [wfc-timeout]
(These values are for resource 'r0'; 0 sec -> wait forever)
To abort waiting enter 'yes' [ 11]: yes // 一旦yesでコンソールに戻します。

状態を確認してみます。

# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0


次に同様の設定をしたdrbd02を。

# service drbd start
Starting DRBD resources: [
create res: r0
prepare disk: r0
adjust disk: r0Operation canceled.
:failed(apply-al:20)
adjust net: r0
]
.

先ほどと違って相手ノード(drbd01)がいるため待機メッセージが流れませんね。確認すると、

# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:3140544

Secondary/Secondary で起動できていることが確認できます。


◆drbd01をプライマリに昇格させて同期させる
最初の同期では以下のオプションをつけて起動して下さい。

[root@drbd01 ~]# drbdadm -- --overwrite-data-of-peer primary r0

ステータスをチェックすると同期が始まります。

# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:4012 nr:0 dw:0 dr:4684 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:3136532
[>....................] sync'ed: 0.3% (3136532/3140544)K
finish: 0:23:45 speed: 2,004 (2,004) K/sec


完了すると以下のようになります。

# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 599f286440bd633d15d5ff985204aff4bccffadd build by phil@Build64R6, 2013-10-14 15:33:06
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:3140544 nr:0 dw:0 dr:3141216 al:0 bm:192 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0



◆/dev/drbd01をフォーマット
プライマリ側でデバイスをフォーマットしてマウントします。

[root@drbd01 ~]# mkfs -t ext4 /dev/drbd0
[root@drbd01 ~]# mkdir /share
[root@drbd01 ~]# mount -t ext4 /dev/drbd0 /share

テストファイルを作成します。

[root@drbd01 ~]# touch /share/hoge
[root@drbd01 ~]# ls /share
hoge lost+found



◆drbd01を降格、drbd02を昇格する
drbd01側で

[root@drbd01 ~]# umount /share
[root@drbd01 ~]# drbdadm secondary r0

drbd02側で

[root@drbd02 ~]# drbdadm primary r0
[root@drbd02 ~]# mkdir /share
[root@drbd02 ~]# mount /dev/drbd01 /share
[root@drbd02 ~]# ls /share
hoge lost+found

きちんと同期されていることが確認できます。
お疲れ様でした。

ソース:
Install DRBD (Distributed Replicated Block Device) on Centos 6.3
CentOS6.0にDRBDをインストール
DRBD - 分散ストレージシステム
DRBD8からオプションが変わってた

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。