`
m635674608
  • 浏览: 4939886 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

IP地址漂移技术

 
阅读更多

IP地址漂移技术 
  关于IP地址漂移,我所找到的关于其描述如下: 
  由于通常情况下,两台服务器都具有一块以上的网卡,每块网卡都应该有一个IP地址,同时,还应该有一个漂移IP地址,该地址为工作IP地址。因此,最简单的主从方式下,双机系统要占用3个网络地址。 
    在分配IP地址时,要分清工作IP地址和主机自有地址。如在主从方式、单网卡的情况下,主机一地址为200.10.10.1,主机二的地址为200.10.10.2,工作地址为200.10.10.3,正常情况下,工作主机的自有地址是被工作地址取代的(若主机一在工作,主机一的地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是我们所说的地址漂移 
 
漂移一词有很多的应用,我在看录像中看到了汽车狂奔中的漂移技术,看到周杰伦表演的漂移过弯的精彩表演,不知是特技还是他已经真的练就了这个本事,一般的漂移是指物体悬浮于水面整体运动而相互的关系不变,现在又有了新的用处,IP地址漂移。  
采用地址漂移技术,利用虚拟IP地址来绑定主服务器,可有效解决不能利用组播的情况下,多台服务器集群之间的信息交互问题。此方法具有一定的代表性,在很多行业可以采用。  双机集群方式广泛应用于各级航空飞行管制中心,两台中心服务器通过网络构成一套高可靠性双机热备份系统,同步工作、互为备份,当主机发生故障时,自动切换到备机工作,系统不间断运行。而地址漂移技术是当其中一台主机有故障时,另一主机接管故障主机的网络IP地址,使网络仍能正常运行。  系统背景  
系 统采用双机热备软件,具有负载均衡功能,将信息处理、数据库记录、进程监控等各项功能在两台服务器间进行动态分配,主服务器主要负责完成信息处理、进程监 控等,备用服务器完成数据库的记录工作。当主服务器发生故障后,能够进行检测并告警,自动将主服务器上的信息处理和进程监控等应用转移到备用服务器上继续 处理,备用服务器切换为主服务器,先前的数据库记录应用仍然保留。采用CS结构(Client Server)。双服务器主要用来对航管雷达情报进行融合处理,并对飞行管制情报、异类传感器情报进行多元数据融合,响应并显示控制台的人工干预命令。  存在问题  
在 集群的双服务器内,当收到航管雷达或其他管制中心通过网络或串口送过来的信息后,会转入信息处理进程,并将情报送往显示控制台进行显示,工作人员通过显示 控制台来观察监视空中目标,并对目标进行人工干预。在航空管制中心之间需要相互交换情报,便于情报共享。在管制中心内有两台服务器,每个服务器具有一个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.建立三通进程,负责接收情报,并将接收的情报分发给两台计算机。需要将三通进程作为系统守侯进程,这样它随着操作系统的启动而自动执行,增强其可靠性。下面对三通进程的实现进行简单介绍。 
在Unix操作系统下,首先需要随着操作系统的启动而自动启用三通进程,在/etc/rc2.d目录下建立脚本文件,如下:  #!/bin/sh  
findproc() { # 查询进程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 < 0) {  
perror(" n IN distribute.c create socket41432:");  exit(1);  }  
//从/etc/services文件中获得服务名称,得到服务端口号。  sp = getservbyname ("head", "udp");  if (sp == NULL) {  
printf(": head not found in /etc/servicesn");  exit(1);  }  
addr.sin_port = sp->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) )< 0 ) {  perror ( " n bind addr");  exit(0);  

 

 

 

 

}  
addrLen=sizeof(struct sockaddr_in);  //设定目的地址为组播地址 local_net.sin_family = AF_INET;  
local_net.sin_addr.s_addr = inet_addr(multicast_ip);  sp = getservbyname ("mult_portt", "udp");  if (sp == NULL) {  
printf(": hjff_port not found in /etc/servicesn");  exit(1);  }  
local_net.sin_port = sp->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目的地址转换成以太网目的地址。在以太网中,一个主机要和另一个主机进行直接通 信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。ARP协议用于将网络中的IP地址解析为硬件 地址(MAC地址),以保证通信的顺利进行。

 

分享到:
评论
1 楼 lord_is_layuping 2017-01-11  
在分配IP地址时,要分清工作IP地址和主机自有地址。如在主从方式、单网卡的情况下,主机一地址为200.10.10.1,主机二的地址为200.10.10.2,工作地址为200.10.10.3,正常情况下,工作主机的自有地址是被工作地址取代的(若主机一在工作,主机一的地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是我们所说的地址漂移

相关推荐

    IP地址漂移技术详解

    采用地址漂移技术,利用虚拟IP地址来绑定主服务器,可有效解决不能利用组播的情况下,多台服务器集群之间的信息交互问题。此方法具有一定的代表性,在很多行业可以采用

    IP地址IP地址IP地址IP地址

    IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址IP地址

    ip地址规划 ip地址规划

    ip地址规划 ip地址规划 ip地址规划ip地址规划 ip地址规划ip地址规划ip地址规划ip地址规划

    IP地址输入框IP地址输入框

    IP地址输入框IP地址输入框IP地址输入框

    IP地址拆分小工具v1.1-用于批量计算、拆分IP地址、地址段,支持批量excel拆分转换

    可以实现: ...3、可以根据excel文件进行拆分,excel文件中IP地址,支持上述两种方式,Excel中只要包含起始IP列、终止IP列,或者包含IP地址段,就可以自动批量生成单个IP,并且还可以保留原来excel的字段;

    中学信息技术- IP地址初识课件

    ppt制作的中学信息技术- IP地址初识课件IP地址简介

    ip地址ip地址ip地址ip地址ip地址

    ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址ip地址

    IP地址合法性判断

    输入一个ip地址串,判断是否合法。 输入: 输入的第一行包括一个整数n(1),代表下面会出现的IP地址的个数。 接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。 输出: 可能有多...

    综合技巧-规划子网和配置IP地址

    综合技巧-规划子网和配置IP地址的实验报告 很具体哦,我觉得不错

    IP地址原理,IP地址原理,IP地址原理

    IP地址原理,很好! IP地址原理,很好 IP地址原理,很好 IP地址原理,很好 IP地址原理,很好 IP地址原理,很好

    PTAIP地址转换(C语言版)

    7-2 IP地址转换 (20分) 一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。 输入格式: 输入在一行中给出32位二进制字符串。 输出格式: ...

    C# WinForm自定义的IP地址输入框控件(.Net Framework 4.5.2)

    可以设置和读取IP地址,具有跟Window的IP地址输入框一样的功能,箭头方向键、空格、句点、删除键可以在四个IP地址段内连续移动,可拉伸控件,改变字体颜色及大小,改变背景颜色及IP地址框的背景颜色。对输入的IP地址...

    Windows 使用QT读取IP地址并修改IP地址

    读取Windows的IP地址有三种方法: QT的QNetworkInterface IPHlpApi QT的QSettings读注册表 修改windows的IP地址使用 netsh

    IP地址精准定位系统源码 ip地址精确定位软件

    IP地址精准定位系统源码是一套简单的IP地址查询加地图定位的系统,比以往的IP地址查询更加精准和方便。 我们知道以往的IP地址查询程序都是只能查询到该IP地址所属的市级单位,但是这套源码查询的IP地址能够精确到...

    IP地址精准定位系统PHP源码

    P地址精准定位PHP系统源码分享 一套IP地址查询功能以及地图定位的系统源码,比以往的IP地址查询更加精准和方便,我们知道以往的IP地址查询程序都是/只能查询到该IP地址所属的市级单位,但是/这套源码查询的IP地址...

    IP地址数据库(QQIP地址) 纯真IP地址数据库

    IP地址数据库(QQIP地址) 纯真IP地址数据库.rar,全国IP地址数据库文件,比较详细的。

    VBS显示IP地址

    VBS显示IP地址,VBS显示IP地址代码

    IP地址计算专项练习

    IP地址计算专项练习,适合初学者针对IP地址的专项练习

    IP地址管理 V2.0

    IP地址管理软件介绍 【IP地址管理概括介绍】 方便快捷的IP地址切换工具。 【IP地址管理基本介绍】 由于自己经常需要在家里、单位、工作地点之间切换IP地址,每次更改来更改去,非常麻烦,所以自己做了这样一个工具...

Global site tag (gtag.js) - Google Analytics