IP地址漂移的实现与原理
当前备份软件比较流行,其中用到的关键技术是IP 地址漂移, 实际上IP地址漂移技术是利用共享的“虚拟”IP地址,当本地进行节点切换与路由切换,使另一端的发送和收方端没有感觉到本地节点地址有变化,保证了通信的连续性,起到断点保护的功效。
举例说明:假设最简单的主从方式、单网卡的情况下,双机系统要占用3个网络地址。主机一地址为200.10.20.1,主机二的地址为200.10.20.2, 同时,还应该有一个“虚拟”IP地址,该地址为工作IP地址,用来做“漂移”,即工作地址为200.10.20.3。 在分配IP地址时,要分清工作IP地址和主机自有地址。正常情况下,工作主机的自有地址是被工作地址取代的(若主机一在工作,主机一的地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是我们所说的地址漂移。
采用地址漂移技术, 利用虚拟IP地址来绑定主服务器,可有效解决不能利用组播的情况下多台服务器集群之间的信息交互问题。此方法具有一定的代表性,在很多行业可以采用双机集群方式广泛应用于工业控制、重要事件的备份。两台中心服务器通过网络构成一套高可靠性双机热备份系统,同步工作、互为备份,当主机发生故障时,自动切换到备机工作,系统不间断运行。而地址漂移技术是当其中一台主机有故障时,另一主机接管故障主机的网络IP地址,使网络仍能正常运行。
通常系统采用双机热备软件或双活技术,具有负载均衡功能,将信息处理、数据库记录、进程监控等各项功能在两台服务器间进行动态分配,主服务器主要负责完成信息处理、进程监控等,备用服务器完成数据库的记录工作。当主服务器发生故障后,能够进行检测并告警,自动将主服务器上的信息处理和进程监控等应用转移到备用服务器上继续处理,备用服务器切换为主服务器,先前的数据库记录应用仍然保留。双服务器主要用来工业控制数据采集或SCADA系统的数据通信与处理。
一般情形下,双服务器都有各自的IP地址,如果选择其中一台服务器IP地址进行通信,当此服务器出故障将无法接收信息时,这就为通信之间采用哪一个IP地址来交换信息造成选择困难。解决多台服务器集群间信息交互的办法有三个: 一是采用组播,该方法最简单。只要将两台计算机加入一个组播地址,则发送方将目的地址设置为此组播的IP地址即可,双服务器都能够收到包文,但对于双向系统而言,在应用层要解决的问题比较多,人为地将系统复杂化,简单的应用可以采用,但复杂的情形下此方法不可行。二是采用一份数据分别多次传递相应的多台服务器,虽然这样能够保证多台服务器均能够收到数据,但是对网络的占用时间、数据的同步性和实时性带来了新的问题,如果在传输数据量大时,造成带宽浪费,信道无法承受。 三是采用地址漂移技术,假设两地A节点与B节点要进行通信业务,每个节点有三台服务器做集群,先给A节点与B节点分配相应的虚拟IP 地址a和b,两地A、B之间传递数据采用a和b地址,A节点的
主服务器与a地址绑定,B节点的主服务器与b地址绑定。同时在主服务器启动一个三通进程,所谓三通进程是指此进程负责接收信息,然后将收到的信息分别转发到集群内两台服务器。主服务器收到数据后,送往局域网内主服务器和备服务器的接收进程。当主机切换为备机时,此服务器卸载此虚拟IP地址,切换为主机的服务器加载虚拟IP地址,并启用三通进程 负责接收和分发数据。虚拟IP地址在主备服务器之间漂移,也称之为地址漂移技术,目前很多集群软件也采用此技术来解决集群内多台计算机只有惟一IP地址的问题。
技术实现地址漂移需要涉及一些关键技术。
当主机加载虚拟IP地址后,必须利用ARP协议包通知路由器,告诉路由器虚拟IP地址在哪台主机上,这样当路由器收到目的地址为虚拟IP时,会自动将数据包传递给主用计算机。 有两种方式可产生ARP 数据包: 一是通过程序生成ARP数据包,并由链路层接口发送给路由器,这需要对网络编程、特别是链路层编程有一定经验的技术人员才可以实现。二是利用ARP命令,在程序中执行system(“arp”)即可,将本计算机的ARP表发送给局域网内的路由器。
路由器收到ARP数据包后,将MAC地址和IP地址的配对更新,当路由器接收到数据后,根据ARP表来寻找虚拟IP地址所在计算机的MAC地址,重新指定路由。
建立三通进程,负责接收数据,并将接收的数据分发给备份服务器。通常将三通进程作为系统守侯进程,这样它随着操作系统的启动而自动执行,增强其可靠性。
IP地址漂移的实现与原理的更多相关文章
- IP 地址漂移
1.概念 应用访问虚拟ip,当主服务器正常工作时,虚拟ip指向主服务器,当主服务器宕掉后,虚拟ip自动指向从服务器,当主服务器被人修好后,再自动指向主服务器, 这种虚拟ip的指向方式称为ip地址漂移. ...
- 虚拟IP技术 ip地址漂移技术
虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址.数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口.VIPs大部分用于连接冗余:一个VI ...
- 解析私有IP地址和公网IP地址
局域网私有IP地址上外网的原理 IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上.一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行 ...
- 100.64.0.0/10运营商级(Carrier-grade)NAT保留IP地址
在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的IP地址比较奇怪,是100.64.0.1.好奇促使我查询了这个IP地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以IPv4为例保留的 ...
- IP地址与子网的划分
一.IP地址 1.IP地址的定义 (1).IP地址有32位二进制数组成,一般用点分十进制来表示 (2).IP地址由两部分组成 网络部分(NETWORK) 主机部分(HOST) 2.IP地址的分类 IP ...
- mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少
MDNS协议介绍 mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251.在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口.包格 ...
- TCP/IP协议原理与应用笔记03:IP地址分类
1. 事实上,每个IP地址都包含两部分,即网络号和主机号. 例如:202.112.81.34指的 就是202.112.81这个网络的第34号机. 网络号:用于识别主机所在的网络: 主机号:用于识别该网 ...
- DHCP服务自动分配IP地址原理
转载自:http://blog.csdn.net/lycb_gz/article/details/8499559 DHCP在提供服务时,DHCP客户端是以UDP 68号端口进行数据传输的,而DHCP服 ...
- IP地址个数的计算原理
IP注释: IP地址(Internet Protocol Address),缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址. 它为互联网 ...
随机推荐
- FreeSWITCH在呼叫失败的情况下播放语音提示
看到好多网友问到这个问题.一般我们在打电话时会听到“您拨的电话正在通话中,请稍后再拨....”,或“电话无应答...”之类的提示,我们在 freeswitch 里也可以这样做. 其实很简单,默认的配置 ...
- #你好Unity3D#Project脚本执行双击资源操作
Unity的Project里面放了很多游戏资源,比如脚本或者图片.正常情况下我们可以通过鼠标双击来进行打开.假如我现在不想主动双击打开,我想自动打开某个脚本或者图片再或者别的资源怎么办? 如下代码所示 ...
- SVG添加链接(转载)
转载地址:http://tech.techweb.com.cn/thread-258715-1-1.html 最基本的交互形式是链接.在 SVG 中,通过一个 <a> 标签提供链接,这与 ...
- webStorm 注册码 (备用)
webStorm : UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA ...
- [Android设计模式]Android退出应用程序终极方法
如何干净彻底地退出Android应用程序,是很多开发者的心头痒.如何干净地关闭所有已打开的Activity? 如何关闭指定的Activity? 如何关闭一类Activity? 这里,我们提出一种通过实 ...
- Spring MVC与Struts2的区别
1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同. 2. 性能:spring会稍微比struts快.spring mvc是基于方法的设 ...
- jQuery Mobile_事件
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- ubuntu 创建快捷方式
sudo ln -s /opt/eclipse/eclipse /usr/bin/eclipse 这样就可以在命令行中敲:eclipse,来打开eclipse了. 应该还有一种方式,就像快捷方式一样. ...
- Hibernate 抓取策略fetch-2 (批量抓取batch-size以及hibernate.jdbc.fetch_size、hibernate.jdbc.batch_size)
类关系: User N~1 Group 测试代码: System.out.println("1"); List stuList = session.createQuery(&quo ...
- UI设计的重要性--避免二义性的输入提示
昨天晚上发现了西安公路客运网上售票系统网站的密码找回系统存在安全漏洞,得出的结论是:密码找回页的漏洞: 1.用户名栏支持用户名.身份证.电话三种任意一种匹配.2.这一步是关键,密码找回问题提示栏居 ...