MySQL高可用介绍1-heartbeat部署

MySQL高可用方案很多,今天主要介绍heartbeat(今天是第一此写文章,请大家不要嘲笑)。

这里写代码片

1.heartbeat高可用简介:

heartbeat一般支持主备模式或主主模式,备机通过心跳线监听主机心跳信息来判断主机状态,如果监听不到主机心跳信息,备机则接替主机继续对外提供服务,从而做到“高可用”。
1.1.常见切换条件:
1.1.1.服务器故障
1.1.2.heartbeat故障
1.1.3.心跳故障
heartbeat心跳线一般使用串口、网卡直连、以太网等方式。
1.2.防止脑裂措施:
1.2.1.同时准备两条心跳线
1.2.2.检测到脑裂强制关闭一个心跳节点(需要fence设备,类似智能电源管理设备,内部fence设备有hp的ILO,IBM的RSAII,DELL的iDRAC)。
1.2.3.启用磁盘锁
1.2.4.监控脑裂实时报警
1.2.5.提前预警,延迟接管
1.2.6.增加仲裁策略
1.3.heardbeat工作依赖消息,类型有:
1.3.1.心跳消息(150字节数据包,控制心跳频率及切换时间)
1.3.2.集群转消息(分为ip-request,ip-request-resp;主服务器恢复在线,通过ip-request消息要求备机释放资源;当备机释放资源后会通过ip-request_resp消息通知主机,主机提供对外服务),
1.4.重传消息
heartbeat是通过ip地址接管和arp广播来进行故障转移的。
arp广播:在主机故障时,备机接管服务,会立即强制更新所有客户端本地的arp表,确保客户端能正确连接到服务。虽然客户端任然使用vip连接服务,但是客户端本地的arp表对应的vip 物理MAC地址发生变化。工作中尽量使用vip对外提供连接服务,ifcofnig eth0:1 192.168.52.103/24 up;
默认配置文件目录/etc/ha.d ,分为ha.cf,authkeys(对端认证),haResources(ip资源及脚本程序);资源目录 /etc/ha.d/resource.d/。
应用场景:前端web服务器,后端数据库服务器,后端存储。前端web服务器可有选择keeplive+lvs组合,也可以选用nginx/haproxy和heartbeat组合。
数据库服务器如果是多从的环境建议使用heartbeat,如果只有多主可以使用keeplive。

2. 搭建步骤:

2.1.环境信息:

[root@node1 ~]# uname -r
2.6.32-504.el6.x86_64
[root@node1 ~]#  lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.6 (Final)
Release:        6.6
Codename:       Final

