DRBDに挑戦;drbdのインストール:5(CentOS7)

ELRepoリポジトリーのインストール
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
DRBDのインストール
#
yum -y install kmod-drbd84

drbdに割り当てるディスクはLVMで作成しそれぞれ /dev/vdd になっている
DRBDリソース(r0.res)設定ファイルの作成
# gedit /etc/drbd.d/r0.res

resource r0 { ← DRBDリソース名をr0とする
    device    /dev/drbd0;
    meta-disk internal;
    on smb0 { ← node1ホスト名(「uname -n」コマンドで表示される名前)
        disk      /dev/vdd; ← node1論理ボリューム名
        address   192.168.11.60:7780; ← node1IPアドレス
    }
    on smb2 { ← node2ホスト名:本来はsmb1(「uname -n」コマンドで表示される名前)
        disk      /dev/vdd; ← node2論理ボリューム名
        address   192.168.11.61:7780; ← node2IPアドレス
    }
}

メタデーターの作成
# drbdadm create-md r0

md_offset 499826814976
al_offset 499826782208
bm_offset 499811528704

Found some data

==> This might destroy existing data! <==
Do you want to proceed?
[need to type ‘yes’ to confirm]
yes

initializing activity log
initializing bitmap (14896 KB) to all zero
Writing meta data…
New drbd meta data block successfully created.
これは前に何か使用していたディスクなので、Do you want to proceed? と聞いているが、マッサラなディスクだと聞いてこない。
ここまでを smb1でもやる

drbdの起動
# systemctl start drbd
smb1も起動しないとプロンプトに戻ってこない。
また、ここまでをsmb1でもやる

DRBD確認
DRBDディスク初期同期スキップ(空ディスクの場合のみ)※ディスクにデータが格納されている場合はスキップしてはいけないが、メタデーターがインターなるだと、データーが壊されている事も考えられる
# drbdadm new-current-uuid –clear-bitmap r0/0
# cat /proc/drbd

version: 8.4.11-1 (api:1/proto:86-101)
GIT-hash: 66145a308421e9c124ec391a7848ac20203bb03c build by mockbuild@, 2020-04-05 02:58:18
 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

cs が connected で、ro が両方共 Secondary(待機状態)になっている事。
smb1側でも行って同じになっている事。smb0側で
# drbdadm primary all
# cat /proc/drbd

前略
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
後略

roがPrimary/Secondaryになっている事。smb1側でも行ってroが Secondary/Primaryになっている事。smb0 で DRBDデバイス(/dev/drbd0)にファイルシステム作成
# mkfs.xfs /dev/drbd0

meta-data=/dev/drbd0             isize=512    agcount=4, agsize=30506075 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=122024299, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=59582, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

# mount /dev/drbd0 /SmbData/
# df

devtmpfs           2006988       0   2006988    0% /dev
tmpfs              2022644   93032   1929612    5% /dev/shm
tmpfs              2022644    9764   2012880    1% /run
tmpfs              2022644       0   2022644    0% /sys/fs/cgroup
/dev/vda1         19520512 6486968  13033544   34% /
/dev/vdc          15718400 5144496  10573904   33% /Download
tmpfs               404532       4    404528    1% /run/user/42
tmpfs               404532      36    404496    1% /run/user/0
/dev/drbd0       487858868   32992 487825876    1% /SmbData

SmbDataにファイルを作って出来ているか確認
# touch /SmbData/test.txt
# ll /SmbData/
合計 0
-rw-r–r– 1 root root 0 10月 18 04:36 test.txt
次に、smb0をsecondayにし、smb1をprimaryにするが、マウントを外さないとならない
# umount /SmbData
dfでマウントされていない事を確認後
# drbdadm secondary all
smb1で
# drbdadm primary all
# cat /proc/drbd
で、ro:Secondary/Primary になっている事を確認後、マウントしdfでマウントされている事を確認後、llでファイルがsmb1にもあるか確認
# mount /dev/drbd0 /mnt
# df

<pre class="wp-block-code"><code><span style="color: #ff6600;">devtmpfs           2006988       0   2006988    0% /dev
tmpfs              2022644   93032   1929612    5% /dev/shm
tmpfs              2022644    9764   2012880    1% /run
tmpfs              2022644       0   2022644    0% /sys/fs/cgroup
/dev/vda1         19520512 6486968  13033544   34% /
/dev/vdc          15718400 5144496  10573904   33% /Download
tmpfs               404532       4    404528    1% /run/user/42
tmpfs               404532      36    404496    1% /run/user/0
/dev/drbd0       487858868   32992 487825876    1% /SmbData</span></code></pre>

