機能・要件
 構成・方式
 タスク
 導入 
    EPELレポジトリ
    Pacemaker
    Corosync系
    DRBD
    OS設定
    LVM
    パーティション
    DRBD設定
    Pmaker設定
    DRBDのRA

 EPELレポジトリの追加
 ・デフォルトリポジトリではDRBDはインストールできない。
 ・yumリポジトリに「EPEL」を追加

 Pacemakerのインンストール
 ・ローカルリポジをダウンロード (ダウンロード&インストール
OSに応じた「Pacemakerリポジトリパッケージ」を選択

 Corosync系
 ・ Pacemaker-1.1 (Pacemaker-1.1系+Corosync 2系)
Contents項目に従って、インストールなどを行う。
 ・「Heartbeatは今後非推奨とするためパッケージには含みません。」

 DRBDのインンストール
 ・「EPEL」のパッケージが古い場合、ELRepo リポジトリを使用
 ・ELRepo リポジトリ使用
# yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# yum search drbd     elrepo | 2.9 kB 00:00:00     elrepo/primary_db | 479 kB 00:00:16     ===================== N/S matched: drbd ===================     drbd84-utils.x86_64 : Management utilities for DRBD     drbd84-utils-sysvinit.x86_64 : The SysV initscript to manage the DRBD.     drbd90-utils.x86_64 : Management utilities for DRBD     drbd90-utils-sysvinit.x86_64 : The SysV initscript to manage the DRBD.     kmod-drbd84.x86_64 : drbd84 kernel module(s)     kmod-drbd90.x86_64 : drbd90 kernel module(s)      Name and summary matches only, use "search all" for everything.  ・v9系を使用
# yum info drbd90-utils      インストール済みパッケージ      名前          : drbd90-utils      アーキテクチャー  : x86_64      バージョン       : 9.12.2      リリース        : 1.el7.elrepo      リポジトリー      : installed      提供元リポジトリー : elrepo # yum install drbd90-utils kmod-drbd90
依存性解決でカーネルのアップデートを要求されたら行う。
# yum --enablerepo=elrepo-kernel install kernel-ml
(1/2): drbd90-utils-9.12.2-1.el7.elrepo.x86_64.rpm | 720 kB
(2/2): kmod-drbd90-9.0.22-3.el7_9.elrepo.x86_64.rpm | 284 kB
# systemctl list-unit-files | grep drbd
drbd.service disabled (boot時未起動)
DRBDはPacemakerによって起動される
設定を変更
# lsmod | grep drbd | wc -l
0 (カーネルモジュール未読み込み)

 OSの設定
 ・SELinux
無効にしたほうが無難、確認 getenforce 「Enforcing」
# cp -piv /etc/selinux/config /etc/selinux/config.`date "+%Y%m%d"`
書換え「enforcing→disabled」、リブート、確認 getenforce 「Disabled」
 ・ファイアウォールの設定
リソースのポート (7788から必要数)
DRBD  ポート:7788、7789  プロトコル:TCP
# firewall-cmd --add-port=7788/tcp --zone=public --permanent
# firewall-cmd --add-port=7789/tcp --zone=public --permanent
# firewall-cmd --reload
 ・/etc/hosts の設定
関係するノード(インターコネクトなど)を「/etc/hosts」に登録
 ・Syslogの設定
専用のファイルに出力されるようにSyslog(rsyslog)の設定を行う。

 LVM 又は、 パーティションの準備
 ・DRBD用のLVMパーティション)を準備
 ・確認
# lsblk -p (両ノード、Postfix例

 DRBDの設定
 ・両系にDRBD用のLVM(パーティション)があれば、DRBD用のデバイスを作成できる。
 ・DRBDリソースの設定ファイルを作成し、待機系ノードにコピー
drbd.confの内容
 ・リソースの設定ファイル (Postfix例)
/etc/drbd.d/r0.res     resource r0 {       on kvm3 {       address 192.168.5.3:7788;       device /dev/drbd0; (DRBDデバイス、名前/dev/drbdで始まる。)       disk /dev/centos/mail; (実際に利用するLVM(パーティション))       meta-disk internal;       }       on kvm4 {       address 192.168.5.4:7788;       device /dev/drbd0;       disk /dev/centos/mail;       meta-disk internal;       }      } /etc/drbd.d/r1.res      resource r1 {       on kvm3 {       address 192.168.5.3:7789;       device /dev/drbd1;       disk /dev/centos/postfix;       meta-disk internal;       }       on kvm4 {       address 192.168.5.4:7789;       device /dev/drbd1;       disk /dev/centos/postfix;       meta-disk internal;       }      } /etc/drbd.d/r2.res      resource r2 {       on kvm3 {       address 192.168.5.5:7790;       device /dev/drbd2;       disk /dev/centos/mailman1;       meta-disk internal;       }       on kvm4 {       address 192.168.5.4:7790;       device /dev/drbd2;       disk /dev/centos/mailman1;       meta-disk internal;       }      } /etc/drbd.d/r3.res

/etc/drbd.d/r4.res

/etc/drbd.d/r5.res

/etc/drbd.d/global_common.conf      global {       usage-count no;       udev-always-use-vnr; # treat implicit the same as explicit volumes      }      common {       handlers {       }       startup {       }       options {       }       disk {       }       net {       protocol C;       }      }  ・文法エラーメッセージ例(全角スペースなど)
drbd.d/r0.res:2: Parse error: 'protocol | on | disk ・・・・ but got '・ (TK 282)
 ・初回のみDRDBのメタデータを両ノードで初期化
# drbdadm create-md r0
# drbdadm create-md r1
# drbdadm create-md r2    (以下、後で追加)
# drbdadm create-md r3
# drbdadm create-md r4
# drbdadm create-md r5      initializing activity log      initializing bitmap (160 KB) to all zero      Writing meta data...      New drbd meta data block successfully created.  ・DRBDのカーネルモジュールはロード、drbdデーモンは未動作(DRDB両系未起動)     # lsmod | grep drbd      drbd 573100 0      libcrc32c 12644 4 xfs,drbd,nf_nat,nf_conntrack     # ps -ef | grep drbd | grep -v grep      root 3734 2 0 15:41 ? 00:00:00 [drbd-reissue]     # systemctl status drbd      ● drbd.service - DRBD -- please disable. Unless you are NOT using a cluster manager.       Loaded: loaded (/usr/lib/systemd/system/drbd.service; disabled; vendor preset: disabled)       Active: inactive (dead)  ・リソースをアップ
# drbdadm up rx (r0~r5、ノード1、2)
# lsblk -p (両ノード、Postfix例
# cat /proc/partitions      major minor #blocks name       252 0 314572800 vda       252 1 1048576 vda1       252 2 249175040 vda2       11 0 1048575 sr0       253 0 52428800 dm-0       253 1 7995392 dm-1       253 2 41943040 dm-2       253 3 52428800 dm-3       253 4 5242880 dm-4       253 5 5242880 dm-5       253 6 2097152 dm-6       253 7 2097152 dm-7       253 8 2097152 dm-8       253 9 2097152 dm-9       147 0 5242684 drbd0       147 1 5242684 drbd1       147 2 2097052 drbd2       147 3 2097052 drbd3       147 4 2097052 drbd4       147 5 2097052 drbd5 # ps -ef | grep drbd | grep -v grep      root 1465 2 0 2月11 ? 00:00:00 [drbd-reissue]      root 1511 2 0 2月11 ? 00:00:00 [drbd_w_r0]      root 1523 2 0 2月11 ? 00:00:00 [drbd_w_r1]       :       :      root 7125 2 0 2月11 ? 00:00:00 [drbd_as_r5]      root 7135 2 0 2月11 ? 00:00:00 [drbd_a_r0]      root 7136 2 0 2月11 ? 00:00:00 [drbd_as_r0] # drbdadm status(両ノード)       r0 role:Secondary       disk:UpToDate       kvm4.xxxx.xxx role:Secondary       peer-disk:UpToDate       r1 role:Secondary       disk:UpToDate       kvm4.xxxx.xxx role:Secondary       peer-disk:UpToDate       r2 role:Secondary (r2~r4追加)       disk:Inconsistent       kvm4.xxxx.xxx connection:Connecting       peer-disk:Inconsistent       r3 role:Secondary       disk:Inconsistent       kvm4.xxxx.xxx connection:Connecting       peer-disk:Inconsistent       r4 role:Secondary       disk:Inconsistent       kvm4.xxxx.xxx connection:Connecting       peer-disk:Inconsistent       r5 role:Secondary       disk:Inconsistent       kvm4.xxxx.xxx connection:Connecting       peer-disk:Inconsistent  ・データの初期同期
kvm3をPrimaryに昇格することで初期同期を実施
# drbdadm primary --force r0 (r1~r5同様)
# drbdadm status (ノード1)       r0 role:Primary       disk:UpToDate       kvm4.xxxx.xxx role:Secondary       replication:SyncSource peer-disk:Inconsistent done:25.81       (レプリケーション状態, 対向のディスク状態, 同期の完了率)       peer-disk:UpToDate(同期完了時)       r1~r5 同様 # drbdadm status (ノード2)       r0 role:Secondary       disk:Inconsistent (Inconsistentは未だ不一致の状態)       kvm3.xxxx.xxx role:Primary       replication:SyncSource peer-disk:Inconsistent done:25.81       (レプリケーション状態, 対向のディスク状態, 同期の完了率)       peer-disk:UpToDate(同期完了時)       r1~r5 同様  ・DRBDデバイスにファイルシステムを作成
Primaryのみで行う。
# mkfs.xfs -f /dev/drbd1 (r1~r5同様、agsizeやblocksはサイズで異なる。)       meta-data=/dev/drbd1 isize=512 agcount=4, agsize=327668 blks             = sectsz=512 attr=2, projid32bit=1             = crc=1 finobt=0, sparse=0       data   = bsize=4096 blocks=1310671, imaxpct=25             = sunit=0 swidth=0 blks       naming =version 2 bsize=4096 ascii-ci=0 ftype=1       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  ・マウント
Primaryのみで行う。
# mount /dev/drbd0 /var/spool/mail
# mount /dev/drbd1 /var/spool/postfix
# mount /dev/drbd2 /var/spool/mailman
# mount /dev/drbd3 /var/lib/mailman
# mount /dev/drbd4 /etc/mailman
# mount /dev/drbd5 /usr/lib/mailman
「mount point」が無ければ作成(mkdir)してマウント
 ・マウント確認 (Primary)
# df -h      ファイルシス          サイズ 使用 残り 使用% マウント位置      devtmpfs             3.8G 0 3.8G 0% /dev      tmpfs               3.8G 0 3.8G 0% /dev/shm      tmpfs               3.8G 9.4M 3.8G 1% /run      tmpfs               3.8G 0 3.8G 0% /sys/fs/cgroup      /dev/mapper/centos-root   50G 4.3G 46G 9% /      /dev/vda1           1014M 264M 751M 26% /boot      /dev/mapper/centos-home  40G 41M 40G 1% /home      /dev/mapper/centos-var   50G 543M 50G 2% /var      tmpfs              764M 12K 764M 1% /run/user/42      tmpfs              764M 0 764M 0% /run/user/1000      /dev/drbd0            5.0G 33M 5.0G 1% /var/spool/mail2      /dev/drbd1            5.0G 33M 5.0G 1% /var/spool/postfix      /dev/drbd2            2.0G 33M 2.0G 2% /var/spool/mailman      /dev/drbd3            2.0G 33M 2.0G 2% /var/lib/mailman      /dev/drbd4            2.0G 33M 2.0G 2% /etc/mailman      /dev/drbd5            2.0G 33M 2.0G 2% /usr/lib/mailman  ・DRBD動作確認
両系のDRBD起動
Primary側の/var/spool/mailと/var/spool/postfixにファイルを作成
Primary側の/var/spool/mailと/var/spool/postfixをアンマウント
Primary側のDRBD停止
Secondary側のリソースをprimaryにする。
# drbdadm primary all
Secondary側の/var/spool/mailと/var/spool/mailmanをマウント
# mount /dev/drbd0 /var/spool/mail
# mount /dev/drbd1 /var/spool/mailman
# df -h
Secondary側に同期されたデータを確認
Mailman関連も同様に確認
 ・参考

 Pacemaker設定
 ・Pacemakerのデフォルト設定
 ・Primitiveなリソースエージェントの設定
 ・DRBDマスタスレーブリソースの設定

 DRBDマスタスレーブリソースの作成
 ・drbd_r0
DRBDのResource0 (/usr/lib/ocf/resource.d/linbit)
# pcs resource create drbd_r0 ocf:linbit:drbd drbd_resource=r0 \
op monitor interval=10s role=Master monitor interval=30s role=Slave
 ・ms_drbd_r0
drbd_r0をMaster/Slave形式で2ノードで立上げ、うち1ノードがMasterとなるように指定
# pcs resource master ms_drbd_r0 drbd_r0 master-max=1 master-node-max=1 \
clone-max=2 clone-node-max=1 notify=true
 ・fs_mail
DRBDブロックデバイス /dev/drbd0 を /var/spool/mail へマウント
postfixリソースグループを作成し所属させる。
# pcs resource create fs_mail ocf:heartbeat:Filesystem device=/dev/drbd0 \
directory=/var/spool/mail fstype=xfs --group GrpMail