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/sh
findproc() { # 查询进程ID pid=`/usr/bin/ps -e | /usr/bin/grep \ /usr/bin/grep -v \
/usr/bin/grep -v grep | /usr/bin/awk '{ print $1 }'` } case $1 in
start) /usr/Tprocess& #启动三通进程 ;;
stop) #关闭三通进程 findproc Tprocess; if [ \ /bin/kill -15 $pid Fi ;; *) esac
三通进程的实现步骤为: 首先是要脱离开原有进程组,单独建立进程组并成为进程组的首进程,建立守护进程; 其次是接收到报文后增加报文头格式,后续紧跟网络发送方IP地址,然后紧跟为原始数据。其数据格式如表所示: 最后是将组合后的数据报文在局域网内发送给双服务器的接收进程。下面介绍三个步骤的实现方法。
步骤1: 脱离开原有进程并建立守护进程。程序如下: pid = fork(); //建立进程 if ( pid< 0 ) return ;
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高中教育IP地址漂移的实现与原理 全文阅读和word下载服务。
相关推荐: