负载均衡实现方式常见的有: 软件负载均衡、硬件负载均衡、DNS负载均衡
扩展
二层负载均衡:在数据链路层,基于MAC地址进行流量分发,较少见于实际应用中
三层负载均衡:在网络层,基于IP地址来分配流量,例如某些路由器上的负载均衡功能
四层负载均衡:在传输层,根据IP地址和TCP/UDP端口号来做决策,直接操作网络包进行转发
七层负载均衡:在应用层,可以解析HTTP等协议内容,根据URL、Cookie等信息做更复杂的路由逻辑
软件负载均衡
软件负载均衡是最常见的,大小公司都需要用到它软件负载均衡是通过负载均衡功能的软件来实现负载均衡
常见的软件有LVS、Nginx、HAProxy.软件负载负载均衡又分四层和七层负载均衡。
-
四层负载均衡: 在网络层利用IP 地址端口进行请求的转发,基本上就是起个转发分配作用。
-
七层负载均衡: 可以根据访问用户的 HTTP 请求头、URL 信息将请求转发到特定的主机。
LVS 为四层负载均衡。Nginx、HAProxy 可四可七
Nginx 通常只用它来做七层负载,LVS来做四层负载。LVS 所以常见的也有这样的搭配
软件负载均衡的优点在于便宜而且简单灵活,缺点在于(和硬件负载均衡比)性能一般,流量很大的企业就用软件负载均衡顶不住
负载均衡有什么策略
负载均衡有很多种策略,这里主要介绍的是一些核心的负载均衡算法,常见的大致如下
-
轮询算法(Round Robin)
: 主要就是按照顺序将请求分配给后端服务器 -
加权轮询算法(Weighted Round Robin)
: 在轮询算法的基础上添加权重的概念。对后端每个服务器赋予一个权重值,权重值越高,其被选中的概率就越大 -
随机算法(Random)
: 将请求随机分配给后端服务器,每个后端服务器被选中的概率一致,不考虑服务器的负载情况。缺点和轮询类似,如果后端服务器的性能差得很多,就容易导致性能较强的服务器闲置 -
加权随机算法(Weight Random)
: 在随机算法基础上,就可以根据服务器的性能设置对应的权值了,然后根据服务器的性能和处理能力调整对应的权重,减少性能强的服务器大的闲置时间。 -
最少连接算法(Least Connection)
: 根据后端服务器当前的连接数来决定请求的分配,负载均衡器会选择当前连接最少的服务器进行请求分配,保证后端服务器的负载均衡 -
哈希算法(Hash)
: 根据请求的某个特定关键字来实现负载均衡的,比如通过请求的 URL 路径、请求的IP 地址等来计算哈希值,然后根据哈希值选择相应的后端服务器,比如 Redis 集群采用的就是这种负载均衡方式。