线上MySQL+heartbeat+DRBD+LVS集群应用–小铁私密笔记

2年前 (2015-08-30) admin mysql高可用 0评论 已收录 546℃

构建MySQL+heartbeat+DRBD+LVS集群应用--小铁笔记

在企业应用中,mysql+heartbeat+DRBD+LVS是一套成熟的集群解决方案,通过heartbeat+DRBD完成MySQL的主节点写操作的高可用性,而通过

MySQL+LVS实现MySQL数据库的主从复制和MySQL读操作的负载均衡。整个方案在读写方面进行了分离,融合了写操作的高可用和读操作的负载均衡,

是一个完美而又廉价的企业应用解决方案。

1、MySQL高可用集群概述

目前比较流行的高可用解决方案有如下几种:

。MySQL的复制功能是通过在建立复制关系的两台或多台机器环境中,一台机器出现故障就切换到另一台机器上来保证一定程度的可用性,可以

实现90.000%的SLA。

。MySQL的复制功能加一些集群软件可以实现95.000%的SLA

。MySQL+heartbeat+DRBD的复制功能可以实现99.900%的SLA

。MySQL Cluster的标准版和电信版可以达到99.999%的SLA。

在企业级应用中,对于MySQL来说,使用共享存储的相对较少,使用最多的方案是Heartbeat+DRBD和MySQL Cluster的方案。对于Oracle的RAC来说,

使用的是共享存储的结构方式,同时将heartbeat+DRBD作为Oracle公司为客户端提供解决方案的服务之一。

2、heartbeat+DRBD高可用性方案的实现原理

DRBD的英文全称为:Distributed Replicated Block Device(分布式块设备复制),是Linux内核的存储层中的一个分布式存储系统,可利用DRBD在

两台Linux服务器之间共享块设备、文件系统和数据,类似于一个网络RAID1的功能。

系统服务                                 系统服务
-----------------------                  -----------------------
|              |                                        |
文件系统          |                                   文件系统
|              |                                        |
高速缓存区     裸设备                   裸设备      高速缓存区
|           /                                           |
BRBD-----------TCP/IP                   TCP/IP------------BRBD
|            |  |                      | |             |  |
磁盘调度        |  |                      | |         磁盘调度
|           网卡驱动                 网卡驱动       |     |
磁盘驱动        |   |                     | |         磁盘驱动
|             NIC                      NIC          |     |
物理磁盘          |                        |          物理磁盘
PC-----------------------PC
mysql

DRBD的架构图

当将数据写入到本地主节点的文件系统时,这些数据会通过网络发送到另一台主节点上。本地主节点和远程主节点数据通过TCP/IP协议保持同步,

主节点故障时,远程节点保存着相同的数据,可以接替主节点继续提供数据。两个节点之间使用heartbeat来检测对方是否存活。

同步过程如下:

1)在NODE1上写操作被提交,然后通过内核传给DRBD模块。

2)DRBD发送写操作到NODE2

3)在NODE2上的DRBD发送写操作给本地磁盘。

4)在NODE2上的DRBD向NODE1发确认信息,确认已经接收到写操作并发送给本地磁盘。

5)在NODE1上的DRBD发送写操作给本地磁盘。

6)NODE1的内核回应写操作完成。

此同步过程还依赖于DRBD的3种同步协议:

。Protocol A:写I/O到达本地磁盘和本地的TCP发送缓存区之后,返回操作成功。

。Protocol B:写I/O到达本地磁盘和远程节点的缓存区之后,返回操作成功。

。Protocol C:写I/O到达本地磁盘和远程节点的磁盘之后,返回操作成功。

3、部署MySQL高可用高扩展集群

企业级MySQL集群具备高可用、可扩展、易管理、低成本的特点,通常采用MySQL读写分离的方法,而读写之间的数据同步采用MySQL的单向或双向

复制技术实现。MySQL写操作一般采用基于heartbeat+DRBD+MySQL搭建高可用集群的方案,而读操作普通采用基于LVS+Keepalived搭建高可用高扩展集

群的方案。

一个MySQL集群中主机的IP地址信息及用途
-----------------------------------------------------------------------------
主机名                IP地址                   用途

