博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之heartbeat的搭建
阅读量:7250 次
发布时间:2019-06-29

本文共 8672 字,大约阅读时间需要 28 分钟。

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.cflogfile /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/dopdapiauth ipfail gid=haclient uid=haclusterapiauth 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:offheartbeat       0:off   1:off   2:on    3:on    4:on    5:on    6:offmysqld          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 stopStopping 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           # 开始执行这条语句在haresourceResourceManager(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 startIPaddr(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 是否正常联合工作,需要这么查看:

  1. 停掉master的heartheat看看是否能正常切换。
  2. 停掉master的网络或者直接将master系统shutdown,看看能否正常切换。
  3. 启动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做负载均衡了。

转载地址:http://qfhbm.baihongyu.com/

你可能感兴趣的文章
31、路由器搭建帧中继云
查看>>
模板分页封装
查看>>
分布式系统之Quorum (NRW)算法
查看>>
jQuery:理解$(document).ready()的特殊写法
查看>>
使用Jenkins进行持续构建与发布应用到Kubernetes集群中
查看>>
Elasticsearch 分片交互过程分析
查看>>
数据库事务原子性、一致性是怎样实现的?
查看>>
BPMN 2.0规范详解
查看>>
恢复被错误改动的文件权限
查看>>
Centos7环境下nginx配置
查看>>
每天学习一个LINUX命令:pwd 显示当前目录(Print-Working-Directory)
查看>>
48、LNMP架构介绍|mysql安装|php安装|nginx介绍
查看>>
Confluence 6 空间
查看>>
关于网卡上网问题
查看>>
2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理
查看>>
mysql导入导出数据出现ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option...
查看>>
清除vista通知区域历史记录手动清除哦
查看>>
redmien使用技巧,按分派人分组显示问题,方便跟踪
查看>>
Project Server 2013新手入门 (五)配置用户登录
查看>>
linux下yum三种搭建方法
查看>>