keepalive 高可用技术

注意:不要忘记我们前面规划的集群架构的环境信息。本节会继续使用之前规划的环境。

Keepalived是一款由C编写的软件,一般解决负载均衡器的高可用性问题,提供了负载均衡、健康检查和高可用的功能,高可用功能是由VRRP协议来实现的。

注意:

我们前面讲nginx的时候有keepalive_time等选项,那里的Keep-Alive意图在于短时间内连接复用,希望可以短时间内在同一个连接上进行多次请求/响应。即keep-alive说的是如何避免进行重复的TCP三次握手和四次挥手的环节。这个我们称为http协议的keepalive。

本节要讲解的keepalived机制意图在于保活、心跳,检测连接错误。当一个TCP连接两端长时间没有数据传输时(通常默认配置是2小时),发送keepalived探针,探测链接是否存活。即本节讲解的keepalived是在ESTABLISH状态的时候,双方如何检测连接的可用性。这个我们称为TCP的keepalive。

官方文档:https://keepalived-doc.readthedocs.io/zh_CN/latest/index.html

架构设计

Keepalived启动后由3个进程组成,这三个进程的作用:

  • 主进程 - 负责监视和创建子进程

  • 子进程1 - 负责VRRP功能

  • 子进程2 - 负责健康检查功能

keepalived使用了4个Linux内核组件:

  1. LVS框架:使用getsockopt和setsockopt调用来获取和设置套接字上的选项

  2. Netfilter框架:支持NAT和Masquerading的IPVS代码

  3. Netlink接口:在网络接口上设置和删除VRRP虚拟IP

  4. 组播:VRRP通告发送到保留的VRRP组播组(224.0.0.18)

vrrp协议keepalived实现的基础,我们先看看vrrp协议。

VRRP

VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。它是一种用于提高网络可靠性的容错协议。通过VRRP,可以在主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保障网络通信的连续性和可靠性。

vrrp把几台路由器联合组成一台虚拟的路由设备,通过一定的机制保证当主机的下一跳路由器出现故障时,及时把业务切换到备份路由器,保障业务的连续性。

先了解几个概念:

VRID:虚拟路由器ID。
Virtual IP addr: 虚拟路由器IP地址
Virtual Mac addr: 虚拟路由器Mac地址,根据VRID生成的
Master、Backup: 主、备虚拟路由器。所有的Master和Backup组成一个组,这个组就是虚拟路由器。
抢占、非抢占: 在抢占模式下,如果Backup优先级高于master,则主动将自己切换成master;而非抢占模式下则相反,就算Backup优先级高于master,也不会成为master

vrrp报文是非常重要的,主要有两个作用:

  1. Master通过这个报文来通告其他Backup的机器"自己还存活"。

  2. 通过vrrp报文的交互,实现Master的选举

master向224.0.0.18的组播地址发送vrrp报文,报文源地址是接口的主IP地址,目的地址是224.0.0.18。

vrrp报文是封装在IP报文中的,所以支持所有的上层协议。

 

你可能感兴趣的:(网络)