dbm157                192.168.1.157     heartbeat+DRBD+MySQL的primary节点
dbm158                192.168.1.158     heartbeat+DRBD+MySQL的secondary节点
dbs159                192.168.1.159     slave(master_host=192.168.1.222)
dbs160                192.168.1.160     slave(master_host=192.168.1.222)
dbs161                192.168.1.161     slave(master_host=192.168.1.222)
LVS1                  192.168.1.146     LVS+Keepalived
LVS2                  192.168.1.147     LVS+Keepalived
-------------------------------------------------------------------------------

heartbeat+DRBD方案中的IP信息
-------------------------------------------------------------------------------
heartbeat使用的VIP                        heartbeat主、备节点
-------------------------------------------------------------------------------
192.168.1.157(primary)
192.168.1.222
192.168.1.158(secondary)
-------------------------------------------------------------------------------

LVS+Keepalived上VIP和realserver的IP信息
-------------------------------------------------------------------------------
VIP                                    realserver
-------------------------------------------------------------------------------
192.168.1.159
192.168.1.223                            192.168.1.160
192.168.1.161
-------------------------------------------------------------------------------

1>配置之前的准备

1]设置hostname及解析

首先要给需要配置DRBD的两台主机配置hostname,设置之后通过"uname -n"检查设置是否成功。同时要求者两台主机的

hostname能分别解析到两台机器的内网IP(即两台主机相互通信时使用的网络地址)

vim  /etc/hosts,添加如下内容:

192.168.1.157  dbm157
192.168.1.158  dbm158

2]磁盘分区规划

根据当前DB文件的大小及后期的增长划分出一个分区,用于存放所有可变收文件。例如,整个MySQL的datadir目录、binlog文件

my.cnf文件,还包括所有表的ibd文件(单独表空间)、ibdata文件和ib_logfile文件。两台主机节点分区最好大小一样,至少要保

证secondary节点分区尺寸大于primary节点分区尺寸,以避免后期因空间不足而出现难以预见的问题。

3]熟悉网络环境

确定利用DRBD进行同步的网络状况是否良好。DRBD同步操作队网络环境要求很高,特别是在写入数据量特别大、需要同步的数据很多

时尤为重要。网络环境越好,同步的速度相对越快。可以考虑把DB对外提供服务的网络和DRBD同步网络分开,这样可以使业务对DB的访问

请求和DRBD同步互不影响,但也会带来一些成本的增。规划两台主机之间的心跳线为两根以上,这样能保证不会为某一线路故障而产生切换

工作。在高可用方案中,一般要求用三根以上心跳线进行心跳检测,以此来减少误切换和“脑袋”问题,同时要确认上层交换机是否禁止ARP广播。

2>DRBD的部署

-->uname -a

-->yum install kernel* -y

yum -y install kmod-drbd83 drbd83    (CentOs通过yum安装DRBD服务)   或源码安装

-->modprobe -l|grep -i drbd             (检查DRBD是否安装成功)

-->lsmod |grep -i drbd

安装成功之后,在/sbin目录下面有drbdadm、drbdmeta、drbdsetup命令,以及/etc/init.d/drbd启动脚本。

3>DRBD的配置

1]DRBD使用的硬盘分区

最好使用相同尺寸的单独分区,同时考虑DB的大小和未来的增长量。也可以使用LVM进行分区。只有保证两台机器型号或性能一样好,才能保证

在切换后secondary节点能完成原来primary节点承担的业务负载。两台机器一样。

-->df -h |grep database

2]drbd.conf配置文件

DRBD运行需要读取/etc/drbd.conf配置文件,可以通过如下命令重建这个配置文件,该文件中描述了DRBD设备与硬盘分区的映射关系和DRBD的一些

配置参数。

-->cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc/drbd.conf

两台主机节点的相关信息如下表:

两台主机节点的相关信息

-----------------------------------------------------------------------------------------
节点角色             主机名                 IP地址                   DRBD分区
-----------------------------------------------------------------------------------------
primary节点          dbm157               192.168.1.157               /dev/sda2
primary节点          dbm158               192.168.1.158               /dev/sda2
-----------------------------------------------------------------------------------------

博主

让学习成为习惯,坚持-共享-开源-自由! 成功者决不放弃,放弃者绝不成功!

相关推荐

嗨、骚年、快来消灭0回复。