DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
拓扑结构
假设使用两台linux主机来搭建环境,以下步骤如果不特殊强调,需要在两台主机上执行相同的操作。
环境
1 两台Ubuntu14.04主机,32位。都是单网卡 eth0。
2 主机名s1-desktop, ip 192.168.1.100;主机名s2-desktop, ip 192.168.1.101
3 一台TP-LINK路由器。
4 拓扑图如下,对外浮动ip为192.168.1.200。也就是说当外网访问192.168.1.200时,自动切换到两台主机中可用的一台。
drbd的安装与配置
1 在安装两台ubuntu主机的时候要手动划分一个分区专门用于数据同步,这里假设两台主机的同步分区为/dev/sda6。此分区挂载在/data。
2 在ubuntu下运行 apt-get install drbd8-utils 来安装drbd。
3 在/etc/ha.d/resources下面增加一个资源文件r0.res,内容如下:
resource r0 { on s1-desktop{ device /dev/drbd0; disk /dev/sda6; address 192.168.1.100:7789; meta-disk internal; } on s2-desktop{ device /dev/drbd0; disk /dev/sda6; address 192.168.1.101:7789; meta-disk internal; } }
这个配置文件定义了一个名字为r0的资源文件。其中/dev/drbd0为虚拟硬盘,/dev/sda6为物理硬盘,要根据主机来修改这个参数。
4 修改/etc/hosts, 加入两台主机的信息。
s1-desktop 192.168.1.100
s2-desktop 192.168.1.101
5 如果/dev/sda6等物理硬盘已经挂载到了某个文件夹下面,先umount。
6 在两个主机上分别执行
drbdadmin create-md r0。
7 启动drbd服务,在两台主机分别执行
/etc/init.d/drbd start
cat /proc/drbd
ro:Secondary/ Secondary //表示还没有建立主盘
ds:Inconsistent/Inconsistent //表示两节点的逻辑设备
8 初始化网络硬盘。(只在primary node上执行)
drbdsetup /dev/drbd0 primary –o
cat /proc/drbd
ro: primary / Secondary表示在主节点建立了主盘
ds: UpToDate /Inconsistent表示两节点正在同步数据 等同步完后将会变成
ds: UpToDate / UpToDate
9 格式化磁盘。
现在将磁盘格式化后并可以向其中写数据,这些数据会同步到从节点中。
在主节点s1-dekstop上执行
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /data
(注意:只有主盘节点才能挂载镜像分区)
10 测试数据同步
cd /data
mkdir testfile //新建名为testfile的测试文件
umount /data //卸载镜像分区
drbdadm secondary r0 //主降为次,现在降为从节点
在s2-desktop上(从节点)
drbdadm primary r0 //次升为主,这样才能从机器读取磁盘的数据。
mount /dev/drbd0 /data //升主后才有挂载权限
cd /data
ls –l
将会看到我们在主节点中建立的名为testfile的文件夹。
在drbd配置完成后,如果主节点服务不可用时,需要手动切换到从节点,在从节点上设置为primary, 然后挂载。这里两台主机的IP是不同的,会为客户端的访问带来不便。
下面将介绍使用heartbeat来自动切换资源,并使用同一IP访问两台主机。
heartbeat使用方法参考文章给出的链接。