DRBD 环境部署(Primary/Secondary)
一、部署 DRBD
1、环境准备
node01、node02
- Centos-7.8
- cup:1
- mem:1G
- disk: 20G、10G
2、环境配置
配置 hosts 解析
---node01
[root@node01 ~]# vim /etc/hosts +
192.168.5.11 node01
192.168.5.12 node02
---node02
[root@node02 ~]# vim /etc/hosts +
192.168.5.11 node01
192.168.5.12 node02
配置 主机间免秘钥互信
---node01
[root@node01 ~]# ll ~/.ssh/
total 16
-rw------- 1 root root 786 Mar 8 10:05 authorized_keys
-rw------- 1 root root 1675 Mar 8 10:05 id_rsa
-rw-r--r-- 1 root root 393 Mar 8 10:05 id_rsa.pub
-rw-r--r-- 1 root root 362 Mar 8 10:05 known_hosts
[root@node01 ~]# ssh-copy-id node01
[root@node01 ~]# ssh-copy-id node02
---node02
[root@node02 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@node02 ~]# ll ~/.ssh/
total 8
-rw------- 1 root root 1675 Mar 8 10:01 id_rsa
-rw-r--r-- 1 root root 393 Mar 8 10:01 id_rsa.pub
[root@node02 ~]# ssh-copy-id node01
[root@node02 ~]# ssh-copy-id node02
3、部署 DRDB
配置 yum 安装源
---node01
[root@node01 ~]# vim /etc/yum.repos.d/drbd84.repo
[brdb84]
name=drbd84
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo/el7/x86_64/
gpgcheck=0
[root@node01 ~]# yum list | grep drbd
collectd-drbd.x86_64 5.8.1-1.el7 epel
drbd.x86_64 9.15.1-2.el7 epel
drbd-bash-completion.x86_64 9.15.1-2.el7 epel
drbd-pacemaker.x86_64 9.15.1-2.el7 epel
drbd-rgmanager.x86_64 9.15.1-2.el7 epel
drbd-udev.x86_64 9.15.1-2.el7 epel
drbd-utils.x86_64 9.15.1-2.el7 epel
drbd-xen.x86_64 9.15.1-2.el7 epel
drbd84-utils.x86_64 9.12.2-1.el7.elrepo brdb84
drbd84-utils-sysvinit.x86_64 9.12.2-1.el7.elrepo brdb84
drbd90-utils.x86_64 9.12.2-1.el7.elrepo brdb84
drbd90-utils-sysvinit.x86_64 9.12.2-1.el7.elrepo brdb84
drbdlinks.noarch 1.29-1.el7 epel
kmod-drbd84.x86_64 8.4.11-1.2.el7_8.elrepo brdb84
kmod-drbd90.x86_64 9.0.22-3.el7_9.elrepo brdb84
---node02
---node02
[root@node012~]# vim /etc/yum.repos.d/drbd84.repo
[brdb84]
name=drbd84
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo/el7/x86_64/
gpgcheck=0
[root@node02 ~]# yum list | grep drbd
collectd-drbd.x86_64 5.8.1-1.el7 epel
drbd.x86_64 9.15.1-2.el7 epel
drbd-bash-completion.x86_64 9.15.1-2.el7 epel
drbd-pacemaker.x86_64 9.15.1-2.el7 epel
drbd-rgmanager.x86_64 9.15.1-2.el7 epel
drbd-udev.x86_64 9.15.1-2.el7 epel
drbd-utils.x86_64 9.15.1-2.el7 epel
drbd-xen.x86_64 9.15.1-2.el7 epel
drbd84-utils.x86_64 9.12.2-1.el7.elrepo brdb84
drbd84-utils-sysvinit.x86_64 9.12.2-1.el7.elrepo brdb84
drbd90-utils.x86_64 9.12.2-1.el7.elrepo brdb84
drbd90-utils-sysvinit.x86_64 9.12.2-1.el7.elrepo brdb84
drbdlinks.noarch 1.29-1.el7 epel
kmod-drbd84.x86_64 8.4.11-1.2.el7_8.elrepo brdb84
kmod-drbd90.x86_64 9.0.22-3.el7_9.elrepo brdb84
安装 DRDB
[root@node01 ~]# yum install drbd84-utils kmod-drbd84 -y
[root@node02 ~]# yum install drbd84-utils kmod-drbd84 -y
配置 lvm
---node01
[root@node01 ~]# pvcreate /dev/sdb
[root@node01 ~]# vgcreate data /dev/sdb
[root@node01 ~]# lvcreate --size 2G --name share data
---node02
[root@node02 ~]# pvcreate /dev/sdb
[root@node02 ~]# vgcreate data /dev/sdb
[root@node02 ~]# lvcreate --size 2G --name share data
修改全局配置文件
[root@node01 ~]# vim /etc/drbd.d/global_common.conf
global {
usage-count no;
udev-always-use-vnr; # treat implicit the same as explicit volumes
}
common {
protocol C;
handlers {
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
split-brain "/usr/lib/drbd/notify-split-brain.sh root";
out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
}
startup {
}
options {
}
disk {
on-io-error detach;
}
net {
cram-hmac-alg "sha1";
shared-secret "nfs-HA";
allow-two-primaries;
}
syncer { rate 1000M; }
}
配置资源文件
[root@node01 ~]# vim /etc/drbd.d/data.res
resource data {
prosource C;
meta-disk internal;
device /dev/drbd1;
disk /dev/data/share;
syncer {
verify-alg sha1;
}
on node1 {
address 192.168.5.11:7789;
}
on node2 {
address 192.168.5.12:7789;
}
}
[root@node01 ~]# scp -rp /etc/drbd.d/* node02:/etc/drbd.d/
data.res 100% 231 315.0KB/s 00:00
global_common.conf 100% 2768 2.4MB/s 00:00
加载模块
---node01
[root@node01 ~]# yum -y install kernel-devel kernel kernel-headers
[root@node01 ~]# reboot
[root@node01 ~]# modprobe drbd
[root@node01 ~]# lsmod |grep drbd
drbd 397041 0
libcrc32c 12644 2 xfs,drbd
---node02
[root@node02 ~]# yum -y install kernel-devel kernel kernel-headers
[root@node02 ~]# reboot
[root@node02 ~]# modprobe drbd
[root@node02 ~]# lsmod |grep drbd
drbd 397041 0
libcrc32c 12644 2 xfs,drbd
启动 DRBD
---node01
[root@node01 ~]# drbdadm create-md data
[root@node01 ~]# drbdadm up data
[root@node01 ~]# drbdadm -- --force primary data
--node02
[root@node02 ~]# drbdadm create-md data
[root@node02 ~]# drbdadm up data
追踪 DRBD 同步情况
node01 查看主从状态
node02 查看主从状态
使用 DRBD 存储
格式化 DRBD
[root@node01 ~]# mkfs.xfs /dev/drbd1
[root@node01 ~]# mkdir data
[root@node01 ~]# mount /dev/drbd1 data
查看挂载
二、DRBD 裂脑解决办法
1、裂脑产生
模拟裂脑产生
[root@node01 ~]# drbdadm role data
Primary/Secondary
[root@node01 ~]# ifconfig ens33 down
[root@node01 ~]# ifconfig ens33 up
node01
node02
2、DRBD 裂脑解决办法
解决办法
---node02
[root@node02 ~]# drbdadm disconnect data
[root@node02 ~]# drbdadm role data
Primary/Unknown
[root@node02 ~]# drbdadm secondary data
[root@node02 ~]# drbdadm role data
Secondary/Unknown
[root@node02 ~]# drbdadm connect --discard-my-data data
[root@node02 ~]# drbdadm role data
---node01
[root@node01 ~]# drbdadm connect data
查看 DRBD 状态
ndoe01
node02
故障恢复!