kvm-DRBD在虚机中实现
什么DRBD ?
DRBD (分布式复制块设备) 时一款基于linux 的开源软件,由内核模块和管理工具组成的,通过网络的块设备来进行数据的同步。当数据写入本地的DRBD 文件系统上时,同时会通过网络发送到另一台server 上,并且以相同的方式将数据写入。确保本地与远程的server都可以实时同步到数据。
一般在高可用解决方案中会使用到DRBD ,代替商业存储设备,因为数据保存在本地和远程server 上,需要本地数据坏或者切换时,远程的主机使用它备份的数据可以继续提供服务。
DRBD 复制协议的类型:
协议A: 异步复制。 本地数据写完成功后立即返回,数据放在buffer 中,如果服务器掉电数据可能丢失
协议B: 内存同步(半同步)复制 。 本地数据写成功将数据发送到远程服务器,发送到对端后立即返回。如果双机掉电数据可能丢失。
协议C: 同步复制。 本地和远端数据写成功后确认返回。 如果磁盘同时损坏数据可能丢失。
DRBD 使用方式:
主备模式: 两台存储服务器。1主1备,主故障备顶替主工作,只有一台提供服务,另一台作为backup
主主模式: 两台存储服务器同时提供服务, 共同分担压力,当一台故障,服务新能会下降,但是服务不会中断。
搭建基础的DRBD 实现资源数据同步功能
环境准备的前提:
前期这些操作在两台server 上都需要操作。
1. 两台server (ubuntu 14.04),双方网络可以互通
testvm: 10.150.114.97/20
test-1: 10.150.112.30/20
2. 给两台server 准备分区 (我这里是给准备一个5 G 大小的分区)
我这里给虚机都添加了一块disk 。并且将disk 分了一个主分区,将空间都分配给主分区
fdisk /dev/sdb (创建新分区。输入“n" 新建分区,输入”p“ 创建主分区,甚于默认回车,会创建一个主分区将磁盘空间都给主分区配置,输入”w“ 保存配置)
3. 通过网络源安装drbd ,也可以自己源码安装。 (这里是网络源安装)
apt-get install -y --force-yes drbd8-utils
4. 配置drbd 配置文件
/etc/drbd.conf是主配置文件,主要用来把全局配置文件和各资源配置文件(所有以.res结尾的文件)包含进来的;
而其它模块配置文件在/etc/drbd.d/下,包括/etc/drbd.d/global_common.conf全局配置文件,下面将会配置的资源配置文件也会放到这里。(test.res 是自己创建的)
配置全局配置文件
/etc/drbd.d/global_common.conf
global {
usage-count no; #是drdp 官方给使用drdp的 用户总数统计
}
common {
handlers {
}
startup {
}
options {
}
disk {
}
net {
protocol C; #设置我们的drdp采用的协议是选择同步复制
}
}
配置DRBD 资源
每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中
/etc/drbd.d/test.res
resource test { #定义资源名为test
on testvm { # 节点信息 testvm 是主机名
device /dev/drbd1; #虚拟出drbd 设备名
disk /dev/sdb1; #原设备
address 10.150.114.97:7700; #server 的地址
meta-disk internal ;
}
on test-1 { #节点信息 test-1 是主机名
device /dev/drbd1; #虚拟出drbd 设备
disk /dev/sdb1; #原设备
address 10.150.112.30:7700; #server的地址
meta-disk internal ;
}
}
两台server 要使用一样的global_common.conf 和test.res 文件
5.启动drbd
drbdadm create-md all
如果有以下报错
解决: 给sdb 注入一些数据
dd if=/dev/zero of=/dev/sdb1 bs=1M count=100
启动服务
service drbd start
检查启动状态
在test-1 上操作
将test-1 设置为主设备
drbdadm primary --force test
检查虚拟的drbd 设备已存在
将drbd挂载任意目录上,并在目录下创建文件测试
将主节点设置解挂载,并且设置为从节点
umount /dev/drbd1
drbdadm secondary test
登陆testvm从节点,将从节点升级为主节点,挂载drbd 设备
drbdadm primary test
创建挂载点,挂载设备,发现之前在test-1 主节点创建文件还是存在的。