您现在的位置是:首页 > 正文

虚拟服务器 双机,HA双机软件如何使用虚拟(VIP:Virtual IP)

2024-02-01 00:03:50阅读 2

HA高可用,一般是对外提供一个固定IP地址或者固定域名供用户访问。固定域名方式需要域名解析为对应的ip地址,是一种分布式系统,这个和虚拟ip没关系。固定ip地址访问的方式,这个访问的ip又怎么知道服务运行在主备哪个物理机或虚拟机上呢?这就是虚拟ip的妙处,当某个物理机或虚拟机对外提供服务时虚拟ip就启动这个节点上,当HA高可用倒换时,虚拟ip从原节点上删除,在新的节点上启动。今天只讲能通过虚拟ip访问服务以及虚拟ip其他的使用场景。后面介绍虚拟ip的增加删除和查看,以及arp缓存失效和更新可能面临的问题。为何能通过虚拟ip访问服务

之所以能通过虚拟ip访问服务,实现原理主要是靠TCP/IP的ARP协议。因为ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现的关键。----摘自网络文章1

如果上边看不懂,再看看这个更详细的介绍:通常一个主机A给另一个主机B通过网络发送一个IP数据报的时候,首先会发送到主机A所在的路由器上面,然后路由器会判断目的地址是否在本网络内,是则直接转发到本网络内的目的主机,否则会继续传递到下一个路由,直到到达指定的网络的路由器。指定网络的路由器会将此数据报发送到目的主机。整个过程最后都会涉及到由某一个网络中的路由器发送到网内某一主机的过程。这个过程通常是由路由器发送一个arp广播请求,请求IP地址为数据包目的地址的主机将它自己的MAC地址发送过来,因为数据链路层的数据传输是通过物理地址传输的。arp请求会广播到所有网内的主机,网内其他主机收到这个arp请求后,首先会检查发送arp请求的主机的IP地址,然后将该IP地址和其对应的MAC地址存放在缓存中,然后会检查这个arp请求中请求的IP地址是否为自己的IP地址,是则发送一个arp应答,应答包含自己的IP地址和对应的MAC地址。当得到了MAC地址后,便可以将数据包正确传输到目的主机上了。ARP协议属于TCP/IP协议族里面一种用户将IP地址解析为MAC地址的协议。该协议是用户局域网内解析IP地址对应的物理地址。--摘自网络文章2

在某台机器上能ping通虚拟ip和虚拟ip所在主机的实际ip地址,arp -n执行后可以看到二者对应的的mac是一样的。

主机会向同一网络内发送一个ARP数据包,告诉同一网络内的其它所有机器该虚拟IP对应的MAC地址是00:21:5A:DB:7F:C2,这样所有发送到该虚拟ip的数据包都会发送到mac地址为00:21:5A:DB:7F:C2的机器。arp缓存要面临的问题

arp协议中比较重要的内容之一就是arp缓存,主机操作系统会将IP地址与MAC地址的映射关系存放在主机的一片高速缓存中。

缓存失效:该缓存会在一定时间内失效,失效后,请求该IP地址时需要广播arp请求重新获取IP地址对应的MAC地址

缓存更新:当收到ARP请求时,会将发送ARP请求的主机IP地址与MAC地址记录下来,然后去更新本机arp缓存中对应的记录。--摘自网络文章2

缓存在一定时间内会失效,失效后缓存重新更新。多长时间会失效比较合理?如何设置失效时长?默认时长是多少?缓存更新失败怎么办?重启虚机或物理机后会立即更新缓存嘛?这都有待后面了解。虚拟IP的其他使用场景

A virtual IP address (VIP or VIPA) is an IP  address that doesn't correspond to an  actual physical network interface (port).  Uses for VIPs include network address  translation (especially, one-to-many NAT), fault-tolerance, and mobility.虚拟IP主要是用来网络地址转换,网络容错和可移动性。

网站文章

  • visual studio客户端windows模式下调出cmd命令行

    visual studio客户端windows模式下调出cmd命令行

    visual studio 设置技巧

    2024-02-01 00:03:12
  • 关于rpm 命令的--changelog参数

    关于rpm 命令的--changelog参数

    2024-02-01 00:03:06
  • java面试题 --- 异常类型及处理

    java面试题 --- 异常类型及处理

    1.Java异常类型 2.异常的处理 异常处理指的是对可提前检查的异常的处理。 1>使用try...catch语句块来处理 2>使用throws/throw抛出到上层 3.finally关键字 finally 关键字用来创建在 try 代码块后面执行的代码块。无论是否发生异常,finally 代码块中的代码总会被执行。 在 finally 代码块中,可以运行清理类型...

    2024-02-01 00:02:48
  • 第六讲 单片机的指令系统及汇编语言程序设计基础

    第六讲 单片机的指令系统及汇编语言程序设计基础 §3-1 MCS-51单片机的指令格式与寻址方式一、汇编语言程序设计的意义什么是程序?完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。程序设计语言:机器语言、汇编语言、高

    2024-02-01 00:02:20
  • Android使用Opengl录像时添加(动态)水印

    Android使用Opengl录像时添加(动态)水印

    最近需要开发一个类似行车记录仪的app,其中需要给录制的视频添加动态水印。我使用的是OpenGL开发的,刚开始实现的是静态水印,后面才实现的动态水印。1、静态水印实现原理:录像时是通过OpenGL把图像渲染到GLSurfaceView上的,通俗的讲,就是把图片画到一块画布,然后展示出来。添加图片水印,就是把水印图片跟录制的图像一起画到画布上。这是加载纹理跟阴影的Java类package c...

    2024-02-01 00:02:13
  • css处理回车\n符号,自动换行

    css处理回车\n符号,自动换行

    使用的是vuehtml<div class="tttt">{{ text }}</div>jsexport default { data() { return { text: '45...

    2024-02-01 00:02:08
  • brpc组件bvar源码解析(四)Sampler、SamplerCollector和Window类簇

    brpc组件bvar源码解析(四)Sampler、SamplerCollector和Window类簇

    1.Sampler类

    2024-02-01 00:02:02
  • 练习-C语言恶搞程序

    在网上看了C语言也能干大事的视频,觉得不错,便把最后留下的作业,练习写一下。作为自己的提高。练习题如下:    自己动手写恶搞程序。运行以后弹出询问对话框(有【是】、【否】两个按钮以及问号图标)“你是好人吗?”,如果点击【是】,则弹出对话框(只有一个【确定】按钮以及一个警告图标)“你看你就不像好人,点击【确定】开始格式化C盘!”;如果点击【否】,则弹出对话框(有【重试】、【取消

    2024-02-01 00:01:34
  • vs2017 正则表达式删除C#中以///开头的summary注释

    使用替换方式,将以下正则表达式替换为空: [\t]*///[^\n]*\n 即可将全部以///开头的summary注释删除

    2024-02-01 00:01:27
  • 71 Simplify Path

    Given an absolute path for a file (Unix-style), simplify it.For example,path = &quot;/home/&quot;, =...

    2024-02-01 00:01:21