资讯专栏INFORMATION COLUMN

【整理总结】负载均衡浅析

idealcn / 2319人阅读

摘要:负载均衡算法轮询,加权轮询。参考三负载均衡负载均衡由服务提供厂商提供。之后,集群内再采用其他的负载均衡方案。参考五负载均衡工作在层,它会与分别建立连接,需要维护这两个连接的状态。

运营研发团队 施洪宝

一. 基础知识 1.1 基础

什么是负载均衡?

当单机提供的并发量不能满足需求时,我们需要多台服务器同时服务。当客户请求到达时,如何为客户选择最合适的服务器?这个问题就是负载均衡问题。

负载均衡主要需要解决的问题是哪些?

从客户端的角度上看,客户需要最快速的得到服务器的相应,负载均衡时需要找出能最快相应客户需求的服务器进行服务。

从服务端来看如何使得每台服务器都能达到较高的利用率,最大限制的为用户提供快速、可靠的服务是服务端需要考虑的主要问题。

1.2 负载均衡分类

硬件

F5

软件

dns负载均衡

LVS负载均衡(4层)

nginx, haproxy(7层)

二. F5负载均衡

F5是一家美国的公司,该公司生产一些硬件设备可以作为负载均衡器使用(例如:big-ip), 本文后续部分所说的F5是指其负载均衡器产品。

不同的产品实现的功能不一致,具体情况需要根据产品说明书。

F5可以在4-7层内做负载均衡,用户可以根据需求进行配置。

由于F5可以做7层负载均衡,故而可以实现会话管理,http处理等。

2.1 数据转发模式

standard类型, 这种模式下,客户端与F5服务器建立连接,F5服务器与真实服务器建立连接,F5服务器将客户需求转发给真实服务器,并将真实服务器的相应转发给客户端,此时F5可以查看请求和相应的所有信息。

四层转发模式(performance L4), 这种模式下,F5只处理4层以下的数据。客户端将数据发送给F5, F5仅将数据转发给真实服务器,包括TCP的握手数据包以及挥手数据包,真实服务器需要先将数据发送给F5服务器,F5将其转发给客户端。

路由模式, 这种模式与LVS的DR模式类似。

...

2.2 负载均衡算法

轮询,加权轮询。

源地址哈希

...

2.3 小结

F5的优势在于功能强大,并发量高,能满足客户的大多数需求,但其成本较高,一般大型国企可能会使用。

2.4 参考

https://f5.com/zh

https://www.jianshu.com/p/2b5...

https://wenku.baidu.com/view/...

三. dns负载均衡

dns负载均衡由dns服务提供厂商提供。

最初的dns负载均衡提供简单轮询,不能根据客户端或者服务端状态进行选择。

目前,有些dns服务厂商可以提供智能dns服务,用户可以设置负载均衡方案,例如:根据客户端ip地址,选择就近的服务器。

对于目前大多数的公司而言,为了更好的服务用户,通常会使用dns负载均衡,将用户按照就近原则,分配到某个集群服务器上。之后,集群内再采用其他的负载均衡方案。

四. Linux Virtual Server(LVS)

LVS通过修改数据包Ip地址,Mac地址实现负载均衡。

LVS由ipvs(内核中), ipvsadm(用户态)组成。LVS需要理解tcp,ip头部。

当tcp握手信号,SYN数据包达到时,ipvs选择一个后端服务器,将数据包进行转发。在此之后,所有包含相同的ip,tcp头部的数据包都会被转发到之前选择的服务器上。很明显,ipvs无法感知数据包内容。

4.1 分类

LVS-NAT

LVS-DR

LVS-TUN

4.2 基本原理 4.2.1 LVS-DR

LVS-DR模式的基本原理如下图所示:

4.2.2 LVS-NAT

LVS-NAT模式的基本原理如下图所示:

4.3 负载均衡算法 4.3.1 静态算法

轮询(Round Robin, RR)

加权轮询(Weight Round Robin, WRR)

源地址Hash(Source Hash, SH)

目的地址Hash(Destination Hash, DH), 可以设置多个VIP

4.3.2 动态算法

最少连接(Least Connections, LC),找出当前连接数最小的服务器

加权最少连接(Weighted Least Connections, WLC)

最短期望延迟(Shortest Expected Delay Scheduling, SED) 基于WLC。例如: 现有A, B, C三台服务器,权重分别为100,200,300,当前的连接数分别为1,2,3,下一个连接到达时,通过计算期望时延选择服务器(1+1)/100, (2+1)/200, (3+1)/300, 故而选择C服务器。

永不排队(Never Queue Scheduling, NQ), 改进的sed, 如果某台服务器连接数为0,直接连接过去,不在进行sed计算。

基于局部性的最少连接(locality-Based Least Connections, LBLC),根据目标ip, 找出目标ip最近使用的服务器,如果服务器存在并且负载没有大于一个阈值,则将新的连接分配到这个服务器上,否则按照最少连接找出一个服务器处理该请求。

带复制的基于局部性最少连接(Locality-Based Least Connections with Replication, LBLCR),根据目标ip,维护一个服务器组,每次从组中挑选服务器,如果服务器不可以处理,则从所有服务器中按照最少连接挑选出一台服务器,并将其加入到目标ip的处理组服务器中。

4.3 参考

https://liangshuang.name/2017...

五. Nginx Load Balance

nginx负载均衡工作在7层,它会与client、upstream分别建立tcp连接,nginx需要维护这两个连接的状态。

nginx的stream模块可以用于4层负载均衡,但一般很少使用。

5.1 基本原理

nginx做7层负载均衡的基本原理如下图所示:

5.2 负载均衡算法

轮询(默认)

加权轮询

源ip哈希

响应时间

url 哈希

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40177.html

相关文章

  • 浅析k8s service的应用

    摘要:前言最近在产品新版本的服务发现和负载均衡方案上遇到了一个问题,在尽量不改动原生使用方式和代码前提下,对又重新复习了一遍,略有体会。所有访问该的请求,都会被转发到后端的中。使用这种方案的原因,不外乎是外部无法访问容器服务。 前言 最近在产品新版本的服务发现和负载均衡方案上遇到了一个问题,在尽量不改动原生k8s使用方式和代码前提下,对service又重新复习了一遍,略有体会。 Servic...

    Clect 评论0 收藏0
  • Web缓存相关知识整理

    摘要:缓存缓存,也叫网关缓存反向代理缓存。浏览器先向网关发起请求,网关服务器后面对应着一台或多台负载均衡源服务器,会根据它们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的处扩展性。 一、前言  工作上遇到一个这样的需求,一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面。用到了HTML5 的本地存储 API ...

    rickchen 评论0 收藏0
  • 后端技术精选

    摘要:服务教程在它提出十多年后的今天,已经成为最重要的应用技术之一。全方位提升网站打开速度前端后端新的技术如何在内完整打开网站会直接影响用户的满意度及留存率,在前端后端数据缓存加速等等方面都有诸多可以提升。 HTTPS 原理剖析与项目场景 最近手头有两个项目,XX 导航和 XX 产业平台,都需要使用 HTTPS 协议,因此,这次对 HTTPS 协议做一次整理与分享。 使用缓存应该注意哪些问题...

    GitCafe 评论0 收藏0
  • 后端技术精选

    摘要:服务教程在它提出十多年后的今天,已经成为最重要的应用技术之一。全方位提升网站打开速度前端后端新的技术如何在内完整打开网站会直接影响用户的满意度及留存率,在前端后端数据缓存加速等等方面都有诸多可以提升。 HTTPS 原理剖析与项目场景 最近手头有两个项目,XX 导航和 XX 产业平台,都需要使用 HTTPS 协议,因此,这次对 HTTPS 协议做一次整理与分享。 使用缓存应该注意哪些问题...

    explorer_ddf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<