3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建
preface
在上节的说了mysql的搭建,这节我们在上节的基础上,继续搭建heartbeat。
安装和配置heartbeat
采用yum安装,dbmaster81和dbbackup136上都安装,安装命令如下:
[root@dbmaster81 ~]# rpm -vih http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # 先安装这个yum源
[root@dbmaster81 ~]# yum -y install heartbeat heartbeat-devel heartbeat-stonith heartbeat-pils
安装完成后,在dbmaster81上copy配置文件即可,dbmaster81配置完成后再scp给dbbackup136.
[root@dbmaster81 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/ #heartbeat主配置文件
[root@dbmaster81 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/ #资源信息定义文件
[root@dbmaster81 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/ # 心跳检测使用的认证文件,需要设置文件权限必须为600。
[root@dbmaster81 ha.d]# chmod 600 /etc/ha.d/authkeys # 必须是600权限
[root@dbmaster81 ha.d]# cp /etc/init.d/mysqld /etc/ha.d/resource.d/ # 把mysqld脚本复制到heartbeat下面,这样受heartbeat控制。
修改配置文件。
主配置文件
[root@dbmaster81 ha.d]# cat /etc/ha.d/ha.cf
logfile /var/log/ha-log #指定heartbeat日志文件的位置
keepalive 1 # 心跳发送时间间隔
deadtime 15 # 备用节点15s内没有检测到master机的心跳,确认对方故障
warntime 5 # 警告5次
initdead 30 # 守护进程启动30s后,启动服务资源。
ucast eth0 172.16.22.136 # 另一台主机节点eth0的地址,注意是另一台。
auto_failback off # 当primary节点切换到secondary节点之后,primary节点恢复正常,不进行切回操作,因为切换一次mysql master成本很高。
node dbmaster81 # 定义两个节点的主机名,一行写一个
node dbbackup136
respawn hacluster /usr/lib64/heartbeat/ipfail #开启dopd功能
respawn hacluster /usr/lib64/heartbeat/dopd
apiauth ipfail gid=haclient uid=hacluster
apiauth dopd gid=haclient uid=hacluster
认证文件:
[root@dbmaster81 ha.d]# grep -v ^# /etc/ha.d/authkeys
auth 1 #默认配置,去掉注释即可
1 sha1 HA_DB # 使用sha验证,密码为HA_DB
资源说明文件:
[root@dbmaster81 ha.d]# grep -v ^# /etc/ha.d/haresources
dbmaster81 drbddisk::r0 Filesystem::/dev/drbd0::/database mysqld IPaddr::172.16.22.250/24/eth0
参数解释:
- dbmaster81
这个是在ha.cf里面node参数指明的,两者必须一致。 - 192.168.22.250/24/eth0
这是个VIP,在两台主机之间漂移 - drbddisk
这是一个管理drbd的脚本,heartbeat默认提供这个脚本文件,可以在/etc/ha.d/resource.d目录下找到。r0是一个启动资源,在DRBD配置文件中定义,通过“drbddisk::0”可以切换到drbd主机为primary节点或secondary节点,只有状态Primary节点才可以挂载DRBD分区。drbddisk脚本相当于执行了“drbdadm primary r0”,表示把DRBD资源的角色进行变更。 Filesystem::/dev/drbd0::/database
表示把/dev/drbd0设备挂载到/database分区下。
DRBDDISK脚本
[root@dbmaster81 ~]# vim /etc/ha.d/resource.d/drbddisk
69 $DRBDADM --force primary $RES && break
# 第69行,添加--force,使其强制成为Primary,如果不加的话,当master通过断电关机或者直接拔网线后,backup无法启动VIP以及drbd的,人工执行这个drbddisk脚本也是报错的,提示 State change failed: (-7) Refusing to be Primary while peer is not outdated ,导致无法切换。
我们把上面配好的四个配置文件(/ha.cf,/etc/ha.d/authkeys,/etc/ha.d/haresources,/etc/ha.d/resource.d/drbddisk)复制到172.16.22.136(dbbackup136)上面。但是需要改ha.cf配置文件里的ucast参数。改成dbbackup136自身的,还有haresources的dbmaster81,需要改成另一台备份服务器的主机名,由dbmaster81改为dbbackup136。
Notice
mysql不需要开机自启动,drbd和heartbeat需要开机自启动。
[root@dbmaster81 ~]# chkconfig --list |grep -E "heartbeat|mysqld|drbd"
drbd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
heartbeat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
启动heartbeat
在172.16.22.81上启动
[root@dbmaster81 ha.d]# service heartbeat start # 启动报错
Starting High-Availability services: CRITICAL: Resource drbddisk::r0 is active, and should not be!
CRITICAL: Non-idle resources can affect data integrity!
info: If you don't know what this means, then get help!
info: Read the docs and/or source to /usr/share/heartbeat/ResourceManager for more details.
CRITICAL: Resource drbddisk::r0 is active, and should not be!
CRITICAL: Non-idle resources can affect data integrity!
info: If you don't know what this means, then get help!
info: Read the docs and/or the source to /usr/share/heartbeat/ResourceManager for more details.
CRITICAL: Non-idle resources will affect resource takeback!
CRITICAL: Non-idle resources may affect data integrity!
Done.
[root@dbmaster81 ha.d]# service heartbeat status # 如没有启动成功,那么走下面的解决方法
解决方法
[root@dbmaster81 ha.d]# service mysqld stop
Stopping mysqld: [ OK ]
[root@dbmaster81 ha.d]# umount /database/
[root@dbmaster81 /]# service drbd stop
[root@dbmaster81 ha.d]# service heartbeat start
两者都启动后,检测是否有VIP,heartbeat是否成功启动
[root@dbmaster81 /]# ip a |grep 'inet' #检测IP是否有
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 172.16.22.81/24 brd 172.16.22.255 scope global eth0
inet 172.16.22.250/24 scope global eth0
inet6 fe80::20c:29ff:fecb:9149/64 scope link
[root@dbmaster81 ~]# tail -f /var/log/ha-log # 查看日志是否正常启动
'''
ip-request-resp(default)[11422]: 2016/11/21_18:13:20 received ip-request-resp drbddisk::r0 OK yes
ResourceManager(default)[11443]: 2016/11/21_18:13:20 info: Acquiring resource group: dbmaster81 drbddisk::r0 Filesystem::/dev/drbd0::/database mysqld IPaddr::192.168.22.250/24/eth0 # 开始执行这条语句在haresource
ResourceManager(default)[11443]: 2016/11/21_18:13:20 info: Running /etc/ha.d/resource.d/drbddisk r0 start # 启动drbd
/usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_/dev/drbd0)[11507]: 2016/11/21_18:13:20 INFO: Resource is stopped
ResourceManager(default)[11443]: 2016/11/21_18:13:20 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /database start # 挂载目录
Filesystem(Filesystem_/dev/drbd0)[11587]: 2016/11/21_18:13:20 INFO: Running start for /dev/drbd0 on /database
Filesystem(Filesystem_/dev/drbd0)[11587]: 2016/11/21_18:13:20 INFO: Starting filesystem check on /dev/drbd0
/usr/lib/ocf/resource.d//heartbeat/Filesystem(Filesystem_/dev/drbd0)[11579]: 2016/11/21_18:13:21 INFO: Success # 成功
ResourceManager(default)[11443]: 2016/11/21_18:13:23 info: Running /etc/ha.d/resource.d/IPaddr 192.168.22.250/24/eth0 start
IPaddr(IPaddr_192.168.22.250)[12005]: 2016/11/21_18:13:23 INFO: Adding inet address 192.168.22.250/24 to device eth0 # 启动VIP了
IPaddr(IPaddr_192.168.22.250)[12005]: 2016/11/21_18:13:23 INFO: Bringing device eth0 up
'''
heartbeat进程在但是没有VIP
master和backup的heartbeat进程都在运行中,但是两者都没有VIP,此时,重启了master服务器上的drbd,mysql,heartbeat都不生效。最终,同时重启了master和backup上两台服务器上的heartbeat进程后,VIP才出现。
测试Mysql+Heartbeat+DRBD是否生效。
检测Mysql+Heartbeat+DRBD 是否正常联合工作,需要这么查看:
- 停掉master的heartheat看看是否能正常切换。
- 停掉master的网络或者直接将master系统shutdown,看看能否正常切换。
- 启动master的heartbeat看看是否能不切换回来,因为配置文件ha.cf中使auto_failback为off,不进行切回。
注意:这里说的切换是不是已经将mysql停掉、是否卸载了文件系统等等。
我们在172.16.22.81(dbmaster81)上查看当前状态
[root@dbmaster81 ~]# df -hT # 磁盘挂载中
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 28G 2.9G 23G 12% /
tmpfs tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 ext4 283M 57M 212M 22% /boot
/dev/drbd0 ext4 11G 48M 9.5G 1% /database
[root@dbmaster81 ~]# service mysqld status # 数据库在运行中
mysqld (pid 13035) is running...
[root@dbmaster81 ~]# ip a|grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 172.16.22.81/24 brd 172.16.22.255 scope global eth0
inet 172.16.22.250/24 brd 172.16.22.255 scope global secondary eth0 # Vip在master上。
此时看看172.16.22.136(dbbackup136)上的状态。
[root@dbbackup136 ~]# df -hT # 磁盘未挂载
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 28G 2.9G 23G 12% /
tmpfs tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 ext4 283M 59M 209M 22% /boot
[root@dbbackup136 ~]# service mysqld status # mysql停止运行的
mysqld is stopped
[root@dbbackup136 ~]# ip a|grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 172.16.22.136/24 brd 172.16.22.255 scope global eth0 #没有VIP
停止heartbeat进程或者使拔掉master网线
我们在172.16.22.81(dbmaster81)上关机,模拟服务器宕机
[root@dbmaster81 ~]# halt
此时看看172.16.22.136(dbbackup136)上的状态。
[root@dbbackup136 ~]# service mysqld status # 数据库在运行中
mysqld (pid 26739) is running...
[root@dbbackup136 ~]# ip a|grep 'inet ' # Vip在master上。
inet 127.0.0.1/8 scope host lo
inet 172.16.22.136/24 brd 172.16.22.255 scope global eth0
inet 172.16.22.250/24 brd 172.16.22.255 scope global secondary eth0
[root@dbbackup136 ~]# df -hT # 磁盘挂载中
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 28G 2.9G 23G 12% /
tmpfs tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 ext4 283M 59M 209M 22% /boot
/dev/drbd0 ext4 11G 48M 9.5G 1% /database
master关机后,backup能够正常接替master的服务,此时向Mysql插入数据,看能不能够正常使用Mysql,我这边用Navicat来操作Mysql,连接的是VIP(172.16.22.250),能够正常操作Mysql。说明Mysql+Heartbeat+DRBD联调成功。
等dbmaster81开机后,heartbeat的VIP等各项资源都没有回切回来,说明正确。因为配置文件配置的就是不回切,除非dbbackup136宕机了。
至此
我们已经把heartbeat安装成功,下面就说LVS+Mysql slave做负载均衡了。
3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建的更多相关文章
- 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...
- 4 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之Lvs为Mysql-slave做负载均衡
preface Mysql+drbd+heart能够实现Mysql的高可用了,master出现故障的时候能够快速切换.在现在的业务情况下,读操作多,写操作少的情况下,一台DB server明显扛不住, ...
- 5 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之生产环境下drbd裂脑处理
preface 公司的业务变更,导致服务器要搬迁,所以需要关闭服务器,然后到新地在开启服务器. 关机前确定drbd+heartbeat+mysql是正常使用的,没有异常,Heartbeat和drbd都 ...
- 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
preface 上一节我们讲了DRBD的原理,以及如何部署DRBD,那么现在在上一节的基础上部署Mysql 安装并启动Mysql 为了方便,我一般采用yum安装Mysql.命令如下: 在172.16. ...
- mysql+heartbeat+DRBD+LVS集群
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- ysql+heartbeat+DRBD+LVS实现mysql高可用
在企业应用中,mysql+heartbeat+DRBD+LVS是一套成熟的集群解决方案,通过heart+DRBD实现mysql的主 节点写操作的高可用性,而通过mysql+LVS实现数据库的主从复制和 ...
- LVS+Heartbeat 高可用集群方案操作记录
之前分别介绍了LVS基础知识和Heartbeat基础知识, 今天这里简单说下LVS+Heartbeat实现高可用web集群方案的操作说明. Heartbeat 项目是 Linux-HA 工程的一个组成 ...
- (转)基于keepalived搭建MySQL的高可用集群
基于keepalived搭建MySQL的高可用集群 原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...
随机推荐
- Bootstrap系列 -- 3. 段落
一. 段落基本用法 1. 段落使用<p>标签 2. 段落全局使用font-size=14px字体 ..... 更多请使用Firefox 查看 <p> 华盛顿大学和清华大学共同在 ...
- 遇到技嘉 Gigabyte UEFI DualBIOS问题
我的板子是技嘉H87-D3H二手板子,用了差不多三年左右,一直感觉不错,承担着高强度的开发任务. 问题描述: 无法开机,按下电源后,主板通电状态灯亮,CPU和显卡风扇转动,显示器显示下图: 2至3秒后 ...
- MapReduce编程示例
1.将hadoop插件放入eclipse/plugins目录中 2.eclipse配置hadoop 依赖包目录 Window—Preferences 3.新建Map/Reduce Project项目 ...
- MyEclipse10中自动生成Hibernate的实体和xml配置文件
前提:1.在项目中添加Hibernate支持 2.MyEclipse中已经创建好数据库连接 3.表已经建好并且有主键 步骤如下: 1.在DB Browser窗口的已打开连接节点中选中用户创建的所有的表 ...
- Java GC收集器配置说明
根据Java GC收集器具体分类,我们可以看出JVM根据需求不同提供了三种选择:串行收集器.并行收集器.并发收集器. 串行收集器只适用于小数据量的情况,我们主要了解一下并行收集器和并发收集器.默认情况 ...
- Java 接口中常量的思考
接口中不允许方法的实现,而抽象类是允许方法实现的及定义变量的,因此我们可以看出接口是比抽象类更高层次的抽象.如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为(例如set()方法 ...
- Ubuntu14.04下安装tomcat
1.官方网站下载最新的tomcat:http://tomcat.apache.org/download-80.cgi在ubuntu上,我们下载zip和tar.gz.Ubuntu14.04安装和配置To ...
- 高手详解SQL性能优化十条经验
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便会 ...
- 类似掌盟的Tab页 Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签 (转)
原博客地址 :http://blog.csdn.net/xiaanming/article/details/10766053 本文转载,记录学习用,如有需要,请到原作者网站查看(上面这个网址) 之前 ...
- yum命令mysql,jdk,tomcat
一.首先使用Yum list available xxx命令罗列出远程仓库里面可以安装的包 1.列出可以安装的java包 yum list available java* 输出如下: 2.列出可以安装 ...