LoginSignup
4
8

More than 5 years have passed since last update.

簡単にできるDRBD9環境構築

Posted at

サーバ3台を使って簡単にDRBD9で多ノード環境を構築します。
DRBDでリアルタイムにデータ冗長化をします。

前提条件

3台のサーバDRBD9、DRBD Manageがインストール済みであること。

構成図

3台構成で「r0」という名前のリソースを作成しリソース上のデータをリアルタイムに冗長化します。
DRBD9-1を一号機、DRBD9-2を二号機、DRBD9-3を三号機と呼ぶことにします。
DRBD9構築編.png

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上で使用することになります。割り当てられるボリュームはプールの領域から切り出して割り当てます。

図にすると以下のような関係になります。
PoolVolumeResource.png

プールの作成部分はインストール編で自動で実施しています。
「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
4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8