一、基础知识:

1 简介:

    Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。

2 原理:

DRBD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。

3 DRBD的工具:

3.1 drbdadm:高级管理工具,管理/etc/drbd.conf,向drbdsetup和drbdmeta发送指令;

3.2 drbdsetup:配置装载进kernel的DRBD模块,平时很少直接用;

3.3 drbdmeta:管理META数据结构,平时很少直接用;

4 DRBD的模式:

4.1 单主模式:典型的高可靠性集群方案。

4.2 复主模式:需要采用共享cluster文件系统,如GFS和OCFS2。用于需要从2个节点并发访问数据的场合,需要特别配置。

5 复制模式:3种模式:

5.1 协议A:异步复制协议。本地写成功后立即返回,数据放在发送buffer中,可能丢失。

5.2 协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。

5.3 协议C:同步复制协议。本地和对方写成功确认后返回。如果双机掉电或磁盘同时损坏,则数据可能丢失。

一般用协议C。选择协议将影响流量,从而影响网络时延。

二、案例:

1 拓扑图:

wps_clip_image-11790

2 案例说明:

    通过heartbeat实现HA高可用性群集,通过DRBD实现存储复制来达到存储的高可用性,通过NFS实现网络文件系统共享;

3 配置步骤:

3.1 Heartbeat高可用性群集搭建:

3.1.1(1) 配置director1群集服务器:

配置director1的网卡地址:

外出接口网卡:

wps_clip_image-29498

心跳网卡:

wps_clip_image-16424

重启网络服务:

wps_clip_image-8761

同步时钟:

# hwclock -s

配置director1的主机名:

# vim /etc/sysconfig/network

wps_clip_image-1766

# hostname dir1.abc.com //配置后需要注销一次;

wps_clip_image-18414

配置director1的本地DNS解析:

# vim /etc/hosts

wps_clip_image-18584

将heartbeat的安装包使用ftp导入director1:

wps_clip_image-2183

wps_clip_image-7016

挂载光盘:

# mkdir /mnt/cdrom

# mount /dev/cdrom /mnt/cdrom

使用yum安装heartbeat相应的软件包:

# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck

wps_clip_image-24940

拷贝heartheat的配置文件到相应的位置:

# cd /usr/share/doc/heartbeat-2.1.4/

# cp ha.cf /etc/ha.d/

# cp haresources /etc/ha.d/

# cp authkeys /etc/ha.d/

编辑心跳探测配置文件ha.cf:

# cd /etc/ha.d/

# vim ha.cf

wps_clip_image-28508

//定义心跳网卡;

wps_clip_image-20932

//声明群集的节点;

配置验证钥匙(为了实现双方身份验证):

# vim authkeys

wps_clip_image-16724

改变authkeys的权限:

# chmod 600 authkeys

3.1.1(2) 配置director2群集服务器:

配置director2的网卡地址:

外出接口网卡:

wps_clip_image-15357

心跳网卡:

wps_clip_image-1768

重启网络服务:

wps_clip_image-28838

同步时钟:

# hwclock -s 
配置director2的主机名:

# vim /etc/sysconfig/network

wps_clip_image-8793

# hostname dir2.abc.com //配置后需要注销一次;

wps_clip_image-5416

配置director2的本地DNS解析:

# vim /etc/hosts

wps_clip_image-26357

将heartbeat的安装包使用ftp导入director1:

wps_clip_image-27924

wps_clip_image-14740

挂载光盘:

# mkdir /mnt/cdrom

# mount /dev/cdrom /mnt/cdrom

使用yum安装heartbeat相应的软件包:

# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck

wps_clip_image-808

拷贝heartheat的配置文件到相应的位置:

# cd /usr/share/doc/heartbeat-2.1.4/

# cp ha.cf /etc/ha.d/

# cp haresources /etc/ha.d/

# cp authkeys /etc/ha.d/

编辑心跳探测配置文件ha.cf:

# cd /etc/ha.d/

# vim ha.cf

wps_clip_image-30243

//定义心跳网卡;

wps_clip_image-22329

//声明群集的节点;

配置验证钥匙(为了实现双方身份验证):

# vim authkeys

wps_clip_image-19028

改变authkeys的权限:

# chmod 600 authkeys

3.2 DRBD服务搭建:

3.2.1(1) 在dir1.abc.com主机中创建一个NFS共性分区:

从sda硬盘中划分一个分区:

# fdisk /dev/sda

创建一个扩展分区:

wps_clip_image-8350

创建一个扩展分区:

wps_clip_image-30435

查看分区表:

wps_clip_image-28888

保存并退出:

wps_clip_image-13344

通过内核从新读取分区表:

# partprobe /dev/sda

3.2.1(2) 在dir2.abc.com主机中创建一个NFS共性分区:

从sda硬盘中划分一个分区:

# fdisk /dev/sda

创建一个扩展分区:

wps_clip_image-8324

创建一个扩展分区:

wps_clip_image-7060

查看分区表:

wps_clip_image-223

保存并退出:

wps_clip_image-18427

通过内核从新读取分区表:

# partprobe /dev/sda

3.2.2(1) 在dir1.abc.com中安装DRBD相关软件包: 
导入DRBD相应的安装包:

