Keepalive 基础概要及简单示例

本文深入介绍了Linux系统的Keepalive工具,它基于VRRP协议提供负载平衡和高可用性保障。Keepalive与IPVS紧密配合,通过健康检查动态管理服务器群。文章详细阐述了VRRP协议的概念、工作原理、状态机和负载分担,展示了Keepalive的体系结构、核心组件及配置示例,旨在帮助读者理解Keepalive如何确保服务的稳定性和故障切换。
摘要由CSDN通过智能技术生成

##keepalive简介
keepalive的目标是为Linux系统和基于Linux的基础设施提供简单而强大的负载平衡和高可用性保障。负载平衡框架依赖于众所周知的广泛使用的Linux虚拟服务器(IPVS) 内核模块,提供Layer4负载平衡。Keealived动态的管理负债均衡的服务器群,实现服务器的健康检测。而了解keepalive,就不得不了解VRRP协议,keepalived正是以vrrp的工作逻辑来工作的,那么我们就先了解VRRP协议是什么样的协议,再了解keepalived。

keepalived是lvs的扩展项目,因此它们之间具备良好的兼容性。通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离。负载均衡器之间的失败切换failover,是通过VRRPv2(Virtual Router Redundancy Protocol)stack实现的 。


##VRRP 协议
####VRRP协议概述
随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的。

通常情况下,内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关(即图1中的路由器RouterA),实现主机与外部网络的通信。当出口网关发生故障时,主机与外部网络的通信就会中断。
这里写图片描述
配置多个出口网关是提高系统可靠性的常见方法,但局域网内的主机设备通常不支持动态路由协议,如何在多个出口网关之间进行选路是个问题。

IETF(Internet Engineering Task Force,因特网工程任务组)推出了VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,来解决局域网主机访问外部网络的可靠性问题。

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。

使用VRRP的优势在于:既不需要改变组网情况,也不需要在主机上配置任何动态路由或者路由发现协议,就可以获得更高可靠性的缺省路由。


####VRRP的基本概念

关键词 解释
VRRP路由器(VRRP Router) 运行VRRP的设备,它可能属于一个或多个虚拟路由器。(实体路由器)
虚拟路由器(Virtual Router) 由VRRP管理的抽象设备,又称为VRRP备份组,被当作一个共享局域网内主机的缺省网关。 它包括了一个虚拟路由器标识符和一组虚拟IP地址。(实体路由器组)
虚拟IP地址(Virtual IP Address)s 虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置
IP地址拥有者(IP Address Owner) 如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者。 当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等
虚拟MAC地址 是虚拟路由器根据虚拟路由器ID生成的MAC地址。 一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。 当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
主IP地址(Primary IP Address) 从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。 VRRP广播报文使用主IP地址作为IP报文的源地址。
Master路由器(Virtual Router Master) 是承担转发报文或者应答ARP请求的VRRP路由器,转发报文都是发送到虚拟IP地址的。 如果IP地址拥有者是可用的,通常它将成为Master。
Backup路由器(Virtual Router Backup) 一组没有承担转发任务的VRRP路由器,当Master设备出现故障时,它们将通过竞选成为新的Master
抢占模式 在抢占模式下,如果Backup的优先级比当前Master的优先级高,将主动将自己升级成Master
非抢占模式 只要master路由器没有出现故障,即使backup路由器的优先路由器高于master路由器,也不会成为master路由器

####VRRP的工作原理
VRRP将局域网的一组路由器构成一个备份组,相当于一台虚拟路由器。局域网内的主机只需要知道这个虚拟路由器的IP地址,并不需知道具体某台设备的IP地址,将网络内主机的缺省网关设置为该虚拟路由器的IP地址,主机就可以利用该虚拟网关与外部网络进行通信。

VRRP将该虚拟路由器动态关联到承担传输业务的物理路由器上,当该物理路由器出现故障时,再次选择新路由器来接替业务传输工作,整个过程对用户完全透明,实现了内部网络和外部网络不间断通信。

虚拟路由器示意图

如上图所示,虚拟路由器的组网环境如下:

RouterA、RouterB和RouterC属于同一个VRRP组,组成一个虚拟路由器,这个虚拟路由器有自己的IP地址172.18.14.1。虚拟IP地址可以直接指定,也可以借用该VRRP组所包含的路由器上某接口地址。

