サーバ3台を使って簡単にDRBD9で多ノード環境を構築します。
DRBDでリアルタイムにデータ冗長化をします。
前提条件
3台のサーバDRBD9、DRBD Manageがインストール済みであること。
構成図
3台構成で「r0」という名前のリソースを作成しリソース上のデータをリアルタイムに冗長化します。
DRBD9-1を一号機、DRBD9-2を二号機、DRBD9-3を三号機と呼ぶことにします。
DRBD9インストール手順
インストール手順については以下をご参照ください。
DRBD9環境をソースコードからVagrant+Ansibleでインストールしてみた。(CentOS7編)
http://qiita.com/ksawada1979/items/1dd528f9867f78a10f73
DRBD9環境をVagrant+Ansibleで540秒でインストールしてみた。(Ubuntu16.04編)
http://qiita.com/ksawada1979/items/4fed3724bac966c1738b
DRBD9初期化
まず初期化を実施します。特に指定が無い場合は本ページの手順は一号機で実施します。
192.168.33.11は実際の環境と読み替えて実施します。
途中でyesを入力してください。
$ sudo drbdmanage init 192.168.33.11
You are going to initialize a new drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Empty drbdmanage control volume initialized on '/dev/drbd0'.
Empty drbdmanage control volume initialized on '/dev/drbd1'.
Operation completed successfully
ノード追加
次にノードを追加します。
二号機を追加します。
$ sudo drbdmanage add-node DRBD9-2 192.168.33.12
Operation completed successfully
Operation completed successfully
Host key verification failed.
Join command for node DRBD9-2:
drbdmanage join -p 6999 192.168.33.12 1 DRBD9-1 192.168.33.11 0 cl+AZLWc3tV2VZJERwqu
三号機を追加します。
$ sudo drbdmanage add-node DRBD9-3 192.168.33.13
Operation completed successfully
Operation completed successfully
Host key verification failed.
Join command for node DRBD9-3:
drbdmanage join -p 6999 192.168.33.13 2 DRBD9-1 192.168.33.11 0 cl+AZLWc3tV2VZJERwqu
次に二号機にログインして以下を実行します。(ここでのコマンドは先ほどのadd-nodeコマンドの結果からコピー&ペーストして実行してください。)
$ sudo drbdmanage join -p 6999 192.168.33.12 1 DRBD9-1 192.168.33.11 0 cl+AZLWc3tV2VZJERwqu
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Operation completed successfully
次に三号機にログインして以下を実行します。
$ sudo drbdmanage join -p 6999 192.168.33.13 2 DRBD9-1 192.168.33.11 0 cl+AZLWc3tV2VZJERwqu
You are going to join an existing drbdmanage cluster.
CAUTION! Note that:
* Any previous drbdmanage cluster information may be removed
* Any remaining resources managed by a previous drbdmanage installation
that still exist on this system will no longer be managed by drbdmanage
Confirm:
yes/no: yes
Operation completed successfully
ノード確認
ノードが追加されたことを確認します。
$ sudo drbdmanage list-nodes
+------------------------------------------------------------------------------+
| Name | Pool Size | Pool Free | | State |
|------------------------------------------------------------------------------|
| DRBD9-1 | 10236 | 10228 | | ok |
| DRBD9-2 | 10236 | 10228 | | ok |
| DRBD9-3 | 10236 | 10228 | | ok |
+------------------------------------------------------------------------------+
プールとリソースとボリュームの関係
ノードが追加できたところで早速データ冗長化するための領域リソースを追加するまえにプールとリソースとボリュームの関係を整理しておきます。
ノード追加後にリソースを追加し、次にボリュームを割り当て最後にデプロイすることでDRBD上で使用することになります。割り当てられるボリュームはプールの領域から切り出して割り当てます。
プールの作成部分はインストール編で自動で実施しています。
「vgs」コマンドでプール名とプールの領域を確認することができます。
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 39.51g 44.00m
drbdpool 1 0 0 wz--n- 10.00g 10.00g
リソース追加
リソースの追加をします。
ここではr0という名前のリソースを追加します。
$ sudo drbdmanage add-resource r0
Operation completed successfully
リソースが追加されたことを確認します。
リソース追加確認
r0というリソースが追加されたことを確認します。
リソースはポート7000番を使用します。リソースを追加するごとに7000番から連番で使用します。
$ sudo drbdmanage list-volumes --groupby Size --show Port
+------------------------------------------------------------------------------+
| Name | Vol ID | Size | Minor | Port | | State |
|------------------------------------------------------------------------------|
| r0 | * | * | * | 7000 | | * |
+------------------------------------------------------------------------------+
ボリューム割り当て
ボリュームを割り当てます。先ほどの解説例では2つのボリュームの図がありましたが、ここでは5GBのボリューム1つを「r0」リソースに追加します。
$ sudo drbdmanage add-volume r0 5GB
Operation completed successfully
ここでリソース内に領域が確保されます。
デプロイはしていないのでDRBD上ではまだ使えません。
ボリューム割り当て確認
r0リソースにボリュームが割り当てられたことを確認します。
Vol IDは「0」になっていますがr0にボリュームをさらに追加すると1,2,3のように連番で振られます。
$ sudo drbdmanage volumes
+------------------------------------------------------------------------------+
| Name | Vol ID | Size | Minor | | State |
|------------------------------------------------------------------------------|
| r0 | 0 | 4.66 GiB | 100 | | ok |
+------------------------------------------------------------------------------+
デプロイ
いよいよデプロイをします。
デプロイをすることによりDRBDで使用することができます。
最後の3は3台のサーバにデプロイすることを示しています。2にして2台にすることもできます。
$ sudo drbdmanage deploy-resource r0 3
Operation completed successfully
ここでメタディスクが作成されます。
また初期同期もここで実行されます。
デプロイ確認
デプロイされたことを確認します。
r0リソースが初期同期していることも確認します。
replication:SyncSourceとなっていることを確認します。
「.drbdctrl」は各ノードにインストールされたDRBDコントロール用のソフトウェアです。全てSecondaryになっていますが問題ありません。設定変更などをしたときに一時的にPrimaryになりさらに他ノードと設定情報を同期した後にSecondaryに戻ります。
$ sudo drbdadm status
The server's response is:
you are the 3rd user to install this version
.drbdctrl role:Secondary
volume:0 disk:UpToDate
volume:1 disk:UpToDate
DRBD9-2 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
DRBD9-3 role:Secondary
volume:0 peer-disk:UpToDate
volume:1 peer-disk:UpToDate
r0 role:Secondary
disk:UpToDate
DRBD9-2 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:5.57
DRBD9-3 role:Secondary
replication:SyncSource peer-disk:Inconsistent done:5.70
ファイルシステム作成
DRBDで使用できるようになったところで、ファイルシステムを作成します。
CentOS7のデフォルトファイルシステムであるxfsを指定します。
$ sudo mkfs -t xfs /dev/drbd100
meta-data=/dev/drbd100 isize=256 agcount=4, agsize=305176 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1220703, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
マウント
マウントします。
$ sudo mkdir /drbd9
$ sudo mount /dev/drbd100 /drbd9
書き込みテスト
ddコマンドで作成したDRBD領域に書き込みを行います。
$ sudo dd if=/dev/zero of=/drbd9/test.file bs=1M count=100
100+0 レコード入力
100+0 レコード出力
104857600 バイト (105 MB) コピーされました、 0.453204 秒、 231 MB/秒
最後に書き込みされたことを確認します。
$ ls -l /drbd9
合計 102400
-rw-r--r--. 1 root root 104857600 10月 27 18:20 test.file