wps_clip_image-24162

安装drbd服务:

# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

安装drbd的内核模块:

# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

3.2.2(2) 在dir2.abc.com中安装DRBD相关软件包:

导入DRBD相应的安装包:

wps_clip_image-9708

安装drbd服务:

# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

安装drbd的内核模块:

# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

3.2.3(1) 在dir1.abc.com编辑drbd文档:

编辑drbd主配置文件:

# vim /etc/drbd.conf

读取样例文件内容:底行模式

wps_clip_image-1342

wps_clip_image-742

编辑通用资源:

# vim /etc/drbd.d/global_common.conf

wps_clip_image-16068

编辑详细资源:

# vim /etc/drbd.d/web.res

wps_clip_image-5530

初始化drbd:

# drbdadm create-md web

wps_clip_image-14073

3.2.3(2) 在dir2.abc.com编辑drbd文档:

编辑drbd主配置文件:

# vim /etc/drbd.conf

读取样例文件内容:底行模式

wps_clip_image-20903

wps_clip_image-29675

编辑通用资源:

# vim /etc/drbd.d/global_common.conf

wps_clip_image-10793

编辑详细资源:

# vim /etc/drbd.d/web.res

wps_clip_image-5244

初始化drbd:

# drbdadm create-md web

wps_clip_image-16841

3.2.4(1) 启动dir1.abc.com的DRBD服务:

# service drbd start

3.2.4(1) 启动dir2.abc.com的DRBD服务:

# service drbd start

3.2.5(1) 查看dir1.abc.com的设备状态:

# drbd-overview

wps_clip_image-31427

3.2.5(2) 查看dir2.abc.com的设备状态:

# drbd-overview

wps_clip_image-15400

3.2.6 将dir1.abc.com的设备调整为主设备:

# drbdadm -- --overwrite-data-of-peer primary web

wps_clip_image-26160

wps_clip_image-17380

3.2.7 格式化/dev/drbd0:

# mkfs -t ext3 -L drbdweb /dev/drbd0

3.2.8(1) 在dir1.abc.com上对/dev/drbd0进行挂载:

创建挂载点:

# mkdir /public

挂载:

# mount /dev/drbd0 /public/

3.2.8(2) 在dir1.abc.com上对/dev/drbd0进行挂载:

创建挂载点:

# mkdir /public

3.2.9(1) 查看dir1.abc.com的drbd当前状态:

wps_clip_image-25621

3.2.9(2) 查看dir2.abc.com的drbd当前状态

wps_clip_image-12680

3.3 NFS搭建

3.3.1(1) 配置dir1.abc.com的NFS server:

NFS服务是默认安装的,使用时直接启动即可;

# service nfs start

# service portmap start

编写共享清单:

# vim /etc/exports

wps_clip_image-29003

导出共享清单:

# exportfs -rv

exporting 192.168.10.0/24:/public

-r 导出;

-v 详细信息;

修改nfs启动脚本:

# vim /etc/init.d/nfs

wps_clip_image-25374

3.3.1(2) 配置dir2.abc.com的NFS server:

NFS服务是默认安装的,使用时直接启动即可;

# service nfs start

# service portmap start

编写共享清单:

# vim /etc/exports

wps_clip_image-15870

导出共享清单:

# exportfs -rv

exporting 192.168.10.0/24:/public

-r 导出;

-v 详细信息;

修改nfs启动脚本:

# vim /etc/init.d/nfs

wps_clip_image-4421

3.4 编辑heartbeat资源文件:

3.4.1(1) 在dir1.abc.com节点上heartbeat资源配置:

# vim /etc/ha.d/haresources

wps_clip_image-19692

创建nfs服务的资源控制文件:

# vim /etc/ha.d/resource.d/killnfsd

wps_clip_image-5618

改变nfs服务的资源控制文件的权限:

# chmod 755 /etc/ha.d/resource.d/killnfsd

3.4.1(2) 在dir2.abc.com节点上heartbeat资源配置:

# vim /etc/ha.d/haresources

wps_clip_image-12704

创建nfs服务的资源控制文件:

# vim /etc/ha.d/resource.d/killnfsd

wps_clip_image-31305

改变nfs服务的资源控制文件的权限:

# chmod 755 /etc/ha.d/resource.d/killnfsd

3.4.2(1) 启动dir1.abc.com节点的heartbeat的服务:

# service heartbeat start

3.4.2(2) 启动dir2.abc.com节点的heartbeat的服务:

# service heartbeat start

3.4.3 查看heartbeat两节点的状态:

wps_clip_image-3431

wps_clip_image-3120

4 测试:

4.1 开启一个客户端:

配置一个临时地址:

# ifconfig eth0 192.168.10.20

创建一个挂载点:

# mkdir /mnt/nfs

# mount 192.168.10.10:/public /mnt/nfs

查看挂载的状态:

wps_clip_image-10519

4.2 当heartbeat正常运行时:

查看NFS网络文件系统:

wps_clip_image-397

4.3 在dir1.abc.com中将heartbeat服务关闭:

# service heartbeat stop

wps_clip_image-14813

此时NFS网络文件系统仍然可以使用:

wps_clip_image-11794