搭建DRBD主从集群

发布时间 2023-04-12 11:37:42作者: demoduan
DRBD的全称为:Distributed Replicated Block Device 分布式块设备复制,DRBD 是由内核模块和相关脚本而构成,用以构建高可用性 (HA) 的集群。其实现方式是通过网络来镜像 (mirror) 整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络 RAID。
拓扑如下:
 

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 vg-drbd -l 100%free lv-drbd 

由上图可知 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 
# 创建 drbd 资源,create-md 后面的参数要和 drbd-data.res 文件中 resource 后面的参数保持一致
drbdadm create-md drbd-data
drbdadm up drbd-data 
drbdadm primary drbd-data --force

# 格式化 drbd1 ,在 drbd 首次部署完成后格式化虚拟硬盘 drbd1 可以加快主从节点的同步速度

mkfs.ext4 /dev/drbd1