1、虚拟ip概念:

分析虚拟IP前,先说一下:
动态 IP 、固定 IP 、实体 IP

实体 IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义。一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP 位置!这些可以直接在网际网络上沟通的 IP 就被称为『实体 IP 』了。

固定 IP 与 动态 IP:基本上,这两个东西是由于近来网络公司大量的成长下的产物,例如,你如果向中华电信申请一个商业型态的 ADSL 专线,那他会给你一个固定的实体 IP ,这个实体 IP 就被称为『固定 IP 』了。而若你是申请计时制的 ADSL ,那由于你的 IP 可能是由数十人共同使用,因此你每次重新开机上网时,你这部计算机的 IP 都不会是固定的!于是就被称为『动态 IP』或者是『浮动式IP』。基本上,这两个都是『实体IP』,只是网络公司用来分配给用户的方法不同而产生不同的名称而已。

虚拟 IP:不过,众所皆知的,IP 位址仅为 xxx.xxx.xxx.xxx 的资料型态,其中, xxx 为 1-255 间的整数,由于近来计算机的成长速度太快,实体的 IP 已经有点不足了,好在早在规划 IP 时就已经预留了三个网段的 IP 做为内部网域的虚拟 IP 之用。这三个预留的 IP 分别为:

A级:10.0.0.0 - 10.255.255.255
B级:172.16.0.0 - 172.31.255.255
C级:192.168.0.0 - 192.168.255.255

上述中最常用的是192.168.0.0这一组。不过,由于是虚拟 IP ,所以当您使用这些地址的时候﹐当然是有所限制的,限制如下:

私有位址的路由信息不能对外散播
使用私有位址作为来源或目的地址的封包﹐不能透过Internet来转送
关于私有位址的参考纪录(如DNS)﹐只能限于内部网络使用

由于虚拟 IP 的计算机并不能直接连上 Internet ,因此需要特别的功能才能上网。不过,这给我们架设IP网络做成很大的方便﹐比如﹕即使您目前的公司还没有连上Internet﹐但不保证将来不会啊。如果使用公共IP的话﹐如果没经过注册﹐等到以后真正要连上网络的时候﹐就很可能和别人冲突了。也正如前面所分析的﹐到时候再重新规划IP的话﹐将是件非常头痛的问题。这时候﹐我们可以先利用私有位址来架设网络﹐等到真要连上intetnet的时候﹐我们可以使用IP转换协定﹐如 NAT (Network Addresss Translation)等技术﹐配合新注册的IP就可以了。

2、虚拟IP原理

我们知道一般的IP地址是和物理网卡绑定的,而VIP相反,是不与实际网卡绑定的的IP地址。当外网的上的一个机器,通过域名访问某公司内网资源时,内网的DNS服务器会把域名解析到一个VIP上。当外网主机经过域名解析得到这个VIP后,就将数据包发往这个VIP。但是在内网中,这个VIP是不与具体的设备相连接的,所以外网发过来的目的地址是VIP的IP数据包,究竟会到哪台机器呢?

其实,这个在内网的过程是,通过ARP协议来完成的。也就是说这个VIP可以映射到的MAC地址是可以控制的。VIP在内网中被动态的映射到不同的MAC地址上,也就是映射到不同的机器设备上,那么就可以起到负载均衡的效果啦。

PS:VIP的概念的是LVS中一个概念,具体学习《Linux负载均衡软件LVS之概念篇》

3、为什么需要虚拟ip(HA的重要性)

HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。常见的实现高可用的开源软件有 heartbeat 和 keepalived。

这样,一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望的。如果这样,有2台服务器,A对外提供 web 服务,B作为备用,如果A挂掉,那么B立刻替代A的位置去提供 web 服务,这样对用户来说是透明的。但是有个问题,服务器A的 ip 是 10.0.0.100,服务器B的 ip 是 10.0.0.101,显然向用户提供A或B的ip地址是不可行的,因为用户总不能去切换ip来访问的吧。这时heartbeat或keepalived可以提供一个虚拟IP:10.0.0.102,用户只需要访问 10.0.0.102,当A提供服务时,VIP 会设置在A服务器上,当B提供服务时,VIP会设置在B服务器上,这样就可以让用户通过访问 10.0.0.102 来获取web服务,即使A或B服务器切换也不影响用户的正常访问。

下面我们使用 heartbeat 来做 HA 集群,并且把 nginx 服务作为 HA 对应的服务。

4、具体的实现(方案的细节)

高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。HA系统是目前企业防止核心计算机系统因故障停机的最有效手段。

实现HA的方式,一般采用两台机器同时完成一项功能,比如数据库服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。

怎么实现故障检测的那?

心跳,采用定时发送一个数据包,如果机器多长时间没响应,就认为是发生故障,自动切换到热备的机器上去。

怎么实现自动切换那?

虚IP。何为虚IP那,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。

开始我也不明白这是怎么实现的,以为是软件动态改IP地址,其实不是这样,其实现原理主要是靠TCP/IP的ARP协议。因为ip地址只是一个逻辑 地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关 系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现 的关键。

下边就是我电脑上的arp缓存的内容。

