Keepalived高可用
一、Keepalived基本简述
高可用一般是指2台机器启动着完全相同的业务系统,当有一台机器down机了,另外一台服务器就能快速的接管,这种快速接管对于访问的用户是无感知的。高可用的实现方式通常有两种:硬件实现高可用(F5)、软件实现高可用(Keepalived),我们主要讲解通过Keepalived实现高可用。
keepalived软件是基于VRRP协议实现的,主要用于解决单点故障问题。
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议。利用VRRP,一组路由器(同一个VLAN中的接口)协同工作,但只要一个处于Master状态,处于该状态的路由器接口承担实际数据流量的转发任务。在一个VRRP组内的多个路由器接口共用一个虚拟IP地址,该地址被作为局域网内所有主机的缺省网关地址。
二、Keepalived高可用安装配置
作用 | IP | 角色 |
---|---|---|
VIP(虚拟IP) | 192.168.10.234 | 虚拟IP地址 |
node1 | 192.168.10.6 | Master |
node2 | 192.168.10.11 | Backup |
详细配置介绍如下:
1 | [root@lb03 ~]#yum -y install keepalived |
实例测试:(抢占式)
实例测试:(非抢占式)
三、高可用keepalived故障脑裂
当两台高可用服务器在指定的时间内,无法互相检测到对方心跳而各自启动故障转移功能,取得了资源以及服务的所有权,而此时的两台高可用服务器对都还活着并作正常运行,这样就会导致同一个服务在两端同时启动而发生冲突的严重问题,最严重的就是两台主机同时占用一个VIP的地址(类似双端导入概念),当用户写入数据的时候可能会分别写入到两端,这样可能会导致服务器两端的数据不一致或造成数据的丢失,这种情况就称为脑裂。(脑裂的可能原因:①高可用服务器对之间心跳线路故障,导致无法正常的通信、②服务器网线松动等网络故障、③服务器硬件故障发生损坏现象而崩溃、④主备都开启firewalld防火墙…) 脑裂的解决方案如下:
1 | #如果发生闹裂,则随机kill掉一台即可 |
四、高可用keepalived与nginx结合
为什么域名解析到VIP就可以访问nginx?Nginx默认监听在所有的IP地址上,VIP会飘到一台节点上,相当于那台nginx多了VIP这么一个网卡,所以可以访问到nginx所在机器,但是……如果nginx宕机,会导致用户请求失败,但是keepalived没有挂掉就不会进行切换,此时用户访问就会出问题,所以需要编写一个脚本检测Nginx的存活状态,如果nginx不存活则主动kill掉keepalived,让虚拟IP漂移到下一台nginx代理。
1 |
|
1 | 在lb02主机的keepalived配置文件中调用此脚 |