Hearbeat :提供高可用服务开源软件:通过hertbeat软件可以将一台down机的服务器可以将服务转移到新的正常运转的服务器上,至少两台服务器,热备状态,从服务器监控着主服务器的状态,
Hearbeat:除控制ip资源漂移外更可以擅长对服务资源服务的控制,配置等可以控制服务数据库启动停止。
Keepalive:主要负责ip漂移
起源于HA开源软件
Hearbeat工作原理:主服务器发送心跳消息,从服务器监听心跳。监听有时间,1-2-3等
裂脑:由某些原因导致高可用服务之间检测不到对方的心跳。裂脑又被称为大脑垂直分割,分区集群
造成大脑垂直分割的原因及处理:
原因:心跳线坏、网卡,驱动、防火墙阻挡心跳消息、心跳网卡地址等信息、心跳方式不同。
处理:多条心跳线、利用智能设备检测到大脑垂直分割时强行关闭一个星心跳节点、做监控,实时监控处理。启动磁盘锁。增加仲裁机制。
如何开发程序判断裂脑
1, 只要被节点出现VIP就是报警
2, 严谨判断,备机出现VIP,并且主机及服务还活着,裂脑了(依赖报警)
Fence设备:智能电源管理设备服务器通过网口串口管理电源,类似远程管理卡,内置和外置,内置只能重启,
仲裁:节点双方ping自己的网关,ping不同自己关机,主备和仲裁设备fence连接
出问题时候把各自的村和状态写到仲裁设备里面。有仲裁设备区控制主备服务器的电源。
Stonith:hearbeat组件
步骤:
当备用服务器接收不到心跳stontih事件
备用服务器发送一个stounith复位命令道stonith设备
关闭主服务器的电力
Hearbeat ip 地址接管及故障转移
Hearbeat心跳消息大小为150字节,单播广播多播,串口
当主服务器恢复在线状态时,通过ip-request消息要求备机释放主服务器失败时被服务器获取资源,然后被分服务器关闭释放主服务器失败时后去的资源及服务
被服务器释放主服务器失败时去取的的资源后就会通过ip-request-resp消息通知主服务器他自己不再拥有该资源及服务,主服务器收到请节点的ip-request0resp消息后,启动失败时释放的资源和服务,斌开始提供正常访问的服务
心跳机制一般都是通过udp随意传输,多播端口694
Vip
一块网卡配置多ip采用别名,
别名现已经快被遗弃
另一种是辅助ip
Hearbeat 2.1.4 级以前采用别名iphearbeat2.1.4 以后采用辅助ip来提供vip服务
Keeplive软件一直是辅助ip来提供服务
Hearbeat:
三个分支:
Resourse Sagents
安装heartbeat步骤
环境准备
在实际生产环境中:
系统初始安装包
Web高可用需要如下环境:、
一台机器需要3快网卡,1快用于连接外网wan,一块用于内网lan数据装发,一块用于心跳线
数据库传输量小的环境:
数据库的环境一般只需要两块网卡,一块是内网lan数据传输网卡,一块是心跳连接网卡
数据量大的话还需要更多的网卡,做绑定。
本人系统环境是centos6.532位i686
需要安装的包
yum install tree nmap sysstat lrzsz dos2unix –y
禁用selinux
关闭iptables
配置ip
Master:192.168.0.181,VIP:192.168.1.181,心跳IP:192.168.2.181/24
Slave:192.168.0.183,VIP:192.168.1.183,心跳IP:192.168.2.183/24
配置主机名:vim/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=data-1-1
~
配置hosts(两边都做):vim /etc/hosts
[root@data-1-1 ~]# cat /etc/hosts
127.0.0.1 localhost.localdomainlocalhost
::1 localhost6.localdomain6localhost6
192.168.2.181 data-1-1
192.168.2.183 data-1-2
设置路由(两边都做):
在Data1-2
route add -host 192.168.2.181 dev eth2
[root@data-1-2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.181 0.0.0.0 255.255.255.255UH 0 0 0 eth2
192.168.2.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
在data1-1
route add -host 192.168.2.183 dev eth2
[root@data-1-1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.183 0.0.0.0 255.255.255.255UH 0 0 0 eth2
192.168.2.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
使用公用yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
使用epel原包安装
wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm -qa |grep epel
yum install heartbeat* -y
配置文件详解:
Heartbeat
Heartbeat高可用之间认证的方法有crc,sha1,md5我们采用sha1
生成认证号
echo liaoxz|sha1sum
vim /etc/ha.d/autokeys
[root@data-1-1 ha.d]# cat authkeys
auth 1
1 sha1 82a1b3651bc7adf1a7c4fe3f792f49a079055606
配置文件权限必须是600
配置文件:/etc/ha.d
资源控制目录:haresources
配置文件核心:Ha.cf
脚本放置配置文件夹:/etc/ha.d/resource.d
Authkey认证文件
Haresource资源配置文件
配置文件模板在/usr/share/doc/heartbeat-3.0.4/
参数配置文件ha.cf
#debugfile /var/log/ha-debug
#调试日志存放位置
#
#
# File towrite other messages to
#
#logfile /var/log/ha-log
#日志存放位置
#
# Facilityto use for syslog()/logger
#
logfacility local0
#在syslog服务中配置通过local设备接收日志
#
# A noteon specifying "how long" times below...
#
# Thedefault time unit is seconds
# 10 means ten seconds
#
# You canalso specify them in milliseconds
# 1500ms means 1.5 seconds
#
#
# keepalive: how long between heartbeats?
#
#keepalive 2
#心跳间隔时间每隔几次发送一次广播
# deadtime: how long-to-declare-host-dead?
#
# If you set this too low you will getthe problematic
# split-brain (or cluster partition) problem.
# See the FAQ for how to use warntime to tune deadtime.
#
#deadtime 30
#指定若备用节点在多长时间没收到主节点心跳信号,则立即接管节点服务资源
# warntime:how long before issuing "late heartbeat" warning?
# See theFAQ for how to use warntime to tune deadtime.
#
#warntime 10
#心跳延迟时间,10秒内收不到主节点的心跳信号则立即接管主节点资源
#
# Veryfirst dead time (initdead)
#
# On somemachines/OSes, etc. the network takes a while to come up
# andstart working right after you've been rebooted. As a result
# we havea separate dead time for when things first come up.
# Itshould be at least twice the normal dead time.
#
#initdead 120
#首次运行需要等待120秒才启动主服务器的任何资源,用于单机启动时会遇到VIP绑定很慢
为正常现象
#bcast eth0
#广播通讯使用设备
#mcast eth0 225.0.0.1 694 1 0从心跳线多播
#多播使用的设备 地址段 端口ttl值 loop值
配置文件hrresurces
Vim /etc/ha.d/haresources
设置VIP
data-1-1 IPaddr::192.168.1.181/24/eth1
data-1-2 IPaddr::192.168.1.183/24/eth1
使用的是下面的脚本设置的参数
/etc/ha.d/resource.d/IPaddr 192.168.1.181/24/eth1start——启动VIP 清arp
放在resource.d下的内容都要支持start,stop的格式。
同样放在haresource下的内容指定的脚本也要支持。