(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond

192.168.1.217、192.168.1.218是两台真实的电脑,

192.168.1.217为对外提供数据库服务的主机。

192.168.1.218为热备的机器。

192.168.1.219为虚IP。

大家注意红字部分,219、217的MAC地址是相同的。

再看看那217宕机后的arp缓存

(192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

这就是奥妙所在。当218 发现217宕机后会向网络发送一个ARP数据包,告诉所有主机192.168.1.219这个IP对应的MAC地址是00:21:5A:DB:7F:C2,这样所有发送到219的数据包都会发送到mac地址为00:21:5A:DB:7F:C2的机器,也就是218的机器。

虚拟 IP原理(动态 IP 、固定 IP 、实体 IP)相关推荐

  1. 物理 IP、虚拟 IP、固定 IP、动态 IP ?

    讲了ADSL计时制与固定制不就是 IP 取得的方式不同吗?那 IP 是啥?有啥 IP 需要注意的呢?以下简单的说明一下. 物理  IP:在网络的世界里,为了要识别每一部计算机的位置,因此有了计算机 I ...

  2. wr885n虚拟服务器设置,动态IP设置:选择动态IP(以太网宽带

    tplink885n设置操作步骤如下 一台新购买(恢复出厂设置)的TL-WR885N路由器,要实现上网功能,需要进行下面3个步骤 :1.TL-WR885N路由器安装;2.设置电脑IP地址;3.TL-W ...

  3. 动态DNS——本质上是IP变化,将任意变换的IP地址绑定给一个固定的二级域名。不管这个线路的IP地址怎样变化,因特网用户还是可以使用这个固定的域名 这样看的话,p2p可以用哇...

    动态域名是因应网络远程访问的需要而产生的一项应用技术.因为没有固定IP,只能运用二级域名来应对经常变化的IP,动态域名的由来因此而产生. 它当前主要应用在:路由器.网络摄像机.带网络监控的硬盘录像机. ...

  4. 何为固定IP和动态IP?快解析搞定固定IP端口映射!

    目前,我们上网所使用的有动态IP和静态IP两种,IP地址就是我们上网时所使用的"门牌号".全国目前共有3亿左右的IP地址,我们平时上网拨号,网上冲浪大多数使用的是动态IP.那么,当 ...

  5. 固定ip和动态ip的区别?固定ip怎么做端口映射?

    相信很多人分不清什么是固定ip,什么是动态ip,两者比较容易混淆.其实固定ip和动态ip还是有很大区别的!今天小编跟大家说说两者的区别,只有固定ip时选择什么样的端口映射方案. 固定ip和动态ip有什 ...

  6. 获取当前ip_教程丨WIN10系统下设置固定IP或动态IP

    无论是电脑.手机或其他一切电子设备,如果需要上网,它就必须有一个IP地址,然后IP地址的获取通常又分为 动态IP(自动获取)或 静态IP(手动设置)两种模式(您所在的网络具体适用哪种模式,请咨询您的网 ...

  7. TCP/IP原理、基础以及在Linux上的实现

    [转载]TCP/IP原理.基础以及在Linux上的实现 导言:本篇作为理论基础,将向我们讲述TCP/IP的基本原理以及重要的协议细节,并在此基础上介绍了TCP/IP在LINUX上的实现. OSI参考模 ...

  8. 2022-09-01 网工进阶(二十九) DHCP-概述、工作原理、报文格式、分配IP地址顺序、地址租期与续租、中继(relay)、Snooping

    概述 IETF于1993年发布了DHCP(Dynamic Host Configuration Protocol,动态主机配置协议).DHCP实现了网络参数配置的自动化,降低客户端的配置和维护成本. ...

  9. 动态IP是否比静态IP更安全?千万别误会静态IP和动态IP的使用场景区别

    目录 前言 动态IP和静态IP 内网IP和外网IP 总结 前言 网际协议地址即IP地址,是人们在日常生活中需要经常接触到的名词,相信许多人都不陌生,因为现在非常多大数码产品.智能家居产品等都具备了连接 ...

  10. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

最新文章

  1. HikariCP 高性能的 JDBC 连接池
  2. 【大话Hibernate】hibernate缓存详解
  3. Android官方导航栏ActionBar(二)—— Action View、Action Provider、Navigation Tabs的详细用法...
  4. java 正序排序_java排序之冒泡排序
  5. UI设计师必备|Map name切图命名规范
  6. @Inject.@Resource.@Autowired 的区别
  7. paip.若只如初见——WEB或BS开发必备基础知识
  8. java二级大纲_计算机二级Java语言程序设计考试大纲
  9. 自然语言处理——第一章 绪论
  10. 微软补丁导致填制凭证右侧滚动条消失
  11. python 压力测试
  12. 淘宝订单API接口参数详解
  13. 计算机主机的税收,税控电脑
  14. 论文查重软件哪个好用?
  15. 冥王星P的编曲日志《时光的眼泪》
  16. 原创2D/3D游戏引擎源代码开源
  17. java注解约束参数为固定值_java自定义注解的实现及属性设置
  18. 撰写SCI论文好用的免费工具(下) - 易智编译EaseEditing
  19. STM32F4的中断
  20. PowerDesigner Excel导入信息

热门文章

  1. php 右键下拉菜单,iview通过Dropdown(下拉菜单)实现的右键菜单
  2. ubuntu 安装docker_Docker学习笔记1 虚拟化历史及 Ubuntu环境下体验安装
  3. android intent 视频,Android通过发送Intent播放本地视频和网络视频
  4. privoxy基本配置-简洁版
  5. 编译静态expect现undefined reference to `openpty' 错误解决方法
  6. 无线接入控制服务器(ac),网络ac和ap是什么意思(图文)
  7. win32汇编 实现UNIX文件格式转换WINDOWS文件格式 的功能
  8. 学生学籍管理系统源码
  9. 最bt的搜索引擎插件!
  10. iso硬盘安装 凤凰os_X86平台国产OS 对比评测 | 凤凰os安装教程_什么值得买