VRRP虚IP漂移

VRRP虚IP漂移

简介

VRRP 是 Virtual Router Redundancy Protocol 的简称,即 虚拟路由冗余协议 。

原文地址:https://linux-network-programming.readthedocs.io
QQ交流群:Linux网络编程,群号:183196643
欢迎关注我们的公众号:小菜学编程 (coding-fan)

VRRP 最早被设计来解决网关的高可用问题:

我们知道,计算机进行网络通讯时,需要网关来传输网络报文。 每台机器只能配置一个网关地址,这时网关的可靠性就非常重要了。 如果网关不幸故障了,那么使用该网关的所有机器都将受影响——断网了!

解决网关单点问题的思路非常直观——部署一个备用网关,在主网关故障时切换过去。

然而,由于机器只能配置一个网关地址,因此每次切换网关都需要修改该配置。 这个解决方案没能做到自动化,并不优雅。

这时, VRRP 应运而生!接下来,以一个简单的例子介绍 VRRP 是如何工作的:

VRRP最早用于网关高可用

事情是这样的。

这个网络部署了两台 路由 进行互备,本网络内其他机器以这两台路由为网关进行网络通讯。 两台路由的 IP 地址分别是: 192.168.1.1 以及 192.168.1.2 。 但路由并不直接通过这些地址提供转发服务,而是使用一个 虚拟地址 192.168.1.253 。 其他计算机,如 192.168.1.3 将网关地址配置为 192.168.1.253 。

通过 VRRP ,两台路由互相进行 健康检查 。 当两台路由都是健康的情况下,只有主路由对外提供虚拟地址的 ARP 响应。 这时,发往虚拟地址 192.168.1.253 的流量都由主路由处理。

当主路由故障时,备用路由将检测到。 这时,备用路由开始通过 ARP 协议对外通告:虚拟地址 192.168.1.253 对应的 MAC 地址是我, 被我接管了!

接下来,发往虚拟地址 192.168.1.253 的流量就开始由备用路由处理了。 这时,虚拟地址 192.168.1.253 看上去就像是 漂移 到备用路由上一样。 换句话讲,网关成功进行切换,而且无需修改其他机器的网关配置!

主路由恢复后,将通过类似的手段,重新拿回流量的处理权。 这部分将不再赘述。

完整流程如下:

  1. 两台路由互相进行健康检查;
  2. 主路由对外响应虚拟地址的 ARP 请求,通告其 MAC 地址;
  3. 虚拟地址网络流量被主路由处理;
  4. 备用路由发现主路由故障,开始响应虚拟地址的 ARP 请求,通告其 MAC 地址;
  5. 虚拟地址网络流量被备用路由处理;
  6. 主路由恢复,重新响应 ARP 请求,夺回流量;
  7. 备用路由发现主路由恢复,停止响应 ARP 请求,释放流量处理权;

总结起来, VRRP 主要做两件事情:

  1. 通过 ARP 响应 MAC 地址实现虚 IP 漂移;
  2. 通过健康检查决定什么时候进行虚 IP 漂移;

应用场景

本质上, VRRP 是用来实现高可用的,与网关无关。

我们可以将其应用于一些网络服务的高可用,如 Web 服务:

Web服务高可用

服务高可用方案有很多, VRRP 特别适用于以下场景:

  1. 服务对外只能呈现为单个 IP ;
  2. 同一时刻只允许一个实例对外服务;

此外, VRRP 也可用于实现负载均衡设施的高可用。 应用的高可用通过负载均衡设施解决,那么负载均衡设施如何实现高可用呢? 答案是—— VRRP !

下面是一个非常典型的例子:

负载均衡设施高可用

局限性

由于 VRRP 依赖 ARP 实现 IP 漂移,因此相关机器必须在同个网络内, 不能跨网段 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2655.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++中this指针的理解和用法

    C++中this指针的理解和用法关于this指针的一个精典回答:当你进入一个房子后,你可以看见桌子、椅子、地板等,但是房子你是看不到全貌了。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向你这个实例本身。 个人理解:(ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子的门,那么里面的东西就随意你取用了)

    2022年5月16日
    33
  • webpack(2)webpack核心概念「建议收藏」

    webpack(2)webpack核心概念「建议收藏」前言本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图(dependencygraph),此

    2022年8月7日
    7
  • 深度学习 | Word2vec原理及应用

    深度学习 | Word2vec原理及应用聊聊Word2vec1前言2什么是Word2vec?2.1定义2.1.1分词的原理介绍2.1.2文本向量化的方式2.2数学原理2.2.1CBOW(ContinuousBag-of-Words)原理2.2.2Skip-Gram原理2.2.3为什么要有Word2vec而不是用原来的?2.2.4Word2vec基础:霍夫曼树2.2.5HierarchicalSoftmax2….

    2022年5月17日
    35
  • CLion 2021.10.1激活码-激活码分享

    (CLion 2021.10.1激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    47
  • git修改gitignore不生效_github ignore

    git修改gitignore不生效_github ignore前言我在项目中采用Github代码托管仓库,由于部分项目文件,比如数据库文件不需要上传到网上,需要配置.gitignore文件,也就可以忽略版本控制,意思就是不上传它们。但是有一些文件一开始是期望忽略的,后来还是希望加入版本控制,上传到网上。不过直接从.gitignore文件中把它们移出来并不能解决问题,这些文件还是无法上传。百度的解决方式都大同小异,但是都有一个…

    2022年8月30日
    3
  • 数据结构:八大数据结构分类

    数据结构分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。1、数组数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始…

    2022年4月6日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号