首页>>新闻资讯>>云计算

带你更深入了解“负载均衡”

2024-08-07 09:19:09 18

内容简介

什么是负载均衡负载均衡相关算法常用的负载均衡技术负载均衡中源地址问题分析

什么是负载均衡:load balance

简而言之,就是将工作分发到不同的处理者目的优化资源使用load balance有多种算法,可以调配工作的分发逻辑

2. 最大化吞吐量(throughput)

scale out,在同一段时间内,多个处理者明显可以处理更多的请求

3. 减少相应时间

防止请求过多导致工作堆积

4. 避免单点过载

显而易见

5. 增加系统稳定性和可用性

观察到某个处理者fail之后,避免后续再分配工作给他所以,一个完整的负载均衡实例,应该包含一个balancer(请求接受者)和若干个server(我们称为后端服务器),balancer接收用户请求,并根据一定的算法,将请求转发给backend server,同时balancer应观察backend server的状态,及时将无法提供服务的backend server剔除出处理队伍通过“接收请求”、“转发”等词语可以看出,负载均衡是一个“传输”技术

负载均衡相关算法

上文中提到“根据一定的算法,将请求转发”,那么到底些什么样的算法呢?以下以阿里云SLB为例,介绍其中提到的集中算法

RR(round robin)

最简单的轮训,将到来的请求依次、平均的分发至后端服务器

WRR(weight round robin)

即通过配置后端服务器的权重,并根据权重来分发请求其实就是根据权重占比,占比高的后端服务器将被分配更多的请求

WLC(weighted least connection)

与WRR类似,但是使用当前后端服务器的active的连接作为权重

其他算法

如果我们直接视客户端为balancer(是的,可以这么想),那么我们可以有client random load balancing,即客户端随机请求后端服务器中的一台Persistence (stickiness)即保证:根据一定的策略(如客户端ip)每次请求都将被转发到统一台后端服务器上RR、WRR算法中,balancer其实不用关注后端服务器的状态,而只根据自身的数据将请求分发即可,WLC中,balancer开始需要了解后端服务器状态(比如连接数)。实际上我们也可以根据当前后端服务器的负载(load)来转发请求,当然这需要后端服务器与balancer建立通讯

常用的负载均衡技术

上文中提到,负载均衡是一个“传输”技术。根据OSI七层模型,我们也可以将负载均衡技术进行分类

layer 4 load balancer

工作在传输层上典型应用(技术or软件): HAProxy、LVSHAProxy:开源软件可以通过TCP、HTTP的流量转发LVS一个十分重要的高可用、负载均衡框架,后续将详细介绍

layer 7 load balancer

工作在应用层上典型应用(技术or软件): HAProxy、NginxNginx

硬件负载均衡技术

即通过物理设备的方式进行负载均衡典型产品: F5没有接触过此类产品,还并不了解相应具体的型号、操作方式但是其实是通过硬件来执行layer 4 load balancer

负载均衡中源地址问题分析

在上文中我们不停的提到“转发”的概念,那么其中的“转发”涉及什么技术呢?转发过程中源、目的地址又是如何变化的呢?

7层转发(以nginx为例)

nginx提供对http协议的转发功能在http协议中,我们通过X-Forwarded-For这样的header来获取客户端真正的ip地址注意X-Forwarded-For并不是一个标准的http headerX-Forwarded-For可以记录多个proxy的ip:X-Forwarded-For: client, proxy1, proxy2每经过一次转发,转发服务器都应该在X-Forwarded-For后加入被转发的ip所以后端服务器在通过nginx转发的http请求时可以通过“X-Forwarded-For”的字段来得到“源”地址问题在应用层被解决

4层转发

棘手的是在4层转发中,我们可能需要对IP/TCP包进行修改,进而导致后端服务器无法得到客户端的真实ip具体实现仍在调研中,后续将结合LVS进行讲解

相关标签:

发表评论:

评论记录:

未查询到任何数据!