1、LVS介绍
LVS是Linux Virtual Server的简写,LVS工作在一台server上提供director的功能,本身并不提供服务。只是吧特定的请求转发给对应的real server,从而实现集群环境种的负载均衡。
LVS工作子IOS模型中的第四层,由于其工作在第四层,因此与iptables类似,必须工作在内核空间上。他是直接俄工作在内核中的,叫ipva,主流的linux发行版默认都已经集成了ipvs,因此用户只需安装一个管理工具ipvsadm即可
1.2、LVS组成
LVS由两部分程序组成,包括ipvs和ipvsadm。
LVS的核心组件ipvs工作在kernel中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的real server。而另一个组件ipvsadm是工作在用户空间的一个让用户定义ipvs规则的工具。故我们只要在server上装了ipvsadm软件包就可以定义ipvs规则,
而在linux kernel的2.6版本之后kernel是直接支持ipvs的。
1.2.1、负载调度器
调度器:整个集群对外的最前端主机,负责接受用户请求,并且根据相关的调度算法,将请求转发到后端真实服务器上,而客户端认为服务是来自一个IP地址上的
1.2.2、服务器池:Server Pool
真正为客户提供服务的服务器,每一个服务器就是一台RS
1.2.3、共享存储:Shared Storaged
为RS保持相同内容,提供数据的一致性,也就是说,他为服务器提供一个共向的存储区
1.3、LVS的专用名词
DS:Director Server 值得是前端负载均衡器节点
RS:Real Server 后端真实的工作服务器
VIP:向外部直接面向用户请求,作为用户请求的目标IP地址
DVIP:Director Server IP,主要用于和内部主机通讯的IP地址
RIP:Real Server IP,后端服务器的IP地址
CIP:Client IP,访问客户端的IP地址
1.4、LVS的负载调度算法
1、轮询(rr)
将收到的访问请求按照顺序轮流分配给集群的每个节点
2、加权轮询(wrr)
根据真是服务器的处理能力轮流分配收到的房访问请求,他将依据不同RS的权重分配任务。
3、最少连接(lc)
IPVS表存储了所有的活动的连接,把新的连接请求发送到当前连接数最小的RS
4、加权最少连接数(wlc)
在服务器节点的性能差异较大的情况下,可以为真实服务器设置权重,权重较高的节点将承担更大比例的活动连接负载。
5、source hashing源地址hash(sh)
将来自同一个ip的请求始终调度至统一RS
1.5、LVS负载均衡模式及工作原理
1.5.1、LVS工作模式:
LVS有三种工作模式
DR:直接路由模式
NAT:网络地址映射模式
TUN:ip隧道模式
1.5.2、NAT(网络地址映射)
NAT:网络地址转换
DNAT:目标地址转换 改变的是目标地址
SNAT:源地址转换 改变的是源地址
LVS-NAT:就是使用的SNAT和DNAT完成包的转发
负载调度器作为服务器节点的网关,也作为客户机的访问集群的入口,可是各节点回应客户机的访问出口。
1.5.3、IP(隧道)
IP隧道:简称TUN模式,
负载调度器仅作为客户机的访问入口,各节点通过各自的INTERNET连接直接回应客户机,而不再经过负载调度器。采用开放式的网络结构,服务器节点分散在互联网中的不同位置。具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信。
1.5.4、direct routing(直接路由)
直接路由:简称DR模式,采用半开方式的网络结构,客户端访问VIP然后调度器接收到客户端的信报文后更改MAC地址然后将请求转发给真实的服务器,而真实的服务器通过外网将请求发送给客户端
1.6、LVS优点
1、抗负载能力强:
工作方式逻辑简单,而且工作在网络的第四层,仅做请求分发用,没有流量,所以在效率上基本不需要太过考虑。
2、配置低:没有太多的可配置的选项,所以处理增减服务器,并不需要经常去触碰,大大减少了人为出错的机率
3、工作稳定,因为本身抗负载能力强,所以稳定性高,所以不用担心负载均衡器本身会出现什么问题
4、无流量:
lvs仅仅分发请求,而流量并不从让他本身出去,所以可以利用他这点来做一些线路分流之用。
5、lvs基本上能支持所有应用,因为lvs工作在第4层,所以它可以对几乎所有应用做负载均衡,包括http、数据库等
2、LVS集群-DR
2.1、DR模式概述
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。
2.1.1、工作原理MAC转换过程
实例场景设备清单:
Director调度器IP: 192.168.1.70, VIP : 192.168.1.63
client基本信息
IP:192.168.1.101向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:
Director分发器根据负载均衡算法选择一台active的realserver
(假设是192.168.1.62),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下
realserver(192.168.1.62)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
如果client与LVS同一网段,那么client(192.168.1.101)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
2.1.2、总结
1、接受client的请求,根据你的设定的负载均衡算法选取一台realserver的ip
2、以选取的整个ip对应mac地址为目标mac,然后重新将IP包封装成帧转发给这台RS
3、在hash table中记录连接信息
lvs-dr做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。数据包、数据帧的大致流向是这样的:client --> VS --> RS --> client
2.1.3、DR模式特点
1、保证前端路由将目标地址为VIP报文发给了DS,而不是RS
2、RS跟DS必须在同一个物理网络中
3、所有的请求报文经由DS,但响应报文必须不能进过DS
4、不支持地址转换,也不支持端口映射
5、RS可以是大多数常见的操作系统
6、RS的网关绝不允许执行DIP
7、RS上的lo接口配置vip地址
缺点:唯一的缺陷在于它要求LVS 调度器及所有应用服务器在同一个网段中,因此不能实现集群的跨网段应用