LVS理论
LVS ( linux virtual server ) ,linux 虚拟服务器,是一个虚拟的服务器集群系统,实现一个高性能,高可用的服务器,具有良好的可伸缩性,可靠性和可管理性。
LVS 集群采用IP 负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡的转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障。
虚拟服务器是负载均衡体系的基本架构,它分两层结构:转发器(Director)和真实服务器
(1)客户端访问集群的vip,请求web服务。(请求报文:源cip,目标vip);
(2)调度器收到请求,会修改目标ip为rip,并且将请求根据相应的调度算法发往后端web服务器(请求报文:源cip,目标rip)
(3)Web服务器收到请求,发现目标ip是自己,并且也提供相应的服务,就会响应这个请求报文,并且发送给调度器。(相应报文:源rip,目标cip)
(4)调度器收到web服务器的相应报文,会根据相应的机制判断出用户的目标ip是vip,这时会修改源ip为vip发送给客户端响应。(源vip,目标cip)
不足
1. RS/ROUTER配置策略路由
(1)客户端发送请求到调度器的vip;
(2)调度器根据调度算法选择一台real server 进行转发,这个时候的源ip为cip,目标ip为vip,如果直接转发,目标ip就为rip了,所以需要在vip到rip这个过程进行隧道封装,封装两个ip首部,转发的报文源cip目标vip,但是还会在ip首部再添加一个ip首部,目标地址是rip,这个过程要求支持隧道协议。
(3)当real server接受到数据包之后,由于ip首部的目标ip是自己,就会拆开封装,还有一个首部内容为cip请求自己的vip,就会响应这个请求给cip。(响应报文的源ip为vip,目标ip为cip)
不足
1. RS配置复杂(IPIP模块等)
2. RS上绑定VIP,风险大;
(1)首先,客户端CIP的请求发送给LVS调度器的VIP。
(2)LVS调度器收到客户端的请求包后,会选择一台real server,将数据包的MAC地址改成选择的Real Server的MAC地址,并通过交换机(数据链路层)发送给RS服务器(因为MAC地址是rs服务器,所以,rs可以接收到该数据报。)注意:此时数据包的目的及源ip地址没有发生任何改变。
(3)A.RS的数据链路层收到发送来的数据报文请求后,会从链路层往上传给IP层,此时IP层需要验证请求的目标IP地址。因为包的目标IP(即VIP)并不是像常规数据报那样为RS的本地IP,而仅仅目的MAC地址是RS的。所以,在RS上需要绑定一个VIP,这样包的目标ip就没有发生变化。而且这个vip是隐藏的,不会响应arp解析。
B.RS处理数据包完成后,直接将应答返回给客户端,此时的源ip为vip,目标为cip,回复这个过程不经过调度器
不足
1. LVS-RS间必须在同一个VLAN
2. RS上绑定VIP,风险大;
– 某台RealServer down了,怎么办? --- 健康检测
– LVS本身down了,怎么办?---LVS冗余
Keepalived – LVS管理软件
– 健康检测:支持4/7监测;
– 主备冗余:采用VRRP协议癿HeartBeat;
– 如何配置?--- 配置文件
Keepalived –f /etc/keepalived/keepalived.conf
LVS各转发模式运维成本高
– 新转发模式FULLNAT:实现LVS-RealServer间跨vlan通讯,并且in/out流都经过LVS;
缺少攻击防御模块
– SYNPROXY:synflood攻击防御模块
– 其它TCP FLAG DDOS攻击防御策略
性能无法线性扩展
– Cluster部署模式
(1)客户端发送请求给调度器。(源cip,目标vip)
(2)Vip经过调度算法,讲请求发送给real server。(源dip,目标rip)
(3)Real server 接收到请求后,发现源地址是dip,则对dip进行响应。(源rip,目标dip)
(4)调度器收到real server 的响应后,会修改数据报的源地址为vip,目标地址为cip进行响应。
主要思想:引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯;