深入浅出keepalived+nginx实现网关主备高可用

深入浅出keepalived+nginx实现网关主备高可用

目录

image

背景

当用Nginx作网关的时候,如果网关宕机了,整个服务将会变得不可用,那么如何保证网关的高可用呢?我们可以用Keepalived来做主备,实现网关的高可用,主机宕机了,备机选举出一个来IP自动漂移顶上去,主机恢复了,IP再飘回主机,备机自动下线!

思考一下,代理可以实现高可用不呢?在两台网关前面加一台代理,轮询将请求分别打给两台网关,当一台网关宕机了,代理就不会往这台网关上分发流量,这样也能实现高可用,但是代理自身也只有一个,自己宕机了那么整个服务就不可用,也就是代理自己存在单点故障,那么在代理前面在加一层代理?会发现无论前置多少层代理,无论怎么无限套娃总会存在代理自身单点故障,所以代理是不能实现自身的高可用的,它只能实现自己后层的服务的高可用。

keepalived原理

研究东西首先研究官网,官网说:keepalive是一个用c语言编写的路由软件。这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单、健壮的负载平衡和高可用性工具,通过VRRP协议实现高可用性。VRRP是路由器故障切换的基础…

  • https://www.keepalived.org/

那么我们可以提炼出关键词:VRRP协议,那么这个协议是个啥?

我们首先思考一下:网关要实现主备,那么IP地址怎么设?不能主备都设置同一个IP吧,这样就冲突了,所以一定得有一个虚拟的IP用于接入网络,主备各自得有一个自己的IP用于主备自己的通信吧,不然备机怎么知道主宕机了,要么是备机不断的去请求主机看主机有没有返回数据包,一定时间没有返回就说明主机宕机了,要么是主机主动给备机发数据包,备机检测到一定时间内没有返回数据包则说明主宕机了,那么这个通知的过程得有一个通信协议吧,所谓协议,就是主备之间通信的方式,它定义了通信的内容,所以整个过程我们可以提炼出下面的概念

  • VIP:虚拟IP(Virtual IP),即接入网络用于客户端访问的那个IP
  • MASTER:主机,任何时候主机只有一台
  • BACKUP:备机/备机组,备机可能不止一台
  • VRRP:这就是我们所说的协议,VRRP全称为Virtual Router Redundancy Protocol,即虚拟路由器冗余协议

所以直接过过一遍VRRP协议内容

VRRP协议

VRRP协议有两个版本

  • VRRPv2报文结构

image

  • VRRPv3报文结构

[图片上传失败…(image-138c38-1616158179603)]

|

报文字段

|

含义

| |
| |

VRRPv2

|

VRRPv3

|
|

Version

|

VRRP协议版本号,取值为2。

|

VRRP协议版本号,取值为3。

|
|

Type

|

VRRP通告报文的类型,取值为1,表示Advertisement。

|

VRRP通告报文的类型,取值为1,表示Advertisement。

|
|

Virtual Rtr ID(VRID)

|

虚拟路由器ID,取值范围是1~255。

|

虚拟路由器ID,取值范围是1~255。

|
|

Priority

|

Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。

|

Master设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。

|
|

Count IP Addrs/Count IPvX Addr

|

备份组中虚拟IPv4地址的个数。

|

备份组中虚拟IPv4或虚拟IPv6地址的个数。

|
|

Auth Type

|

VRRP报文的认证类型。协议中指定了3种类型:0:Non Authentication,表示无认证。1:Simple Text Password,表示明文认证方式。2:IP Authentication Header,表示MD5认证方式。

|

|
|

Adver Int/Max Adver Int

|

VRRP通告报文的发送时间间隔,单位是秒,缺省值为1秒。

|

VRRP通告报文的发送时间间隔,单位是厘秒,缺省值为100厘秒(1秒)。

|
|

Checksum

|

16位校验和,用于检测VRRP报文中的数据破坏情况。

|

16位校验和,用于检测VRRP报文中的数据破坏情况。

|
|

IP Address/IPvX Address(es)

|

VRRP备份组的虚拟IPv4地址,所包含的地址数定义在Count IP Addrs字段。

|

VRRP备份组的虚拟IPv4地址或者虚拟IPv6地址,所包含的地址数定义在Count IPvX Addrs字段。

|
|

Authentication Data

|

VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。

|

|
|

rsvd

|

|

VRRP报文的保留字段,必须设置为0。

|

状态机

VRRP用状态机来完成了主备之间的切换,所谓状态机,一言以蔽之

状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型

注意两个特征:有限和自动,有限即状态是有限的,每个状态带有一系列的动作,当处于某状态下,这些动作会自动执行,在某个事件下,会触发一个状态到另外一个状态的切换,比如自动售卖机可能有三个状态

  • 未付款状态:什么也不做
  • 付款中状态:检查是否足额付款
  • 已足额付款状态:弹出汽水;余额清零;销售额累加等等

那么此例中状态是有限的,跟随状态的动作会在该状态下自动执行,投币的动作会触发状态的切换,因此引出状态机的四个概念

  • State:状态,一个状态机至少要包含两个状态
  • Action:动作,事件发生以后要执行动作
  • Event:事件,变换到某个状态的触发条件
  • Transition:变换,也就是从一个状态变化为另一个状态

VRRP协议定义了一台机器的三种状态:

  • 初始状态ÿ
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码狂魔v

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值