在CentOS 6.6版本光盘没有自带的heartbeat软件包,所以需要自己下载外部yum源安装,但是在有的环境下上外网需要认证,在一个没有图形的linux环境下如何实现认证就比较尴尬了。最省事的方法就是安装图形界面。
Centos 6.4安装heartbeat 3.0 版本,如果系统没有自带,可以使用外部镜像来安装,
可以通过 wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm下载外部镜像源
(由于本地环境上外网需要认证,所以需要桌面环境,
a. 安装x window, 使用命令:yum groupinstall "X Window System" -y;
b. 安装 Desktop 相关,使用命令:
yum groupinstall “Desktop” “Desktop Platform”
c.
yum –disablerepo=* –enablerepo=c6-media groupinstall “Chinese Support”
如果依赖包报错可以使用
yum groupinstall “Desktop” “Desktop Platform” -y –skip-broken “`忽略依赖包版本问题
安装完成后,直接reboot,然后使用’startx’ 进入桌面(当然这里也可以修改启动脚本,直接启动桌面。

2.2. 安装heartbeat

[root@node2 ~]# yum install -y  heartbeat* 

如果在安装的时候报错找不到软件包可以到”http://rpmfind.net/linux/rpm2html/search.php?query=Redhat&submit=Search+…&system=&arch=“下载。

2.3. IP地址规划:

node1:  
               eth0   10.37.2.100         //主机管理地址
               eth1   192.168.52.106   //心跳地址
                eth0:1  10.37.2.240     //vip,对外提供应用服务地址

node2:
               eth0   10.37.2.111        //备机管理地址
               eth1   192.168.52.103  //心跳地址
                eth0:1  10.37.2.241     //vip,对外提供应用服务地址

2.4.设置主备机器名
这个要注意了,heartbeat需要解析这个主机名来提供服务。
主:

vi   /etc/sysconfig/network 修改主机名
[root@node1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1

也可以通过如下命令临时生效:
[root@node1 ~]# hostname node1
备:

vi  /etc/sysconfig/network 修改主机名
[root@node1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1

也可以通过如下命令临时生效:
[root@node1 ~]#hostname node2
2.5.配置访问路由,绑定心跳地址
主机:
[root@node2 ~]#route add -host 192.168.52.103 dev eth1;//从主机访问192.168.52.103从本地的eth1网卡访问
为了方便,添加到开机自启动脚本中,echo ’ route add -host 192.168.52.103 dev eth1’>>/etc/rc.local
查看路由访问表 route -n

备机:

[root@node2 ~]#route add -host 192.168.52.106 dev eth1;//从主机访问192.168.52.106从本地的eth1网卡访问
为了方便,添加到开机自启动脚本中,echo ’ route add -host 192.168.52.106 dev eth1’>>/etc/rc.local
查看路由访问表 route -n
2.6. heartbeat配置文件解析
默认配置文件目录/etc/ha.d
ha.cf
authkeys(对端认证)
haresources(ip资源及脚本程序)
资源目录 /etc/ha.d/resource.d/
模板目录 /usr/share/doc/heartbeat-3.0.4/,拷贝模板文件到配置目录下
[root@node2 ~]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf haresource authkeys /etc/ha.d/
2.6.1 ha.cf 配置文件参数解析:

    debugfile /var/log/ha-debug   #调试日志 
    logfile /var/log/ha-log      #软件运行日志
    logfacility local1  #在ssylog服务中通过local1设备接收日志
    keeplive 2      #指定心跳间隔为2秒(没2秒在eth1上发一次广播)
    deadtime 30     #死亡时间,若备库在30秒内没收到主库的心跳信息,备库则接管主库 
    warntime    10              #心跳延迟时间,当备库10秒没收到主库心跳,则发一条警告,此时并不会切换
    initdead 120            #指定在heartbeat首次运行后需要等待120秒之后才启动主库的服务。取值至少为deadtime的2倍。有的主库服务需要绑                          定vip,服务器刚启动vip还未绑定,所以需要延迟启动主库上的服务。
    bcast eth1               #指明心跳使用eth1网口上广播,多个端口广播 bcase eth1 eth2
    mcast eth1 225.0.0. 17 694 10  #设置多播通信使用的端口,694为默认端口
ucast eth1 192.168.52.111   # 指定对方IP
    auto_failback on             #主机恢复正常,是否接管资源
    node  node1             # 主备机节点名
    crm no                   #是否开启cluster resource manager集群资源管理)功能

2.6.2 authkey配置文件解析:
authkey文件权限必须是600
配置认证方式(crc,sha1,md5)推荐使用sha1

2.6.3 haresource配置文件解析:
node1 IPaddr::10.0.0.17/24/eth0
node2 IPaddr::10.0.0.18/24/eth0
在node1主机上通过IPaddr脚本来绑定vip信息;node1执行node1后面的命令,只有当node2挂掉了,才会执行node2的命令。
node1 :服务器节点
IPaddr 脚本,位于/etc/ha.d/resource.d/ IPaddr目录下
10.0.0.17/24/eth0 :vip信息
“IPaddr::10.0.0.17/24/eth0”其实就是执行/etc/ha.d/resource.d/IPaddr 脚本,传入‘10.0.0.17/24/eth0’参数并执行stop/start 命令。

3.启动

[root@node2 ~]#/etc/init.d/heartbeat start
等待initdead规定时间过后查看vip状态:

[root@node2 ~]#ip addr ---(如果是5.8版本可以通过ifconfig来查看)
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:0c:29:d1:09:2b brd ff:ff:ff:ff:ff:ff
inet 10.37.2.111/24 brd 10.37.2.255 scope global eth0
inet 10.37.2.240/24 brd 10.37.2.255 scope global secondary eth0
inet 10.37.2.241/24 brd 10.37.2.255 scope global secondary eth0
inet6 fe80::20c:29ff:fed1:92b/64 scope link

可以看出vip已经绑定完毕,由于node1没有启动heartbeat所以node2绑定了2个vip。
在node1启动heartbeat观察vip绑定情况:

[root@node1 ~]# /etc/init.d/heartbeat resatrt
[root@node1 ~]# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:0c:29:50:f0:77 brd ff:ff:ff:ff:ff:ff
inet 10.37.2.100/24 brd 10.37.2.255 scope global eth0
inet 10.37.2.240/24 brd 10.37.2.255 scope global secondary eth0
inet6 fe80::20c:29ff:fe50:f077/64 scope link
valid_lft forever preferred_lft forever

可以观察到node1的vip正常绑定。

4.模拟故障

尝试在node1上模拟故障,停掉heartbeat或者停掉node1服务器,在node2上查看vip绑定状态。
[root@node1 ~]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.
[root@node2 ~]# ip add|grep 10.37.2.
inet 10.37.2.111/24 brd 10.37.2.255 scope global eth0
inet 10.37.2.241/24 brd 10.37.2.255 scope global secondary eth0
inet 10.37.2.240/24 brd 10.37.2.255 scope global secondary eth0
跟预期一致。
在node2上开启heartbeat,查看vip是否自动漂移回node2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值