如何创建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用

这篇文章主要为大家展示了“如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用”这篇文章吧。
 
 环境介绍:
 
 
主节点mysql1:192.168.9.25
 
主节点mysql2:192.168.9.26
 
Heartbeat的写的VIP:192.168.9.231
 
LVS1:192.168.9.27
 
LVS2:192.168.9.28
 
keepalived 分发的VIP:192.168.9.230
 
要分发的mysql1: 192.168.9.29
 
要分发的mysql2:192.168.9.30
 
整体安装注意:1,drbd的两个节点,同一时期只有那个主节点能挂载盘DRBD的那个盘,2,把MySQL的数据文件,日志文件,临时文件目录要写到DRBD那个盘也就是datadir ,tmpdir ,log_error, log-bin 这几个参数。3,关于MySQL的配置文件(/etc/my.cnf)
 
也应该放到drdb的那个盘上,并且把主节点和从节点上/etc目录下的my.cnf删掉,但是必须要建立软连接,到/etc/my.cnf。4,lvs+keepalived 架构中,lvs实现分发,keepalived实现lvs的高可用,keepalived配置里vip,作为分发的vip.
  
heartbeat+drbd搭建流程:
    如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案中,heartbeat为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat+drbd在Linux下创建一个高可用(HA)的集群服务器。
         DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了
 
   heartbeat 实现当本地节点出问题后,自动检测出来,并且完成主备切换,实现高可用,
 
 区别于MHA: mha 中从change 的时候指向的是真的IP。而DRBD指向的vip
 
1,DRBD的部署(两个主节点都要部署)
 
DRBD的安装,centOS6.5自带的yum没有drbd和Heartbeat的包,需要更新yum源,再安装,步骤如下:
[root@master2 ~]# yum install kernel-devel  ##升级内核
[root@master2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm   ## centOS6的第三方工具包集
[root@master2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-5-5.el5.elrepo.noarch.rpm如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用  ## centOS5的第三方工具包集
[root@master2 ~]# yum -y install drbd83-utils kmod-drbd83
[root@master2 ~]# modprobe drbd         #加载DRBD。执行该命令如果报错,将系统重启后再执行。
[root@master2 ~]#  lsmod |grep drbd
 
drbd                  332493  4       #显示此条信息,说明drbd加载成功
 
2,DRBD的配置
 
配置之前需要先使用fdisk -l或df -v看下系统的分区情况,这里用到系统现有的/dev/sdb分区做为drbd的配置。
 
2 . 对于DRBD的配置,配置/etc/drbd.conf和hosts文件,dbserver1和dbserver2的hosts添加的内容如下:
 
[root@master1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.9.25    master1
192.168.9.26    master2
 
3.  #配置/etc/sysconfig/network文件,该文件两边配置
 
[root@master1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=master1 、master2
 
4.  /etc/drbd.conf文件的内容如下(dbserver1和dbserver2的配置一样):
 
[root@master1 ~]# cat  /etc/drbd.conf               ##注意真正配置的时候,要把##注释的东西删掉。
 
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
 
#include "drbd.d/global_common.conf";
 
#include "drbd.d/*.res";
 
global { usage-count yes; }
 
common { syncer { rate 10M; } }                 ###设置主,备节点同步的的网络速率最大值,单位是字节
 
resource r1 {                                 
 
        protocol C;                          ##使用drbd的第三种同步协议,表示收到远程主机的写入确认后认为写入完成
 
        startup {
 
        }
 
 disk {
 
                on-io-error detach;
 
               # size 1G;
 
                     }
 
 net {
 
        }
 
   on mysql_master1 {
 
                device /dev/drbd0;
 
                disk /dev/sdb;  #这里磁盘或分区两边最好一样,也可以用逻辑分区
 
                address 192.168.9.25:7888;
 
                meta-disk internal;
 
        }
 
   on mysql_master2 {
 
                device /dev/drbd0;
 
                disk /dev/sdb;     
 
                address 192.168.9.26:7888;   #端口和上面一样都设置成7888就可以
 
                meta-disk internal;
 
        }
 
}
 
5 .
 
 先执行dd测试命令,覆盖文件系统中 的设备块信息,不然的话,在第6步创建资源的时候会报错  
 
Dd  if=/dev/zero of=/dev/sdb  bs=1M count=100
 
 
6 . DRBD的启动和停止
 
[root@master1 ~]# /etc/rc.d/init.d/drbd start    #启动drbd
 
[root@master1 ~]# /etc/rc.d/init.d/drbd stop    #停止drbd
 
[root@master1 ~]# /etc/rc.d/init.d/drbd restart  #重启drbd
 
7 . 查看DRBD状态
 
watch -n 1 cat /proc/drbd
 
/etc/init.d/drbd status
 
8 . 设置当前节点为主节点,并进行格式化和挂载  注意只有主节点能挂载,
 
[root@master1 ~]#drbdadm  primary all  
如果上条命令不成功,则执行下面命令。
 
[root@master1 ~]# drbdadm -- --overwrite-data-of-peer primary all
 
[root@master1 ~]# mkfs.ext3  /dev/drbd0        ##这个也就是/dev/sdb
 
[root@master1 ~]# mkdir  -p /mysql/data       ##创建drbd那个盘的挂载点
 
[root@master1 ~]# mount /dev/drbd0  /mysql/data
 
主drbd挂载后可以往drbd目录也就是/mysql/data目录写数据,然后主备切换,如果数据同步,表明drbd搭建成功。
 
主切换成从,需要先卸载文件系统,再执行降级为从的命令:
 
[root@master1 ~]#umount /dev/drbd0
 
[root@master1 ~]#drbdadm secondary all
 
从切换成主,要先执行升级成主的命令然后挂在文件系统:
 
[root@master1 ~]#drbdadm  primary all 如果不成功drbdsetup /dev/drbd0 primary -o
 
[root@master1 ~]#mount /dev/drbd0  /mysql/data  
 
 9,如下可以判断出是master1是Primary状态。  
 
[root@master1 ~]# more  /proc/drbd   | grep ro
 
0 : cs : Connected ro : Primary/Secondary  ds:UpToDate/UpToDate C r------
 
 

dawei