Akemi

DRBD单活分布式存储

2023/11/12

如果出现无法载图的情况,请检查与github的连通性

DRBD的全称为:Distributed Replicated Block Device (DRBD) 分布式块设备复制
与心跳连接结合使用,构建高可用性(HA)的集群。

实现方式是通过网络来镜像(mirror)整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。DRBD负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。

参考文档
DRBD - LINBIT

环境

VMwareWorkstation 16Pro
centos8-stream
centos8-DRBD1 192.168.8.157/24
centos8-DRBD2 192.168.8.158/24
——8G内存,4core
——nat网络
——系统盘100G
——20G SCSI磁盘 - 用以被DRBD接管
——最小化安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#设置软件源
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/iso.repo <<END
[AppStream]
name=AppStream
baseurl=http://mirrors.163.com/centos/8-stream/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=http://mirrors.163.com/centos/8-stream/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
END
yum clean all
yum makecache

#设置主机名
hostnamectl set-hostname DRBD01 && bash
hostnamectl set-hostname DRBD02 && bash

#安全相关
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now

#设置host文件
echo "
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.157 DRBD01
192.168.8.158 DRBD02
" > /etc/hosts

#安装编译软件和依赖
yum -y group install "Development Tools" && yum -y install wget vim net-tools lvm2
yum -y install drbd #如果使用默认源可能没有这个包
#从官网下载安装包,编译安装
wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.11.tar.gz
tar zxvf drbd-9.1.11.tar.gz
cd drbd-9.1.11
make && make install

#把drbd模块暂时加载到内核中
modprobe drbd
lsmod | grep -i drbd

#把drbd模块持久化加载到内核中
echo drbd > /etc/modules-load.d/drbd.conf

#drbd配置文件
drbd配置文件/etc/drbd.d/global_common.conf
#[global]全局参数
#[common]通用参数- handlers -startup - options -disk -net
drbd主配置文件/etc/drbd.conf

#创建卷
pvcreate /dev/sdb
vgcreate drbd /dev/sdb #卷组名drbd
lvcreate -n drbd -l 100%free drbd #逻辑卷drbd,所有空间都分配,也可以直接指定20G

#修改配置文件,添加文件
echo "
#指定资源名为ws-drbd
resource ws-drbd {
#指定元数据
meta-disk internal;
#指定逻辑磁盘
device /dev/drbd1;
net {
verify-alg sha256;
}
#指定节点,与对应的逻辑卷
on DRBD01 {
address 192.168.8.157:7788;
disk /dev/drbd/drbd;
}
on DRBD02 {
address 192.168.8.158:7788;
disk /dev/drbd/drbd;
}
} " > /etc/drbd.d/ws-drdb.res

#创建drbd资源
drbdadm create-md ws-drbd
drbdadm up ws-drbd

#此时已经设置完成,两台节点都显示如下
drbdadm status
#ws-drbd role:Secondary
# disk:Inconsistent 非一致性状态
# DRBD01 role:Secondary
# peer-disk:Inconsistent

#在主节点上设置主节点
drbdadm primary ws-drbd --force

drbdadm status #同步中
#ws-drbd role:Primary
# disk:UpToDate
# DRBD02 role:Secondary
# replication:SyncSource peer-disk:Inconsistent done:16.60

lsblk #能看到多了一个drbd1磁盘
#NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
#sda 8:0 0 100G 0 disk
#├─sda1 8:1 0 1G 0 part /boot
#└─sda2 8:2 0 99G 0 part
# ├─cs-root 253:0 0 65.2G 0 lvm /
# ├─cs-swap 253:1 0 2G 0 lvm [SWAP]
# └─cs-home 253:2 0 31.8G 0 lvm /home
#sdb 8:16 0 20G 0 disk
#└─drbd-drbd 253:3 0 20G 0 lvm
# └─drbd1 147:1 0 20G 0 disk
#sr0 11:0 1 12.3G 0 rom

drbdadm status #同步完成
#ws-drbd role:Primary
# disk:UpToDate
# DRBD02 role:Secondary
# peer-disk:UpToDate

#测试是否能够同步
#在主节点上操作
mkfs.ext4 /dev/drbd1
mount /dev/drbd1 /mnt/
echo 1 > /mnt/test
poweroff

#在备节点上操作
#能看到test已经被同步到备节点的drbd1中
mount /dev/drbd1 /mnt/
ls /mnt/
#lost+found test

CATALOG
  1. 1. 环境