xuyangus 发表于 2019-1-2 13:54:45

LVS总结

  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
  

  LVS为了在不同场景中使用而提供了4种实现模型: 分别为
    NAT         -m
    DR          -g
    Tunnel      -i
    FULLNAT   -b
LVS的用到几个IP缩写
    CIP: 用户的IP
    VIP: LVS虚拟的IP,用于用户访问
    DIP: LVS Director调度器自已的IP
    RID: Real server 的IP
    LIP: LVS Director调度器指定的local address,FULLNAT模式下专用的
  

  NAT模型工作流程
    1、客户端请求VIP(Virtual IP Address)
    2、Director接受到请求, 根据连接调度算法从一组真实服务器中选出一台服务器, 将报文的目标地址VIP(Virtual IP Address)改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。
    3、调度器在连接Hash 表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得 到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务 器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户
  不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。在TCP 连接中,根据标准的TCP有限状态机进行状态迁移;在UDP中,只设置一个UDP状态。
不同状态的超时值是可以设置的,在缺省情况下:
    SYN状态的超 时为1分钟
    ESTABLISHED状态的超时为15分钟
    FIN状态的超时为1分钟
    UDP状态的超时为5分钟
    当连接终止或超时,调度器将这个连接从 连接Hash表中删除。
  实现NAT模型有几点需要注意的:
    1、RS和Director可以不在同一IP网段中
    2、可以实现端口映射
    3、请求报文和响应报文都必须经过Director
    在一些网络服务中,它们将IP地址或者端口号在报文的数据中传送,若只对报文头的IP地址和端口号作转换,这样就会出现不一致性,服务会中断。 所以,针对这些服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。现已经知道有这个问题的网络服务有FTP、IRC、H.323、 CUSeeMe、Real Audio、Real Video、Vxtreme/Vosiac、VDOLive、VIVOActive、True Speech、RSTP、PPTP、StreamWorks、NTT AudioLink、NTT SoftwareVision、Yamaha MIDPlug、iChat Pager、Quake和Diablo。
  

  DR模型工作流程
    1、客户端请求VIP
    2、Director接收到请求报文,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的 MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以交换机会将数据帧发送给选出的服务器,服务器从中可以获得该IP报文。
    3、RIP接收到DIP发过来的报文后,发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。
  因为VIP分别存在于Director和RS,造成IP冲突,解决方法:
    1、网络设备中设置VIP地址和DIrector的MAC地址进行绑定
    2、Linux系统中有一个软件可以实现对ARP广播进行过滤, arptables
    3、可以修改内核参数来实现, arp_ignore, arp_announce
  实现DR模型需要注意的:
    1、RS和Director必须要在同一个二层网段中,中间没有隔有路由器(MAC地址无法穿越三层设备)
    2、请求报文必须经过Director, 但是响应报文一定不能通过Director
    3、不能实现端口映射
  
三种IP负载均衡技术的优缺点归纳在下表中:
                  VS/NAT          VS/TUN          VS/DR
Server            any             Tunneling       Non-arp device
server network      private         LAN/WAN         LAN
server number       low (10~20)   High (100)      High (100)
server gateway      load balancer   own router      Own router
  以上三种方法所能支持最大服务器数目的估计是假设调度器使用100M网卡,调度器的硬件配置与后端服务器的硬件配置相同,而且是对一般Web服 务。使用更高的硬件配置(如千兆网卡和更快的处理器)作为调度器,调度器所能调度的服务器数量会相应增加。当应用不同时,服务器的数目也会相应地改变。所 以,以上数据估计主要是为三种方法的伸缩性进行量化比较。

  FULLNAT工作流程
    1、引入LIP(local address),可以配置多个,也可以使用DIP
    2、客户端请求VIP
    3、Director接受到请求,根据调度算法得出转发的RS, 将CIP修改为LIP, VIP修改为对应RIP, 转发给RS
    4、RS接受到请求后, 响应请求给LIP, Director将响应报文RIP改为VIP, LIP改为CIP, 响应给用户
实现FULLNAT模型需要注意的:
    1、请求报文和响应报都要通过Director
    2、RIP接收到的请求报文的源地址为LIP,目标地址为RIP
    3、支持端口映射
    4、为了保证应用透明性,通过tcp option传递client ip给RealServer(TOA).要RS读取数据包中的tcp option来记录client ip
    5、和NAT比,正常转发性能下降
页: [1]
查看完整版本: LVS总结