# ll /SmbData
合計 0
-rw-r–r– 1 root root 0 10月 18 04:36 test.txt
そしてumount後、smb1をsecondaryにする
# umount /SmbData
# drbdadm secondary all
smb0をpromaryにし、
# drbdadm primary all
smb0とsmb1で cat /Proc/drbd を行いsmb0がprimary, smb1がsecondaryになっている事を確認

DRBDクラスタ化
グループ名は前にsmbgroupで定義している
# pcs resource create DRBD0 ocf:linbit:drbd drbd_resource=”r0″ –group smbgroup
DRBD0をmaster/slave※として設定
# pcs resource master MS_DRBD0 DRBD0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
DRBDのステータスをクリアー
# pcs resource cleanup MS_DRBD0
Cleaned up DRBD0:0 on smb1
Cleaned up DRBD0:0 on smb0
Cleaned up DRBD0:1 on smb1
Cleaned up DRBD0:1 on smb0
Waiting for 1 reply from the CRMd. OK
# pcs resource show

 Resource Group: smbgroup
     vipcheck_res	(ocf::myres:VIPcheck):	Started smb0
     VirtualIP	(ocf::heartbeat:IPaddr2):	Started smb0
 Master/Slave Set: MS_DRBD0 [DRBD0]
     Masters: [ smb0 ]
     Slaves: [ smb1 ]

/dev/drbd0をxfs形式で/mntディレクトリへマウントするクラスタリソースをFS_DRBD0という名前で追加
# pcs resource create FS_DRBD0 ocf:heartbeat:Filesystem device=/dev/drbd0 directory=/SmbData fstype=xfs –group smbgroup
# pcs resource show

 Resource Group: smbgroup
     vipcheck_res	(ocf::myres:VIPcheck):	Started smb0
     VirtualIP	(ocf::heartbeat:IPaddr2):	Started smb0
     FS_DRBD0	(ocf::heartbeat:Filesystem):	Started smb0
 Master/Slave Set: MS_DRBD0 [DRBD0]
     Masters: [ smb0 ]
     Slaves: [ smb1 ]

FS_DRBD0があることを確認
DRBDがmaster側のノードでリソースグループ(smbgroup)を起動する
# pcs constraint order promote MS_DRBD0 then start smbgroup
Adding MS_DRBD0 smbgroup (kind: Mandatory) (Options: first-action=promote then-action=start)
DRBDがMaster側のノードでFS_DRBD0リソースを起動する
# pcs constraint colocation add FS_DRBD0 MS_DRBD0 INFINITY with-rsc-role=Master
# pcs constraint order promote MS_DRBD0 then start FS_DRBD0
Adding MS_DRBD0 FS_DRBD0 (kind: Mandatory) (Options: first-action=promote then-action=start)
smb0とsmb1で df をやって、smb0でSmbDataがマウントされていて、smb1側ではマウントされていない事を確認。smb0をhalt
# halt -p
smb1側で
# pcs status

Cluster name: mycluster
Stack: corosync
Current DC: smb1 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Sun Oct 18 07:11:48 2020
Last change: Sun Oct 18 07:02:15 2020 by root via cibadmin on smb0

2 nodes configured
5 resources configured

Online: [ smb1 ]
OFFLINE: [ smb0 ]

Full list of resources:

 Resource Group: smbgroup
     vipcheck_res	(ocf::myres:VIPcheck):	Started smb1
     VirtualIP	(ocf::heartbeat:IPaddr2):	Started smb1
     FS_DRBD0	(ocf::heartbeat:Filesystem):	Started smb1
 Master/Slave Set: MS_DRBD0 [DRBD0]
     Masters: [ smb1 ]
     Stopped: [ smb0 ]

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

smb0がofflineでsmb1がマスターになっていることを確認
# df
で SmbData がマウントされている事を確認後
smb0起動し、pcs statusで両方共オンラインになっている事、マスターはまだ smb1であることを確認
# pcs cluster standby smb1
# pcs status
で smb0 がマスターになっている事を確認
# pcs cluster unstandby smb1
# pcs status
で両方がオンラインになっている事を確認
# df
で smb0側にSmbDataがマウントされている事を確認

    f-otake について

    1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
    カテゴリー: DRBDに挑戦(CentOS7) パーマリンク

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください