Linux ipvs — Jevic

Linux ipvs

2017/10/08 Linux

ipvs称之为IP虚拟服务器(IP Virtual Server,简写为IPVS)。是运行在LVS下的提供负载平衡功能的一种技术

含义

IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能。当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

工作原理

LVS

提到IPVS就不得不提LVS(Linux Virtual Server),虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。 真正的服务器和负载平衡器之间通过高速局域网或地理上分散的广域网可以相互连接。负载平衡器可以将请求调度到不同的服务器并将并行的集群服务显示的像在一个单一的IP地址上的一个虚拟的服务,请求调度可以使用IP负载平衡技术或应用级负载平衡技术。系统的可扩展性是通过透明地添加或删除集群中的节点来实现的。通过检测节点或守护进程的失败和适当地重新配置系统提供高可用性。

IPVS

当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端>的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

  • 上面已经说了IPVS是LVS的关键,因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:
    • 安装在Director Server上,同时>在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然>后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

工作模式

1.NAT模式

采用双臂模式,数据的进出都经过director;real server只需要内部IP、不需要在real server绑定外部IP;director需要处理返回数据包,容易成为瓶颈;需要后端分布在同一个局域网或者最低限度director需要设定为所有real server的网关;进出director的数据包需要进行请求数据包目的IP的替换和响应数据包的源IP的替换、请求的源IP可以被real server获取;可以进行端口转换;ReqPS和ResPS需要进行平衡。

2.TUN模式

采用三角模式,数据从director进入,响应从real server直接回到client;real server和director都要配置IP tunnel,real server需要配置外部IP并且绑定VIP;real server可以分布在互联网络的任何位置;请求的源IP可以被real server获取;不可以进行端口转换;director只需要处理请求数据包、ReqPS是最重要的指标。

3.DR模式

采用三角模式,数据从director进入,响应从real server直接回到client;real server需要配置外部IP并绑定VIP,并且real server需要分布在同一个局域网内;进出director的数据包需要进行请求数据包目的MAC地址的替换、请求的源IP可以被real server获取;不可以进行端口转换;director只需要处理请求数据包、ReqPS是最重要的指标。

4.FULLNAT模式

采用双臂模式,数据的进出都经过director;real server可以使用任何类型IP,只要和director可达即可;director需要处理返回数据包,容易成为瓶颈;real server可以分布在互联网络的任何位置;进出director的数据包需要进行请求数据源IP和包目的IP的替换和响应数据包的源IP和目的IP的替换、请求的源IP丢失(但是可以通过director修改数据包将源IP放在指定区域以被real server获取,但是需要修改director和real server的协议栈);可以进行端口转换;ReqPS和ResPS需要进行平衡。

IPVS 应用场景

互联网数据传输的一大特点是请求的数据传输量跟返回的数据传输量相比小到可以忽略,尤其是在现在多媒体和高清晰视图片和频的使用率越来越高的情况下,如何在director提高接入能力(处理请求包)的同时能完全发挥后端应用服务器集群的处理能力是一个亟待解决的问题。

  • 在传统的服务器在内网提供对外网的服务能力的场景中,NAT和FULLNAT是比较合理的选择;
  • 在服务视频流的场景中,DR模式是更应该考虑的选择;
  • 在基于云提供商的场景中,NAT、FULLNAT或者TUN可能是合适的选择,或者直接使用云提供商的负载均衡服务;
  • 在基于容器的服务场景中,根据对于容器管理平台 kubernetes 和容器主机的管理能力的不同,也需要选择合理的负载均衡服务.
  • 而在超大型分布式网络服务场景中,不仅后端需要具有集群服务的功能,承担流量接入的director本身也需要具有分布式的能力,并且需要保证后端能不借助director而将数据返回client,例如google的Maglev。

ipvsadm

ipvs具体实现是由ipvsadm这个程序来完成,因此需要安装此服务才可使用ipvs功能

yum install -y ipvsadm

Search

    Post Directory