物理路由器RouterA、RouterB和RouterC的实际IP地址分别是172.18.14.10、172.18.14.11、172.18.14.12

局域网内的主机只需要将缺省路由设为172.18.14.1即可,无需知道具体路由器上的接口地址。

主机利用该虚拟网关与外部网络通信。路由器工作机制如下:

  • 根据优先级的大小挑选Master设备。Master的选举有两种方法:
    • 比较优先级的大小,优先级高者当选为Master。
    • 当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。
  • 其它路由器作为备份路由器,随时监听Master的状态。
    • 当主路由器正常工作时,它会每隔一段时间(Advertisement_Interval)发送一个VRRP组播报文,以通知组内的备份路由器,主路由器处于正常工作状态。
    • 当组内的备份路由器一段时间(Master_Down_Interval)内没有接收到来自主路由器的报文,则将自己转为主路由器。一个VRRP组里有多台备份路由器时,短时间内可能产生多个Master,此时,路由器将会将收到的VRRP报文中的优先级与本地优先级做比较。从而选取优先级高的设备做Master。

####VRRP的状态机
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于活动状态的设备才可以转发那些发送到虚拟IP地址的报文。

Initialize

  • 设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。在此状态时,不会对VRRP报文做任何处理。

Master 当路由器处于Master状态时,它将会做下列工作:

  • 定期发送VRRP报文。
  • 以虚拟MAC地址响应对虚拟IP地址的ARP请求。
  • 转发目的MAC地址为虚拟MAC地址的IP报文。
  • 如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。
  • 如果收到比自己优先级大的报文则转为Backup状态。
  • 如果收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP地址大,则转为Backup状态。
  • 当接收到接口的Shutdown事件时,转为Initialize。

Backup 当路由器处于Backup状态时,它将会做下列工作:

  • 接收Master发送的VRRP报文,判断Master的状态是否正常。
  • 对虚拟IP地址的ARP请求,不做响应。
  • 丢弃目的MAC地址为虚拟MAC地址的IP报文。
  • 丢弃目的IP地址为虚拟IP地址的IP报文。
  • Backup状态下如果收到比自己优先级小的报文时,丢弃报文,不重置定时器;如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。
  • 当Backup接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master。
  • 当接收到接口的Shutdown事件时,转为Initialize。

####负载分担
现在允许一台路由器为多个作备份。通过多虚拟路由器设置可以实现负载分担。

负载分担方式是指多台路由器同时承担业务,因此需要建立两个或更多的备份组。

负载分担方式具有以下特点:

  • 每个备份组都包括一个Master设备和若干Backup设备。

  • 各备份组的Master可以不同。

  • 同一台路由器可以加入多个备份组,在不同备份组中有不同的优先级。
    !这里写图片描述如图所示:

    • 配置两个备份组:组1和组2;

    • RouterB在备份组1中作为Master,在备份组2中作为Backup;

    • RouterC在备份组1和2中都作为Backup;

    • RouterA在备份组2中作为Master,在备份组1中作为Backup。

    • 一部分主机使用备份组1作网关,另一部分主机使用备份组2作为网关。

    这样,以达到分担数据流,而又相互备份的目的。


##Kepalive基础

Keepalive体系结构
这里写图片描述

  • Keepalived 大致分两层结构:用户空间 user space和内核空间 kernel space

  • 在这个结构图里,处于下端的是内核空间,它包括IPVS和NETLINK两个部分。netlink提供高级路由及其他相关的网络功能,如果在负载均衡器上启用netfilter/iptable,将会直接影响它的性能。处于图形上方的组件为用户空间,由它来实现具体的功能,下面选取几个重要的来做说明:

    • WatchDog 负责监控checkers和VRRP进程的状况;
    • Checkers 负责真实服务器的健康检查healthchecking,是keepalived最主要的功能;
    • VRRP Stack负责负载均衡器之间的失败切换FailOver;
    • IPVS wrapper 用来发送设定的规则到内核ipvs代码;Netlink Reflector 用来设定 vrrp 的vip地址等。
    • 在Linux主机上,以daemon(守护进程)方式实现了vrrp协议,并提供了完成配置ipvs规则及实现相应real server状态检测能力。
    • 能调用外部脚本
    • 轻量灵活,不能解决脑裂问题(需要依靠其他措施来解决)

Keepalived正常运行时,会启动3个进程,分别是core、check和vrrp:

  • vrrp模块是来实现VRRP协议的;</
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值