IP地址漂移的实现与原理.doc_第1页
IP地址漂移的实现与原理.doc_第2页
IP地址漂移的实现与原理.doc_第3页
IP地址漂移的实现与原理.doc_第4页
IP地址漂移的实现与原理.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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地址,使网络仍能正常运行。通常系统采用双机热备软件或双活技术,具有负载均衡功能,将信息处理、数据库记录、进程监控等各项功能在两台服务器间进行动态分配,主服务器主要负责完成信息处理、进程监控等,备用服务器完成数据库的记录工作。当主服务器发生故障后,能够进行检测并告警,自动将主服务器上的信息处理和进程监控等应用转移到备用服务器上继续 处理,备用服务器切换为主服务器,先前的数据库记录应用仍然保留。采用CS结构(Client Server)。双服务器主要用来工业控制数据采集或SCADA系统的数据通信与处理。 在集群的双服务器内,当收到航管雷达或其他管制中心通过网络或串口送过来的信息后,会转入信息处理进程,并将情报送往显示控制台进行显示,工作人员通过显示 控制台来观察监视空中目标,并对目标进行人工干预。在航空管制中心之间需要相互交换情报,便于情报共享。在管制中心内有两台服务器,每个服务器具有一个IP地址,采用其中一台服务器IP地址进行通信,如果此服务器出故障将无法接收信息,这就为中心之间采用哪一个IP地址来交换信息造成选择困难。 虚拟IP地址 解决多台服务器集群间信息交互的办法有三个: 一是采用组播,该方法最简单。只要将两台计算机加入一个组播地址,则发送方将目的地址设置为此组播的IP地址即可,航空管制中心的两台计算机均能够收到,但在航空管制中心间网络拓扑关系复杂,很多区域网络内禁止采用组播的方式,所以此方法不可行。 二是采用一份情报分别传递两次给两台双机服务器的方式,能够保证两台服务器均能够收到信息,但是造成带宽浪费,并加大双服务器接收情报时间不一致的可能性,使双服务器的信息处理不能同步,如果在情报量大时,信道可能无法承受,此方法不可取。 三是采用地址漂移技术,给管制中心分配一个航空管制中心虚拟IP 地址,航空管制中心之间传递情报采用此IP地址,然后由各航空管制中心的主服务器与此IP地址绑定,负责接收和发送情报。同时在主服务器启动一个三通进 程,所谓三通进程是指此进程负责接收信息,然后将收到的信息分别转发到集群内两台服务器,类似于水龙头的三通,因此称之为三通进程。主服务器收到一份情报 后,送往局域网内主服务器和备服务器的接收进程。当主机切换为备机时,此服务器卸载此虚拟IP地址,切换为主机的服务器加载虚拟IP地址,并启用三通进程 负责接收和分发情报。虚拟IP地址在主备服务器之间漂移,也称之为地址漂移技术,目前很多集群软件也采用此技术来解决集群内多台计算机只有惟一IP地址的 问题。 技术实现 上述的第三种方法的实现需要以下几个关键技术: 1当主机加载虚拟IP地址后,必须利用ARP协议包通知路由器,告诉路由器虚拟IP地址在哪台主机上,这样当路由器收到目的地址为虚拟IP时,会自动将数据包传递给主用计算机。 有两种方式可产生ARP 数据包: 一是通过程序生成ARP数据包,并由链路层接口发送给路由器,这需要对网络编程、特别是链路层编程有一定经验的技术人员才可以实现。二是利用ARP命令, 在程序中执行system(“arp”)即可,将本计算机的ARP表发送给局域网内的路由器。值得注意的是: 航空管制中心的IP地址必须一直与主机绑定,需要IP地址的加载与双机程序相关联。所以在双机切换或者主机故障、退出时要在即将成为主机的服务器上加载虚 拟IP地址。加载IP地址的命令为: ifconfig eth0 alias 192.168.1.1 netmask 255.255.255.0,卸载IP地址的命令为: ifconfig eth0 alias 192.168.1.1。 2 经过实验表明,主机切换为备机后,曾经加载的虚拟IP 地址不卸载,不会造成网络冲突。经分析,其原因为: 当路由器收到ARP数据包后,将MAC地址和IP地址的配对更新,当路由器接收到情报数据后,会根据ARP表来寻找虚拟IP地址所在计算机的MAC地址, 因此路由器接收到航管情报后自动将报文发送给主计算机,然后由主机的三通进程将情报通过局域网内的组播方式发送给主备计算机的信息接收进程。 3建立三通进程,负责接收情报,并将接收的情报分发给两台计算机。需要将三通进程作为系统守侯进程,这样它随着操作系统的启动而自动执行,增强其可靠性。下面对三通进程的实现进行简单介绍。如何实现IP地址漂移,假设在Unix操作系统下,首先需要随着操作系统的启动而自动启用三通进程,在/etc/rc2.d目录下建立脚本文件,如下: #!/bin/shfindproc() # 查询进程ID pid=/usr/bin/ps -e | /usr/bin/grep $1 | /usr/bin/grep -v $ | /usr/bin/grep -v grep | /usr/bin/awk print $1 case $1 in start) /usr/Tprocess& #启动三通进程;stop) #关闭三通进程 findproc Tprocess; if $pid ; then /bin/kill -15 $pid Fi ;*) esac 三通进程的实现步骤为: 首先是要脱离开原有进程组,单独建立进程组并成为进程组的首进程,建立守护进程; 其次是接收到报文后增加报文头格式,后续紧跟网络发送方IP地址,然后紧跟为原始数据。其数据格式如表所示: 最后是将组合后的数据报文在局域网内发送给双服务器的接收进程。下面介绍三个步骤的实现方法。 步骤1: 脱离开原有进程并建立守护进程。程序如下: pid = fork(); /建立进程 if ( pid 0 ) return ; if ( pid!=0 ) exit(0); /父进程退出 setsid (); /建立对话期 setpgrp(); /建立进程组,并成为进程组的首进程 chdir(/); /更换工作目录为根目录 umask(0); 步骤2: 三通进程负责接收远程航空管制中心的数据。 /建立socket Sid = socket (AF_INET, SOCK_DGRAM, 0);if (sid s_port; addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; /打开地址重用机制 on = 1; setsockopt(sid, SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on) ); /绑定此服务名 if ( bind ( sid, (struct sockaddr *)&addr, sizeof(struct sockaddr_in) )s_port; /循环等待接收和处理数据 for(;) memset ( buff,0,2048 ); num = recvfrom ( sid, buff,2048,0, (struct sockaddr *)&srcAddr, &addrLen); if ( num 0 ) perror ( n recvfrom ); continue; 步骤3: 收到报文后,组织和封装数据并在局域网内利用组播来将数据转发给双服务器。 链接:ARP协议 ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。 IP数据包常通过以太网发送,以太网设备并不识别32 位IP地址,它们是以48位以太网地址传输以太网数据包。因此,必须把IP目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通 信,必须要知道目标主机的M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论