heartbeat安装,主要用于linux ha,采用VIP的方式,failover/failback,当服务器故障时能够自动切换到备机,保证应用服务的可靠运行
--由于源码安装繁琐,本次采用yum方式安装
--hosts 配置 所有节点
vi /etc/hosts
192.168.33.190 sql1
192.168.33.191 sql2
192.168.33.199 mha
--vip
vip: 192.168.33.175
--同步各节点时间
《linux ntp服务器搭建.sql》
--创建heartbeat相关用户和组 所有节点
groupadd haclient
useradd -g haclient hacluster -M -s /sbin/nologin
--1、配置epel联网/yum联网 所有节点
《vmware网卡net方式linux下静态ip上网设置.sql》
yum repolist #--检测
--2、提前安装依赖的包 所有节点
yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-develbzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl libaio-devel
--3、yum安装heartbeat 所有节点
yum install heartbeat*
--主配置文件 sql1
vi /etc/ha.d/ha.cf
logfile /var/log/ha-log #--ha的日志文件记录位置。
keepalive 2 #--心跳频率,2表示2秒
warntime 5 #--连续多长时间联系不上后开始警告提示
deadtime 15 #--连续多长时间联系不上后认为对方挂掉了 单位是妙
initdead 90 #--这里主要是给重启后预留的一段忽略时间段 比如:重启后启动网络等,如果在网络还没有通,alive检测肯定通不过,但这时候并不能切换
udpport 694 #--心跳信息传递的udp端口
mcast eth0 225.0.0.1 694 1 0 #采用网卡eth0的udp多播来组织心跳
auto_failback on #--off则只当备用节点当掉后,主节点才取回资源; on主节点恢复后主动抢占资源
# Tell what machines are in the cluster
node sql1
node sql2
--认证信息配置文件 sql1
vi /etc/ha.d/authkeys
auth 1
1 crc
chmod 600 /etc/ha.d/authkeys
--配置ha资源 所有节点 sql1
vi /etc/ha.d/haresources
sql1 IPaddr::192.168.33.175/24/eth0:0 #--格式: 主节点的主机名或域名 VIP 上面的管理服务名mysqld
--同步到sql2
cd /etc/ha.d/
scp authkeys ha.cf haresources root@192.168.33.191:/etc/ha.d/
--启动hearbeat
service heartbeat start #--sql1
--配置开机自启动
chkconfig heartbeat on
--###测试vip转移
--1、eth0:0 当前绑定在sql1上
[root@sql1 ha.d]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:CE:35:88
inet addr:192.168.33.190 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fece:3588/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:342555 errors:0 dropped:0 overruns:0 frame:0
TX packets:113648 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:481485308 (459.1 MiB) TX bytes:8379811 (7.9 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CE:35:88
inet addr:192.168.33.175 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
service heartbeat stop #--sql1
--ping 发现切换
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
--eth0:0 当前已经绑定在sql2上
[root@sql2 ha.d]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:CA:63:8F
inet addr:192.168.33.191 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feca:638f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:342597 errors:0 dropped:0 overruns:0 frame:0
TX packets:116946 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:481525371 (459.2 MiB) TX bytes:9129997 (8.7 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CA:63:8F
inet addr:192.168.33.175 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
--2、由于我们设置auto_failback on 主节点服务正常启动时候,会自动接管vip
service heartbeat start #--sql1
--发现vip切换
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
请求超时。
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.33.175 的回复: 字节=32 时间<1ms TTL=64
--eth0:0 已经被主节点接管
[root@sql1 ha.d]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:CE:35:88
inet addr:192.168.33.190 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fece:3588/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:343209 errors:0 dropped:0 overruns:0 frame:0
TX packets:114284 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:481588839 (459.2 MiB) TX bytes:8489009 (8.0 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CE:35:88
inet addr:192.168.33.175 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
--关闭自动接管 auto_failback off
vi /etc/ha.d/ha.cf --sql1
auto_failback off
service heartbeat restart --sql1 重启生效
vi /etc/ha.d/ha.cf --sql2
auto_failback off
service heartbeat restart --sql2 重启生效
service heartbeat restart --sql1 重启heartbeat
--vip并没有被接管
[root@sql2 ha.d]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:CA:63:8F
inet addr:192.168.33.191 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feca:638f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:342597 errors:0 dropped:0 overruns:0 frame:0
TX packets:116946 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:481525371 (459.2 MiB) TX bytes:9129997 (8.7 MiB)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CA:63:8F
inet addr:192.168.33.175 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
--###手工切换
--主节点发起切换 当前主节点执行 (可主/可备)
/usr/share/heartbeat/hb_standby
--备节点手工接管 当前备节点执行 (可主/可备)
/usr/share/heartbeat/hb_takeover
--###添加haresources的管理服务 mha
--mysql 主/从切换核心脚本 接收start/stop 参数
vi /etc/ha.d/resource.d/mysql_failover
#! /bin/bash
case "$1" in
start)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf &
;;
stop)
mysqladmin -umysql -pmysql shutdown
;;
esac
exit 0
--可执行权限
chmod +x mysql_failover
--测试脚本 启动/关闭 是否正常运行
/etc/ha.d/resource.d/mysql_failover start
/etc/ha.d/resource.d/mysql_failover stop
--更新ha资源配置文件 所有节点
vi /etc/ha.d/haresources #--sql1
sql1 IPaddr::192.168.33.175/24/eth0:mysql_failover #--格式: 主节点的主机名或域名 VIP 上面的管理服务名mysqld
vi /etc/ha.d/haresources #--sql2
sql1 IPaddr::192.168.33.175/24/eth0:mysql_failover #--格式: 主节点的主机名或域名 VIP 上面的管理服务名mysqld
重启各节点heartbeat服务