DRBD+Heartbeat+Mysql

来源:互联网 发布:监测他人网络 编辑:程序博客网 时间:2024/04/29 06:26

一.DRBD


1. drbd简介


1.概念

drbd:叫做分布式复制块设备,这是一种基于软件,无共享,复制的解决方案。在服务器之间的块设备(包括硬盘、分区、逻辑卷)进行镜像。也就是说当某一个应用程序完成写操作后,它提交的数据不仅仅会保存在本地块设备上,DRBD也会将这份数据复制一份,通过网络传输到另一个节点的块设备上,这样,两个节点上的块设备上的数据将会保存一致,这就是镜像功能。

为了能够配置和管理drbd的资源,drbd提供了一些管理工具与内核模块进行通信,drbdadm:高级的DRBD程序管理套件工具。它从配置文件/etc/drbd.conf中获取所有配置参数。


2.DRBD 资源
Resource name:可以是除了空白字符的任意的ACSII码字符(如demo)
DRBD device:在双方节点上,此DRBD设备的设备文件;一般为/dev/drbdN,其主设备号147
Disk configuration:在双方节点上,各自提供的存储设备
Nerwork configuration:双方数据同步时所使用的网络属性


3.DRBD的模式
DRBD有2中模式,一种是DRBD的主从模式,另一种是DRBD的双主模式
1、DRBD的主从模式
这种模式下,其中一个节点作为主节点,另一个节点作为从节点。其中主节点可以执行读、写操作;从节点不可以挂载文件系统,因此,也不可以执行读写操作。在这种模式下,资源在任何时间只能存储在主节点上。这种模式可用在任何的文件系统上(EXT3、EXT4、XFS等等)。默认这种模式下,一旦主节点发生故障,从节点需要手工将资源进行转移,且主节点变成从节点和从节点变成主节点需要手动进行切换。不能自动进行转移,因此比较麻烦。
为了解决手动将资源和节点进行转移,可以将DRBD做成高可用集群的资源代理(RA),这样一旦其中的一个节点宕机,资源会自动转移到另一个节点,从而保证服务的连续性。
2、DRBD的双主模式
这是DRBD8.0之后的新特性
在双主模式下,任何资源在任何特定的时间都存在两个主节点。这种模式需要一个共享的集群文件系统,利用分布式的锁机制进行管理,如GFS和OCFS2。部署双主模式时,DRBD可以是负载均衡的集群,这就需要从两个并发的主节点中选取一个首选的访问数据。这种模式默认是禁用的,如果要是用的话必须在配置文件中进行声明。


2.安装配置


1.双节点 server2 172.25.254.2
server5 172.25.254.5
两台主机上均添加4G的硬盘 fdisk -l 查看设备为 /dev/vdb

这里写图片描述

这里写图片描述


2.制作rpm包


(1)解压drbd压缩包
cd /drbd-8.4.3 ,编译会出错,有依赖性,安装需要的包,继续编译
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


(2)rpmbuild命令需要安装的是rpm-build软件

这里写图片描述


(3)编译生成drbd rpm包
这里写图片描述


(4)编译生成drbd内核模块
这里写图片描述
这里写图片描述
这里写图片描述


(5)生成的rpm包,安装,并将其拷贝到另一主机server5中,进行安装

这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述


3.配置
drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用”include”指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件


(1)cd /etc/drbd.d/
vim demo.res
resource demo ###demo为资源名称

meta-disk internal; ###该参数有2个选项:internal和externally,其中internal表示将元数据和数据存储在同一个磁盘上;而externally表示将元数据和数据分开存储,元数据被放在另一个磁盘上

device /dev/drbd1; ###定义DRBD虚拟块设备,这个设备不要事先格式化

syncer { ###该配置段用来更加精细地调节服务的同步进程,
verify-alg:该选项指定一个用于在线校验的算法,内核一般都会支持md5、sha1和crc32c校验算法。在线校验默认关闭,必须在此选项设定参数,以明确启用在线设备校验。DRBD支持在线设备校验,它以一种高效的方式对不同节点的数据进行一致性校验。在线校验会影响CPU负载和使用,但影响比较轻微。你可以使用下列命令进行一个在线校验: drbdadm verify resource。该命令对指定的resource进行检验,如果检测到有数据块没有同步,它会标记这些块,并往内核日志中写入一条信息。这个过程不会影响正在使用该设备的程序。

on server2 { } ###这里是定义节点server2上的资源

这里写图片描述


(2)两个节点上生成demo,并开启
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述


(3)查看,均为secondary(注意:用哪台主机查看,显示在第一位状态的就是该主机的状态),将server2强制设置为primary,然后进行同步数据

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述


(4)在server2上进行格式化,然后先挂载到/mnt,拷贝mysql下的文件,再挂载到/var/lib/mysql,查看mysql是否能正常启动(在此需要注意的是:两台主机上的/dev/drbd1不能同时挂载,只有状态为 primary 时,才能被挂载使用,而此时另一方的状态为secondary。

这里写图片描述
这里写图片描述
这里写图片描述这里写图片描述


(5)测试server5,首先先将server2设置为secondary状态,再将server5设置为primary状态,之后进行挂载测试

这里写图片描述

在server5上:drbdadm primary demo
这里写图片描述

这里写图片描述


3.Heartbeat+mysql+drbd
前提是两台主机均是primary状态
这里写图片描述


(1)vim /etc/ha.d/haresource
启动网络-资源demo-磁盘挂载-文件格式-服务mysql
拷贝文件,启动两台机子的heartbeat,服务首先在server2上
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


(2)server2上heartbeat关闭,会自动切到server5上

这里写图片描述

这里写图片描述

这里写图片描述


(3)当server2(在heartbest中设置的server2为主节点)恢复时,又会自动回切过去

这里写图片描述