LVS面试题
LVS 原理
LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。 而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。 ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。
简述 LVS 三种工作模式,他们的区别
基于 NAT 的 LVS 模式负载均衡
所谓 NAT 模式,即网络地址转换模式,分发器有着一个公网 IP 地址,该公网 IP 地址对外提供服务,当客户端的请求数据发送到分发器后,由分发器将公网地址转换成私网地址,根据一定的算法,分发给后台的服务器进行处理.后台的服务器组处理完成后,将响应数据包发送给分发器,由 分发器私网 IP 地址转化成公网 IP 后再反馈给客户端.
在 NAT 工作模式下, 由于分发器要同时处理数据包的处理和相应,因此分发器的性能称为整个架构的瓶颈.如果后台真实服务器数量过多,则分发器的工作量越大,并且分发器还要维护 NAT 表,消耗大量的内存资源,因此这个模式尽管很适合公司网络,但是其后台能够支持的真实服务器数量不多.
基于 TUN 的 LVS 负载均衡
Tunnel 模式即隧道模式 所谓的 Tunmel 模式 ,即分发器只负责接收客户端发送过来的数据包,然后将该数据包封装后按照算法发送给真实服务器,真实服务器在处理完该数据包,不需要将该数据包发送给分发器,而是直接将该数据包发送给客户端.
在 Tunnel 模式下,每个真实服务器都会又自己的公网 IP 地址,该公网 IP 地址一方面用于接收从分发器发送的客户端请求求,一方面给客户端发送其响应报文.也正因为每个真实都有自己的公网 IP 地址,因此真实服务器不用拘泥于网络架构,可以分散存储,起到容灾备份的作用.
基于 DR 的 LVS 负载均衡
DR 模式, 即 Direct Routing,直接路由模式.在此模式下,分发器有接收客户端请求的公网 IP 地址,各个真实服务器也有自己的环回地址,该地址于分发器公网 IP 地址完全相同,并且该地址还需要能够正常访问公网,这样,当客户端的请求发送到分发器后,分发器只需要将请求数据包修改 MAC 地址后发送给后端真实服务器即可,由于目的 MAC 地址和 IP 地址都是自己,因此后端真实服务器会对该数据包进行正常响应.在响应完成后,真实服务器会将该数据包直接从环回地址发送出去,也不需要经过分发器
在 DR 模式下,网络层需要解决两个问题,一个是解决 IP 地址冲突的问题,由于在一个局域网中存在多个相同的公网地址,因此必须设置后端真实服务器不对 ARP 请求报文进行响应;另一个是后端真实服务器的转发问题,必须设置真实服务器使用自己的真实网卡转发环回网卡的数据包
模式之间的区别
NAT 模式 | TUN 模式 | DR 模式 | |
---|---|---|---|
对服务器的要求 | 服务器节点可以是任何操作系统 | 必须支持隧道模式.目前只要 linux | 服务器节点支持寻网卡设备,能够禁用设备的 arp 响应 |
网络要求 | 拥有私有 IP 地址的局域网 | 拥有合法 IP 地址的局域网或者广域网 | 拥有合法的 ip 地址的局域网,服务器节点与负载均衡器必须在同一网段 |
通常支持节点数 | 10-20 个,有均衡器处理能力决定 | 较高,可以支持到 100 个服务节点 | 较高,可以支持到 100 个服务节点 |
服务节点安全性 | 较好,采用内部 IP,服务节点隐蔽 | 较差,采用公网 ip 地址节点完全暴露 | 较差,采用公用 ip 地址,节点完全暴露 |
LVS 调度 算法
轮询调度
加权轮询调度
最小连接调度
加权最小连接调度
基于局部的最少连接
带复制的基于局部性的最少连接
目标地址散列调度
源地址散列调度 U
最短的期望的延迟
最少列调度
常见的 LVS 调度器算法(均衡策略)
轮询调度
轮询调度(简称:RR) 算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单.轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器.
加权轮询调度
加权轮询(简称:WRR) 算法主要是对轮询算法的一种优化和补充,LVS 会考虑每台服务器的性能 并给每台服务器添加一个权值,如果服务器 A 的权值为 1,服务器 B 的权值 2,则调度到服务器 B 的请求会是服务器 A 的请求的 2 两倍.权值越高的服务器处理的请求越多.
最小连接调度
简称(LC)算法会把新的请求分配到当前连接数最小的服务器.最小连接调度是一种动态的调度算法,他通过服务器当前活跃的连接数来估计服务器的情况.调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接加 1 当连接中断或者超时 其连接数减 1
加权最小连接调度
简称 WLC 算法是最小连接调度的超集,各个服务器相应得权值表示其处理性能.服务器得缺省值为 1,系统管理员可以动态地设置服务器地权值,加权最小连接调度在调度新连接时尽可能使服务器已建立连接数和其权值成比列.调度器可以自动问询真实服务器地负载情况,并动态地调整其权值.
基于局部的最少连接
简称 LBLC 算法是针对请求报文地目标 IP 地址地负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群客户请求报文地目标 IP 地址是变化地,这里假设任何后端服务器都可以处理任一请求,算法地设计目标是在服务器地负载基本平衡地情况下,将相同目标 IP 地址地请求调度到同一台服务器,来提高各台服务器地访问局限性和 cache 命中率,从而提升整个集群系统地处理能力,LBLC 调度算法先根据请求地目标 IP 地址找出该目标 IP 地址最近使用地服务器,若该服务器是可用地且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则使用最少连接的原则选出一个可用的服务器,将请求发送到服务器
LVS 的工作模式及其工作过程和优缺点
基于 NAT 的 LVS 模式负载均衡
优点:运行成本底、安全性高适用于中小型网络公司
缺点:在NAT工作模式下,由于分发器要同时处理数据包的处理和响应,因此分发器的性能称为整个架构的瓶颈。如果后台真实服务器数量过多,则分发器的工作量就会越大,并且分发器还要维护NAT表,消耗大量的内存资源,因此这个模式尽管很适合公司网络,但是其后台能够支持的真实服务器数量不多。
基于 TUN 的 LVS 负载均衡
优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。也正因为每个真实都有自己的公网IP地址,因此真实服务器不用拘泥于网络架构,可以分散存储,起到容灾备份的作用。
缺点:但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议。需要大量的公网ip。成本较高。安全性较差,采用共用ip地址,节点完全暴露
基于 DR 的 LVS 模式负载均衡
优点:和VS-TUN一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。支持节点数较高。
缺点:要求负载均衡器的网卡必须与物理网卡在一个网段段上。节点安全性较差采用公用ip地址,节点完全暴露