LVS KeepAlived高可用方案
KeepAlived介绍
Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管,它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。
KeepAlived起初是为了LVS而设计,提供配置文件,后期通过vrrp
协议(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)允许与nginx,HaProxy等配合使用。KeepAlived有2种配置模式,抢占式和非抢占式。
LVS主备模式(抢占式)
抢占式就是主机一旦挂掉,备机立刻会抢主机的位置,自身成为新主机。
主备模式演示:
主机备机配置文件:
1 | vrrp_instance VI_1 { |
存在不可靠的问题:
如果KeepAlived应用异常退出,导致主机的VIP可能没有被收回,LVS映射MAC地址也没有收回。然后备机发现无法联通主机,备机自动抢占为主机,但是这时局域网内就存在了2个相同的暴露出去的VIP。数据包发送就不确定了,不可靠。
LVS集群模式(非抢占式)
配置文件上区别不大,多了一个属性:
nopreempt
:标识为非抢占式,也就是投票选择主机,公平模式。
引入zookeeper来保证KeepAlived高可用应用集群的可靠性。
KeepAlived脑裂现象
脑裂现象一般发生在抢占式中。由于某些原因,导致两台KeepAlived高可用服务器在指定时间内,无法检测到对方的存货心跳信息,从而导致互相抢占对方的资源和服务所有权,然后两台却还都存活中。
脑裂示意图:
脑裂发生的原因:
- 开启了防火墙,限制了对方的访问
- 网线故障,局域网不连通
- 心跳时间极短,这个应该不会
- 本文链接:https://github.com/moexiong/moexiong.github.io/tree/master/2021/05/17/LVS%20KeepAlived%E9%AB%98%E5%8F%AF%E7%94%A8%E6%96%B9%E6%A1%88/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。