VRRP可以让多个网关能够协同工作但又不会互相冲突,解决了网关单点故障的问题,并且可以实现网关的备份。
VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的备份。
协议版本:VRRPv2(常用)和VRRPv3:
VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
VRRP协议报文:
只有一种报文:Advertisement报文;其目的IP地址是224.0.0.18,目的MAC地址是01-00-5e-00-00-12,协议号是112。
基本结构
VRRP路由器(VRRP Router):运行VRRP协议的设备。
虚拟路由器(Virtual Router):又称VRRP备份组,由一个Master设备和多个Backup设备组成,被当作一个共享局域网内主机的缺省网关。
Master路由器(Virtual Router Master):承担转发报文任务的VRRP设备。
Backup路由器(Virtual Router Backup):一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备。
Priority:设备在备份组中的优先级,取值范围是0~255。0表示设备停止参与VRRP备份组,用来使备份设备尽快成为Master设备,而不必等到计时器超时;255则保留给IP地址拥有者,无法手工配置;设备缺省优先级值是100。
vrid:创建虚拟路由器的标识,需手工指定,范围1-255。
虚拟IP地址(Virtual IP Address):虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner):如果一个VRRP设备将真实的接口IP地址配置为虚拟路由器IP地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,则它将一直成为Master。
虚拟MAC地址(Virtual MAC Address):虚拟路由器根据vrid生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{vrid} 。当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
VRRP协议状态:Initialize(初始状态)、Master(活动状态)、Backup(备状态)。
工作原理
Master选举:发送免费ARP,比较优先级的大小。当两台设备优先级相同时,已存在的Master无需继续选举;如果不存在Master,则继续比较接口IP地址大小,接口IP地址较大的设备当选为Master设备。
Master设备状态的通告:Master设备周期性地发送VRRP通告报文,在VRRP备份组中公布其配置信息(优先级等)和工作状况。Backup设备通过接收到的VRRP报文来判断Master设备是否工作正常。
抢占模式:
自然抢占:规定时间内没有收到主的报文,默认则进行抢占。
非自然抢占:收到了主设备的通告报文,但是发现对方的优先级低于本地的优先级于是会默认瞬间抢占。
抢占延迟:主设备故障恢复之后,收到优先级不如自己的报文,此时本地会等待一个抢占延迟,在延迟时间内,不会实现抢占的行为,当延时归0后,此时开始抢占;一旦设备再次故障,计时器重新开始计算。
VRRP联动:VRRP的联动功能可以监视上行接口,若出现链路故障,主动进行主备切换。
#主在接口下的配置 [网关设备A]interface GigabitEthernet0/0/1 [网关设备A-GigabitEthernet0/0/1]ip address 10.0.0.1 255.255.255.0 #设置vrrp1虚拟ip [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 10.0.0.10 #设置虚拟IP的优先级,默认为100 [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 priority 120 #设置抢占延迟为20s [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 preempt-mode timer delay 20 #跟踪上行接口,出现故障降低30的优先级 [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 track interface GigabitEthernet0/0/0 reduce 30 #配置备的地址以及vrrp虚拟ip [网关设备B]interface GigabitEthernet0/0/1 [网关设备B-GigabitEthernet0/0/1]ip address 10.0.0.2 255.255.255.0 [网关设备B-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 10.0.0.10 #查看vrrp状态 [网关设备]display vrrp brief
#配置双方网关设备互为主备 [网关设备A]interface GigabitEthernet0/0/1 [网关设备A-GigabitEthernet0/0/1]ip address 10.0.0.1 255.255.255.0 #设置vrrp1虚拟ip [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 10.0.0.10 #设置vrrp1虚拟IP的优先级,默认为100 [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 priority 120 #设置vrrp1抢占延迟为20s [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 preempt-mode timer delay 20 #跟踪上行接口,出现故障降低30的优先级 [网关设备A-GigabitEthernet0/0/1]vrrp vrid 1 track interface GigabitEthernet0/0/0 reduce 30 #设置vrrp2虚拟ip [网关设备A-GigabitEthernet0/0/1]vrrp vrid 2 virtual-ip 10.0.0.11 [网关设备B]interface GigabitEthernet0/0/1 [网关设备B-GigabitEthernet0/0/1]ip address 10.0.0.2 255.255.255.0 #设置vrrp1虚拟ip [网关设备B-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 10.0.0.10 #设置vrrp2虚拟ip [网关设备B-GigabitEthernet0/0/1]vrrp vrid 2 virtual-ip 10.0.0.11 #设置vrrp2虚拟IP的优先级,默认为100 [网关设备B-GigabitEthernet0/0/1]vrrp vrid 2 priority 120 #设置vrrp2抢占延迟为20s [网关设备B-GigabitEthernet0/0/1]vrrp vrid 2 preempt-mode timer delay 20 #跟踪上行接口,出现故障降低30的优先级 [网关设备B-GigabitEthernet0/0/1]vrrp vrid 2 track interface GigabitEthernet0/0/0 reduce 30 #查看vrrp状态 [网关设备]display vrrp brief
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽
我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO