我们在提供服务的时候,服务器很有可能会因为种种原因宕机,这就大大降低了用户体验,那么如何能
够保证在服务器宕机的情况下依然不影响用户体验呢,这里最常用的方式HA集群,又称为双击热备,它
其实也就是基于非常简单的主从架构。
我们简单地理解就是:有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换到
B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均
衡的功能。
这里有一个非常重要的概念,叫做流动ip,也称vip。
一个 HA 架构,一个交换机下面有两台机器 Web1 和 Web2,其中 Web1 为主节点,正常是它在提供服
务,而 Web2 备用节点是闲置的。 Web1 和 Web2 中间有一根心跳线,检查对方的存活状态。流动 IP,
也叫 vip 是对外提供服务的 ip,正常情况下是配置在Web1 上的,当 Web1 宕机后, Web2 会自动配置
该 vip,对外提供服务。所以我们说,vip就是连接主机和从机的桥梁。
现在来看看如何搭建HA架构:
1、准备两台机器,一台master,一台slave
2、记住两台机器的ip地址:
master : eth0 192.168.1.115
slave : eth0 192.168.1.126
3、两台机器同时操作:
3.1. 关闭防火墙 iptables -F
关闭selinux: setenforce 0
3.2. vim /etc/hosts // 增加内容如下:
192.168.1.115 master
192.168.1.126 slave
4、两台机器上都安装heartbeat的rpm包,如果没有,需要先安装epel的扩展源:
yum install -y epel-release
yum install -y heartbeat* libnet
5、HA集群可以针对任意服务来进行,这里我们对nginx服务进行操作
yum install -y nginx
6、主(master)上配置
# cd /usr/share/doc/heartbeat-3.0.4/
# cp authkeys ha.cf haresources /etc/ha.d/
# cd /etc/ha.d/
# vim authkeys
更改或者增加一行
3 md5 Hello!
然后修改其权限
# chmod 600 authkeys
编辑 haresources 文件
# vim haresources
加入下面一行
# master 192.168.1.110/24/eth0:0 nginx
说明:master为主节点的hostname,192.168.1.110为流动ip,/24 表示网段,eth0:0为vip的设
备名,nginx 为heartbeat 监控的服务,也是两台机器对外提供的核心服务。
然后编辑ha.cf
# vim ha.cf
改为如下内容
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.1.100
auto_failback on
node master
node slave
ping 192.168.1.1
respawn hacluster /usr/lib/heartbeat/ipfail
说明:
/var/log/ha-debug:该文件保存heartbeat 的调试信息
logfile /var/log/ha-log:该文件为heartbeat 的日志文件
keepalive 2:心跳的时间间隔,默认时间单位为秒
deadtime 30:超出该时间间隔为收到对方节点的心跳,则认为对方死亡
warntime 10:超出该时间间隔为收到对方节点的心跳,发出警告并记录到日志中
initdead 60:在某些系统上,系统重启后要经过一段时间网络才能正常工作,该选项
用于解决这种情况产生的时间间隔,取值至少为deadtime的两倍。
udpport 694:设置广播通信使用的端口,694为默认端口
ucast eth0 192.168.1.126:设置对方机器心跳检测的网卡和ip
auto_failback on: heartbeat 的两台主机分别为主节点和从节点。主节点在正常情
况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选 项设为 on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节 点。
node 指定主和从,各占一行,主在上从在下。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与 heartbeat 一同启动和关
闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是 ipfail,该进程用于检 测和处理网络故障,需要配合 ping 语句指定的 ping node 来检测网络连接。如果你的系统是 64,请注意该文件的路径。
7、把主上的三个配置拷到从上
# cd /etc/ha.d/
# scp authkeys ha.cf haresources slave:/etc/ha.d/
8、到从上编辑ha.cf
# vim /etc/ha.d/ha.cf
ucast eth0 192.168.1.126 改为 ucast eth0 192.168.1.115
9、启动 heartbeat
先主后从
/etc/init.d/heartbeat start