前提说明
工作原理
lvs是根据监听到的前端请求报文中的目标ip和目标协议以及端口号,设置监听规则和调度策略,然后将该请求达到后端的RS服务器上,实际上是由后端的RS服务器进行响应
lvs是负载均衡基于四层通用协议进行调度,是基于内核调度的,不经过lvs
client--------------------------server
lvs
nginx负载均衡可以4层也可以7层,是属于应用层的调度,需要2次tcp三次握手,会经过nginx
client -----------nginx------------server
相关术语
VS:Virtual Server,Director Server(DS),Dispatcher,Load Balancer(LB),负载均衡服 务器,调度器,负责流量转发服务
RS:Real Server(lvs),upstream Server(nginx),backend server(haproxy),后端提供 业务的服务器 CIP:Client IP,客户端IP
VIP:Virtual Server IP,虚似IP,负载均衡服务器的外网 IP,一般将域名解析到该IP
DIP:Director IP,负载均衡服务器的内网 IP,该IP负责与后端业务服务器进行通讯
RIP:Real Server IP,后端业务服务器的 IP
模式详解
lvs官方支持三种工作模式,分别是NAT模式,DR模式,TUN模式
NAT模式
假如业务量过大,后台只有一台机器是无法支撑过大的业务量的。第一反应是增加dns负载均衡,添加域名解析机器,但是有2个问题,公网ip很贵,而且dns是有缓存的,假如机器故障,但是有缓存,请求方感知不到,打到了故障机器,就会产生线上故障,这个时候就出现了lvs的nat模式,在DNS与server之间多加了一层,
vs对外暴露VIP承接所有访问请求,对内由DIP与实际内网机器(RS)进行通讯
只负责修改IP地址和转发请求的功能,实际的处理请求是由后端的RS处理,RS处理完以后将相应包发给VS,VS再返回给client,网络请求包和相应包都需要经过vs主机
源IP,目的IP,源端口,目的端口,简称TCP四元组。四元组确定一条链接,在传输过程中是不会变的,nat模式的工作原理主要是修改了进出包的IP,首先修改目的IP为RS的IP,将包传给RS进行处理。RS处理完以后再把包发给网关(VS),VS再修改源IP为VIP,四元组不发生改变。客户端就可以正常的发送响应接收响应
NAT模式工作特点
- RIP 和 DIP 应在同一个 IP 网络,且应使用私网地址;
- RS 的网关要指向 DIP
- 请求报文和响应报文都必须经由 LVS 转发,LVS 易成为系统瓶颈
- 支持端口映射,可修改请求报文的目标 PORT
- VS 必须是 Linux 系统,RS 可以是任意 OS 系统
- LVS 主机需要开启 ip_forward 转发
DR模式
但是随着访问请求的数量增加,并发请求越来越高,但是所有的报文都要经过LVS,LVS主机迟早有一天扛不住,于是诞生了DR模式。现在DR模式是LVS的默认模式,主要是有lVS只负责转发请求包,但是由RS主机直接将响应包返回给client
RS的VIP是绑定在lo:0虚拟网卡上,而不是物理网卡上,为了保证请求都达到LVS主机上。后方的server上的VIP不能做出arp响应