搭建 DRBD 主从集群
# 1. 配置解析文件
# 2. 配置 drbd 内核模块
# 通过命令查看到内核中并没有内置 drbd 相关的模块,可以在 https://pkg.linbit.com/ 网站下载对应模块





# 由于下载的是最新版的内核驱动,所以如果编译安装失败大概率是因为内核版本问题,因此需要将内核版本升级为最新版
内核版本升级步骤:
# 添加 backports 源,echo "deb https://mirrors.ustc.edu.cn/debian/ $(lsb_release -cs)-backports main contrib non-free" >>/etc/apt/sources.list
# 查找 apt 源官方支持的内核版本,apt search linux-image
# 升级,apt install -t $(lsb_release -cs)-backports linux-image-$(dpkg --print-architecture) linux-headers-$(dpkg --print-architecture) --install-recommends -y
# 更新配置并重启,update-grup && reboot -f
# update-grup 执行后 reboot -f 命令大概率会卡死,因此可通过强制重启跳过正常的 shutdown 过程
# 强制重启命令:echo 1 >/proc/sys/kernel/sysrq ; echo b >/proc/sysrq-trigger
# 将内核升级为官方支持的最新版本后重新编译安装后并加载该模块

# 通过 modprobe 加载的模块是临时的,重启后内核将不会加载该模块,因此需要将该模块加入开机自动载入的配置文件中
执行命令:echo drbd >/etc/modules-load.d/drbd.conf
# 3. 安装并配置 drbd
apt -y install drbd*
# auto-promote yes 表示允许自动切换主从,protocol C 表示 drbd 使用C协议。drbd 有三种协议,A协议表示异步,B协议表示半同步半异步,C协议表示同步,A->C 所需要的带宽依次增加
sed -i -e'/options/a\auto-promote yes;' -e '/net/a\protocol C;' /etc/drbd.d/global_common.conf
# drbd1 和 drbd2 节点分别创建 drbd 存储使用的 lvm
pvcreate /dev/sdb
vgcreate vg-drbd /dev/sdb
lvcreate -n lv-drbd -l 100%free vg-drbd
# 配置 resource 子配置文件
cat > /etc/drbd.d/drbd-data.res <<END
resource drbd-data {
meta-disk internal;
device /dev/drbd1;
net {
verify-alg sha256;
}
on drbd1 {
address 172.16.201.21:7788;
disk /dev/vg-drbd/lv-drbd;
}
on drbd2 {
address 172.16.201.22:7788;
disk /dev/vg-drbd/lv-drbd;
}
}
END
drbdadm create-md drbd-data
drbdadm up drbd-data
drbdadm primary drbd-data --force (仅 primary 节点操作)
# 格式化 drbd1 ,在 drbd 首次部署完成后格式化虚拟硬盘 drbd1 可以加快主从节点的同步速度
mkfs.ext4 /dev/drbd1

# 同步完成后如下所示


# DRBD 分布式高可用集群有两个缺点:
# 1. 节点重启后需要手动 up drbd resource,可自定义 systemd 的 service 文件使其开机启动后自动 up

# 2. 主节点宕机后,从节点需要手动 mount drbd resource,可通过 pacemaker + corosync 做高可用和心跳配合使用

浙公网安备 33010602011771号