CentOS 7
Sponsored Link

DRBD 9 : 設定2018/07/12

 
DRBD インストール後の設定です。
当例では以下のような環境で DRBD クラスターを構築します。
+----------------------+          |          +----------------------+
| [    DRBD Node#1   ] |10.0.0.51 | 10.0.0.52| [    DRBD Node#2   ] |
|   node01.srv.world   +----------+----------+   node02.srv.world   |
|                      |                     |                      |
+----------------------+                     +----------------------+

前提として、クラスター参加ノード全てに DRBD デバイスに割り当てる空きブロックデバイスが存在している必要があります。
[1] 全ノードで、空きブロックデバイスに DRBD 用のボリュームグループを作成しておきます。
[root@node01 ~]#
pvcreate /dev/sdb1

Physical volume "/dev/sdb1" successfully created
[root@node01 ~]#
vgcreate drbdpool /dev/sdb1

Volume group "vg_volume01" successfully created
[2] Firewalld を有効にしている場合は、サービスポートの許可が必要です。
[root@node01 ~]#
firewall-cmd --add-port=6996-7800/tcp --permanent

success
[root@node01 ~]#
firewall-cmd --reload

success
[3] いずれかのノードで DRBD クラスターの初期化を実行してノードを追加します。
[root@node01 ~]#
drbdmanage init 10.0.0.51

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
[ 2420.329129] drbd .drbdctrl: Starting worker thread (from drbdsetup [13925])
[ 2420.451483] drbd .drbdctrl/0 drbd0: disk( Diskless -> Attaching )
[ 2420.453513] drbd .drbdctrl/0 drbd0: Maximum number of peer devices = 31
.....
.....
[ 2421.677920] drbd .drbdctrl: Preparing cluster-wide state change 2615618191 (0->-1 3/1)
[ 2421.680499] drbd .drbdctrl: Committing cluster-wide state change 2615618191 (2ms)
[ 2421.682894] drbd .drbdctrl: role( Secondary -> Primary )
Waiting for server: .
Operation completed successfully

# DRBD クラスターノードを追加する

[root@node01 ~]#
drbdmanage add-node node02.srv.world 10.0.0.52

[ 2452.989515] drbd .drbdctrl node02.srv.world: Starting sender thread (from drbdsetup [14020])
[ 2452.997518] drbd .drbdctrl node02.srv.world: conn( StandAlone -> Unconnected )
Operation completed successfully
Operation completed successfully
[ 2453.037235] drbd .drbdctrl node02.srv.world: Starting receiver thread (from drbd_w_.drbdctr [13926])
[ 2453.040902] drbd .drbdctrl node02.srv.world: conn( Unconnected -> Connecting )
Host key verification failed.
Give leader time to contact the new node
Operation completed successfully
Operation completed successfully

Join command for node node02.srv.world:
drbdmanage join -p 6999 10.0.0.52 1 node01.srv.world 10.0.0.51 0 twuZE5BAthnZIRyEAAS/
[4] [3] で作業したノードと異なるノードへ移動し、DRBD クラスターノードを追加した際に表示されたクラスター参加コマンドを実行します。
[root@node02 ~]#
drbdmanage join -p 6999 10.0.0.52 1 node01.srv.world 10.0.0.51 0 twuZE5BAthnZIRyEAAS/

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
[ 2491.338532] drbd: loading out-of-tree module taints kernel.
[ 2491.343082] drbd: module verification failed: signature and/or required key missing - tainting kernel
[ 2491.364065] drbd: initialized. Version: 9.0.14-1 (api:2/proto:86-113)
.....
.....
[ 2553.012505] drbd .drbdctrl node01.srv.world: conn( StandAlone -> Unconnected )
[ 2553.025846] drbd .drbdctrl node01.srv.world: Starting receiver thread (from drbd_w_.drbdctr [13762])
[ 2553.028899] drbd .drbdctrl node01.srv.world: conn( Unconnected -> Connecting )
Operation completed successfully
[5] 以上の設定後、ステータスを確認して、全ノードとも [ok] であれば OK です。
[root@node01 ~]#
drbdadm status

  --==  Thank you for participating in the global usage survey  ==--
The server's response is:

you are the 1527th user to install this version
.drbdctrl role:Primary
  volume:0 disk:UpToDate
  volume:1 disk:UpToDate
  node02.srv.world role:Secondary
    volume:0 peer-disk:UpToDate
    volume:1 peer-disk:UpToDate

[root@node01 ~]#
drbdmanage list-nodes

+--------------------------------------------------+
| Name             | Pool Size | Pool Free | State |
|--------------------------------------------------|
| node01.srv.world |     81916 |     81908 |    ok |
| node02.srv.world |     81916 |     81908 |    ok |
+--------------------------------------------------+
[6] 設定した DRBD クラスターにリソースとボリュームを作成します。
# [resource01] リソース作成

[root@node01 ~]#
drbdmanage add-resource resource01

Operation completed successfully
[root@node04 ~]#
drbdmanage list-resources

+--------------------+
| Name       | State |
|--------------------|
| resource01 |    ok |
+--------------------+

# 10G ボリュームを追加

[root@node01 ~]#
drbdmanage add-volume resource01 10GB

Operation completed successfully
[root@node01 ~]#
drbdmanage list-volumes

+------------------------------------------------+
| Name       | Vol ID |     Size | Minor | State |
|------------------------------------------------|
| resource01 |      0 | 9.31 GiB |   100 |    ok |
+------------------------------------------------+

# 作成したリソースをデプロイする

# 最後の数字はリソースに使用するノード数 (クラスター構成ノード数と同じ数でなくてもOK)

[root@node01 ~]#
drbdmanage deploy-resource resource01 2

Operation completed successfully
# 状態確認 : 設定直後は [Inconsistent] (不整合) 状態

[root@node01 ~]#
drbdadm status

.drbdctrl role:Secondary
  volume:0 disk:UpToDate
  volume:1 disk:UpToDate
  node02.srv.world role:Primary
    volume:0 peer-disk:UpToDate
    volume:1 peer-disk:UpToDate

resource01 role:Secondary
  disk:Inconsistent
  node02.srv.world role:Secondary
    replication:SyncTarget peer-disk:UpToDate done:0.07

# しばらく時間が経つと同期が完了し [Inconsistent] 状態は解消される

[root@node01 ~]#
drbdadm status

.drbdctrl role:Secondary
  volume:0 disk:UpToDate
  volume:1 disk:UpToDate
  node02.srv.world role:Primary
    volume:0 peer-disk:UpToDate
    volume:1 peer-disk:UpToDate

resource01 role:Secondary
  disk:UpToDate
  node02.srv.world role:Secondary
    peer-disk:UpToDate
[7] 以上で設定完了です。後は DRBD デバイスにファイルシステムを作成して、プライマリ側でマウントすれば利用可能です。
# /dev/drbd*** の数値は [drbdmanage list-volumes] で表示される [Minor] の数値

[root@node01 ~]#
mkfs.xfs /dev/drbd100

[root@node01 ~]#
mkdir /drbd_disk

[root@node01 ~]#
mount /dev/drbd100 /drbd_disk

[root@node01 ~]#
df -hT

Filesystem          Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root xfs        26G  1.7G   25G   7% /
devtmpfs            devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs               tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs               tmpfs     2.0G  8.5M  2.0G   1% /run
tmpfs               tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda1           xfs      1014M  238M  777M  24% /boot
tmpfs               tmpfs     396M     0  396M   0% /run/user/0
/dev/drbd100        xfs       9.4G   33M  9.3G   1% /drbd_disk

# テストファイル作成

[root@node01 ~]#
echo 'test file' > /drbd_disk/test.txt

[root@node01 ~]#
ll /drbd_disk

total 4
-rw-r--r--. 1 root root 10 Jul 12 19:54 test.txt
[8] セカンダリ側で DRBD デバイスをマウントするには、現在プライマリになっているホストでアンマウントしてセカンダリに降格させ、 セカンダリ側をプライマリに昇格させてマウントという流れになります。
########### プライマリ側 ###########

# アンマウントしてセカンダリにする

[root@node01 ~]#
umount /drbd_disk

[root@node01 ~]#
drbdadm secondary resource01
########### セカンダリ側 ###########

# プライマリにしてマウントする

[root@node02 ~]#
drbdadm primary resource01

[root@node02 ~]#
mount /dev/drbd100 /drbd_disk

[root@node02 ~]#
df -hT

Filesystem          Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root xfs        26G  1.6G   25G   6% /
devtmpfs            devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs               tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs               tmpfs     2.0G  8.5M  2.0G   1% /run
tmpfs               tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda1           xfs      1014M  238M  777M  24% /boot
tmpfs               tmpfs     396M     0  396M   0% /run/user/0
/dev/drbd100        xfs       9.4G   33M  9.3G   1% /drbd_disk

[root@node02 ~]#
ll /drbd_disk

total 4
-rw-r--r--. 1 root root 10 Jul 12 19:54 test.txt
関連コンテンツ