LB集群:

    LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、keepalived ,商业的硬件负载设备F5、Netscale。


LB集群架构:

wKiom1Z3aBbiG0TOAAC9_FiC8CA795.png

    当用户的请求过来时,会直接发到分发器(Director Server)上,然后它把用户的请求根据预先设置好的算法,智能均衡地分发到后端的真正服务器(real server)上。如果不同的机器,可能用户请求到的数据不一样,为了避免这样的情况发生,所以用到了共享存储,这样保证所有用户请求的数据是一样的。

            LVS是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层(Director)、server集群层(Real server)和共享存储。


LVS的三种模式:

(1)NAT(调度器将请求的目标ip即vip地址改为Real server的ip, 返回的数据包也经过调度器,调度器再把源地址修改为vip)。

wKioL1Z3bGSSCqyNAADBxH8mn-8094.png

(2)TUN(调度器将请求来的数据包封装加密通过ip隧道转发到后端的real server上,而real server会直接把数据返回给客户端,而不再经过调度器)。


(3)DR(调度器将请求来的数据包的目标mac地址改为real server的mac地址,返回的时候也不经过调度器,直接返回给客户端)。wKioL1Z3a4yA30khAAJ3iG-K9qM950.png

        图中出现的几个IP概念,需要解释一下,其中DIP(driector ip)为分发器的IP,NAT模式下它必须为公网IP,要对外服务。VIP(virtual ip)为虚拟IP,用在TUN和DR模式中,需要同时配置在分发器和后端真实服务器上。RIP(Real IP)为后端真实服务器的IP,在TUN和DR模式中,RIP为公网IP。


LVS的几种算法:


1:轮询算法(RR)就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器


2:加权轮询算法(WRR)主要是对轮询算法的一种优化与补充,LVS会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的两倍。权值越高的服务器,处理的请求越多。


3:最小连接调度算法(LC)将把请求调度到连续数量最小的服务器上,


4:加权最小连接算法(WLC)则是给每台服务器一个权值,调度器会尽可能保持服务器连接数量与权值之间的平衡


5:基于局部性的最少连接调度算法(lblc)是请求数据包的目标IP地址的一种调度算法,该算法先根据请求的目标IP地址寻找最近的该目标IP地址所有使用的服务器,如果这台服务器依然可用,并且用能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其他可行的服务器。


6:带复杂的基于局部性最少的连接算法(lblcr)激励的不是一个目标IP与一台服务器之间的连接记录,他会维护一个目标IP到一组服务器之间的映射关系,防止单点服务器负责过高


7:目标地址散列调度算法(DH)也是根据目标IP地址通过散列函数
将目标IP与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标IP的请求会固定发给该服务器。


8:源地址散列调度算法(SH)与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。


wKiom1Z3iofzFjGHAABLp_c1uys675.png