Nginx是高性能服务器.其性能远高于业务服务器.但是Nginx毕竟是一个应用层软件.单台Nginx服务器能承载的用户请求也是有上限的.当日活用户发展到一定规模后.就需要用Nginx集群才能顶住压力.既然是集群.势必需要引入一个中间层作为协调者.其负责决定将用户请求转发到哪台Nginx服务器.这个协调者需要有比Nginx更高的性能.它就是LVS.是一个虚拟的服务器集群系统.从Linux2.6版本开始它已经成为Linux内核的一部分.即LVS运行于操作系统层面.
Nginx是基于OSI参考模型的第七层(应用层)协议开发的.采用了异步转发形式.Nginx在保持客户端连接的同时新建一个与业务服务器的连接.等待业务服务器返回响应数据.然后在将响应数据返回给客户端.Nginx选择异步转发的好处是可以失败转移.即.如果与某台业务服务器的连接发生故障.那么就可以换另一个连接.提高了服务的稳定性.Nginx主要强调的是代理.
LVS是基于OSI参考模型的第四层(网络层)协议开发的.采用了同步转发形式.当LVS监听到有客户端请求到来时.会直接通过修改数据包的地址信息将流量转发到下游服务器.让下游服务器与客户端直接连接.LVS主要强调的是转发.
由于LVS基于OSI参考模型的网络层.免去了请求到应用层的层层解析工作.而且LVS工作于操作系统层面.所以LVS相比于Nginx有更高的性能.LVS用于网络接入层时也被称为四层负载均衡器.既然LVS四层负载均衡器做的主要工作是转发.那么就需要讨论一下转发模式.目前LVS主要有四种转发模式.NAT模式.FULLNAT模式 TUN模式. DR模式.
LVS常用名词和概念:
DS:
四层负载均衡器节点.也就是运行LVS的服务器.DS和LVS作为角色时是一个意思.
RS:
DS请求转发的目的地.即真实的工作服务器.
VIP:
客户端请求的目的IP地址.实际指的是DS的公网IP地址.
DIP:
用于DS与RS通信的IP地址.实际指的是DS的内网IP地址.
RIP:
后端服务器的IP地址.
CIP:
客户端IP地址.
NAT模式:
NAT模式是指通过修改请求报文的目标IP地址和目标端口号实现DS到某个RS的请求转发.在此模式下.网络报文的请求与响应都要经过DS的处理.DS是RS的网关.过程如下.
1.客户端发请求到LVS的VIP.请求到达DS.
2.DS选择一个RS作为请求转发的目的地.然后修改客户端请求的目的IP地址为对应RS的RIP.将请求从DIP发送给所选择的RS.
3.RS收到请求后.发现请求的目的IP地址是自己的IP地址(RIP).于是处理请求.然后返回响应数据.其中源IP地址为RIP.目的地址是CIP.
4.DS作为RS的网关会收到响应数据.然后修改响应数据的源地址为VIP.
5.客户端收到响应数据.
配置LVS NAT模式需要满足如下条件.
DS需要两块网卡.其中一块网卡面向公网提供的VIP.另一块网卡面向内部网络提供DIP.
DS需要和所有的RS处于同一个局域网内.并将DS设置为局域网的网关.否则RS的响应数据将无法传输到DS.
NAT模式的缺点也显而易见:客户端请求和服务器响应都会经过DS重写.而服务器数据的响应长度一般大于客户端请求长度.响应数据会对DS造成网络宽带压力.成为性能瓶颈.

FULLNAT模式:
FULLNAT模式是NAT模式的优化版.它不要求DS与RS处于同一个局域网且作为网关.DS在NAT模式的基础上又做了一次源IP地址转化.这样一来.当RS返回响应数据时.根据IP地址即可将其正常路由到DS.而不需要强行指定DS为网关.FULLNAT模式的主要缺点是请求到达RS后会丢失客户端IP地址.
1.客户端发送请求到LVS的VIP.请求到达DS.
2.DS选择一个RS作为请求转发的目的地.然后分别修改客户端请求的目的IP地址为对应RS的RIP.源IP地址为DIP.然后将请求从DIP发送给所选择的RS.
3.RS收到请求后.发现请求的目的IP地址是自己的IP地址(RIP).于是处理请求.然后返回响应数据.其中源IP地址为RIP.目的IP地址为DIP.
4.DS通过数据传输层收到RS响应数据.然后分别修改响应数据的源IP地址为VIP.目的IP地址为CIP.
5.客户端收到响应数据.

TUN(IP隧道)模式:
DS通过IP隧道加密技术将请求报文封装到一个新的数据包中.并选择一个RS的IP地址作为新数据包的目的IP地址.然后将它发送到对应的RS.RS基于IP隧道解密技术解析出原数据包的内容.查看RS本地是否绑定了原数据包的目的IP地址.如果是.则处理请求并将响应结果通过网关返回给客户端.在TUN模式下.请求过程如下.
1.客户端发送请求到LVS的VIP.请求到达DS.
2.DS选择一个RS作为请求转发的目的地.并将数据包封装到一个新的数据包中.其中新数据包的源IP地址为DIP.目的IP地址为对应的RS的RIP.然后通过IP隧道发送新的数据包.
3.RS对IP隧道的数据包进行解析.得到原数据包.
4.RS看到原数据包的目的IP地址是VIP.而RS本地1o网卡也配置了此VIP.于是RS处理数据包.
5.RS返回响应数据.其中源IP地址为VIP.目的地址为CIP.响应数据通过网关到达客户端.

TUN模式特点:
1.DIP和RIP不一定非要在同一个网络环境中.IP隧道技术可以根据IP地址找到RS.
2.RS和DS所在的网络环境必须支持IP隧道技术.
3.除了DS.RS也需要配置VIP.这样一来.RS只有解析出原数据包的内容后才能确认数据包的目的IP地址是自己.另外需4.要VIP绑定到RS的1o网卡.这样才能防止对ARP(地址解析协议)进行响应.
5.DS仅负责将请求转发到RS.但是RS的响应数据不通过DS转发.而是直接发往客户端.所以TUN模式的性能高于NAT模式.
DR模式:
与TUN模式类似(DS仅转发请求并不转发响应数据).DR模式通过改写请求报文的MAC地址将请求转发到RS.然后RS将响应数据通过网关返回给客户端.假设客户端MAC地址 DS的地址和3个RS的MAC地址分别为M1~M5.在DR模式下进行请求转发的过程如下.
1.客户端发送请求到LVS的VIP.请求到达DS.
2.DS选择一个RS作为请求转发的目的地.并将数据包的目的MAC地址改为RS对应的MAC地址.然后通过局域网DIP发出数据包.
3.RS读取数据包.看到目的IP地址是VIP.已被绑定到RS本地的1o网卡.然后RS处理数据包.
4.RS返回响应数据.并将数据包的源MAC地址改为M3.将目的的MAC地址改为客户端MAC地址M1.然后RS通过网关将响应数据直接发送给客户端.

DR特点:
1.由于DS经过数据链路层(OSI参考模型的第二层).所以需要把RS的RIP和DS的DIP配置到同一个物理网络中.
2.除了DS.RS也需要在1o网卡上配置VIP.理由与TUN模式一致.
3.所有响应数据都不经过DS转发.与TUN模式一样.但是TUN模式涉及加密/解密IP隧道.性能不如DS模式.
四种 LVS 模式完整对比
