扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
下文给大家带来关于负载均衡那点事儿的一些浅见,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用创新互联在行业内累计的经验来做一个解答。
成都创新互联服务项目包括图们网站建设、图们网站制作、图们网页制作以及图们网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,图们网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到图们省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!网络负载均衡和代理是什么?
定义 是:
1:网络负载均衡概览
对网络负载均衡进行了一个高层次的概括。多个客户端向多个后端发起资源请求,负载均衡器处于客户端和后端之间,简单来说完成如下任务:
服务发现:系统中有哪些后端可用?这些后端的地址(也就是:负载均衡器如何同这些后端通信)?
健康检查:哪些后端是健康的可以用于接收请求?
负载均衡:用什么算法来把独立的请求分发给健康的后端?
命名抽象:每个客户端不再需要知道每一个后端(服务发现),客户端可以通过预定义的机制来找到负载均衡器,然后让负载均衡器完成命名解析功能。这些机制包括内置库,以及路人皆知的 DNS/IP/端口 地址,后面会深入讨论。
错误隔离:通过健康检查以及一些其他的算法和技术,负载均衡器的路由方法能够有效的绕过瘫痪或过载的后端。这样运维人员在面对系统故障时,就可以更加从容的进行错误处理。
成本和性能收益:分布式系统的网络的一致性比较差。系统通常要跨越多个网络区域。同一区域内,网络资源通常是低售的;而在跨区域的情况下,超售则是常态(超售和低售的鉴别,是通过网卡上可消耗的带宽和路由器之间的可用带宽进行比对得出的结论)。智能的负载均衡会尽可能保证通信在同一区域内进行,从而提高性能(降低延迟)并降低总体系统成本(降低区域间的带宽和光纤需求)。
负载均衡器 vs 代理服务器
以及 Proxy 这两个术语经常会同样对待,本文中也把这两个词条等价处理(卖弄一下:并非所有的代理都是负载均衡器,但是负载均衡是主流代理的首要功能)。
四层(连接/会话)负载均衡
2:TCP 终端四层负载均衡
图 2 展示了一个传统的四层 TCP 负载均衡器。这个例子中,客户端向负载均衡器发起了一个 TCP 连接,负载均衡器 了这一连接(也就是说直接响应了 SYN),接下来选择一个后端,然后创建了到后端的新的 TCP 连接(就是发起了新的 SYN)。图中的细节不需太过关注,后面的四层负载均衡章节会进行详细讨论。
七层(应用)负载均衡
(应用)负载均衡呢?例如下面几个四层的案例:
图 3 描述了七层的 HTTP/2 负载均衡。这里客户端发起了对负载均衡的单个连接。负载均衡器连接到了两个后端。当客户端向负载均衡器发送两个 HTTP/2 流的时候,两个流会分别送往不同后端。这样多工客户端的大量不同的请求会被高效的分发给多个后端。这就是七层负载均衡对现代协议的重要性的来由(因为对应用流量的洞察能力,七层负载均衡还有很多其他好处,后面会详细描述)。
七层负载均衡和 OSI 模型
次:
2
服务发现
健康检查
主动式:负载均衡器周期性的向后端发送 ping (例如一个发送到
被动式:负载均衡器通过对主数据流的分析来确定健康情况。比如一个四层负载均衡器,在发现连续三个连接错误的情况下,就会判定一个后端不可用;七层负载均衡可能会在连续三个 HTTP 503 响应之后判定这一后端为不健康状态。
负载均衡
Session 粘连
TLS 终端
观测性
安全性和拒绝服务***防范
配置和控制平面
还有很多
3
中间代理
4:中间代理负载均衡拓扑
图 4 描述的这种拓扑对多数读者来说都是最熟悉的。这一类别包括了 Cisco、Juniper、F5 等硬件产品;云软件解决方案例如 Amazone 的 ALB 和 NLB 以及 Google 的 Cloud Load Balancer,还有 HAProxy、NGINX 以及 Envoy 这样的纯软件自主方案。中间代理方案的优势在于对用户提供的简便性。
边缘代理
5:边缘代理负载均衡拓扑
图 5 实际上是中间代理的一种变体,这种负载均衡器可以通过 Internet 进行访问。在这一场景下,负载均衡器通常需要提供一些附加的 “API 网关”类功能,例如 TLS 终端、频率限制、认证以及流量路由等。优势和劣势跟中间服代理类似。在一个大的面向 Internet 的分布式系统中,边缘服务器通常是一个必要的组成部分。
嵌入式客户库
6:通过嵌入客户端库实现负载均衡
图 6 所示的客户端库中。不同的库所支持的功能差别很大,此类产品中最知名的功能丰富的包括 Finagle、Eureka/Ribbon/Hystrix 以及 gRPC(大致基于 Google 的一个称为 Stubby 的内部系统)。这种方式的好处是把所有负载均衡特性完全分布到每个客户端,从而避免了前面说到的单点失败和性能瓶颈。
Sidecar 代理
7:Sidecar 代理实现负载均衡
嵌入式客户库的一个变体就是
不同负载均衡器拓扑的总结和优劣势
4
四层负载均衡器还有用么?
服务对服务的场景中取代四层负载均衡器,但四层负载均衡器对边缘通信还是非常有意义的,这是因为所有现代的大型分布式架构都是用了两层的四层/七层负载均衡架
TCP/UDP 终端负载均衡器
8:四层终端负载均衡器
图 8中的终端负载均衡器。这和我们介绍四层负载均衡的时候讲到的内容是一致的。这种类型的负载均衡器中,使用了两个的独立的 TCP 连接:一个用于客户端和负载均衡器之间;另一个用在负载均衡器和后端之间。
TCP/UDP 透传负载均衡器
图 9所说的透传负载均衡器。这种类型的负载均衡过程中,TCP连接没有被负载均衡器终结,每个链接的数据包,在经过连接分析和网络地址转换(
连接跟踪:跟踪全部活动 TCP 连接的过程。这里包括很多内容,例如握手是否完成,是否收到 FIN,连接发呆了多久,这个连接转发给哪一个后端等。
NAT:是使用连接跟踪数据,来更改数据包的 IP/端口信息使之穿过负载均衡器的过程。
;同时还会把源 IP 替换为负载均衡器的 IP。当后端响应 TCP 连接时,数据包就会返回给负载均衡器,负载均衡器中的链接跟踪和 NAT 再次发挥作用,反向送回数据包。
性能和资源消耗:透传型的负载均衡器没有终结 TCP 连接,无需缓存任何的 TCP 连接窗口。每个连接的状态存储非常小,通常使用高效的哈希表查询即可。正因如此,相对终端负载均衡器来说,透传型负载均衡器能够处理更大数量的活动链接,单位时间内处理更多的数据包。
允许后端进行拥塞控制: 是一种机制,让 Internete 端点对外发数据进行流量控制,防止超量使用带宽和缓冲。
为直接服务器返回(Direct Server Return = DSR)做基线,以及四层负载均衡集群:透传负载均衡也是高级四层负载均衡(例如后面将要说到的 DSR 和使用分布式一致性哈希的集群)的基础。
Direct Server Return (DSR)
10:四层 DSR
图 10展示的就是 DSR 负载均衡。DSR 构建在前文提到的透传负载均衡器的基础之上。DSR 是一种优化方案,只有入站/请求数据包通过负载均衡;出站/响应数据包绕过负载均衡器直接返回给客户端。使用 DSR 方案的有趣之处在于,很多负载的响应比请求数据量大很多(比如典型的 HTTP 请求和响应)。假设 10% 的流量是请求,另外 90% 是响应,如果使用了 DSR 负载均衡,仅需要 1/10 的容量就能够满足系统需要。从前的负载均衡非常昂贵,这一方案能够显著降低系统成本并提高可靠性(更少就是更好)。DSR 负载均衡器用下面的方式扩展了透传负载均衡的概念:
使用高可用配对方式实现容错
图 11 所示。典型的高可用负载均衡器配置会满足如下设计:
副作用:
使用分布式一致性哈希进行容错和伸缩
图 12 模式的并行四层负载均衡系统。这类系统的目标是:
fault tolerance and scaling via clustering and distributed consistent hashing 的最佳引用,具体工作模式是:
任播来保证所有单一 Flow 能够到达同一个边缘路由器。一个 Flow 通常是一个由源 IP/端口和目的 IP/端口 构成的元组。(简单说,ECMP 是一个在使用一致性哈希连接的独立加权网络上分发数据包的方式)。边缘路由器并不在意哪些数据包去了哪里。一般会倾向于把来自于一个 Flow 所有数据包发送给同一套连接,以此避免乱序包导致的性能损失。
一致性哈希选择一个后端。从负载均衡器到后端的数据包会使用 GRE 进行封装。
Maglev 以及 Amazon 的 Network Load Balancer (NLB)。目前还没有任何开源负载均衡器实现了这一设计,然而据我所知,有公司要在 2018 年发布一个这样的产品。我很期待他的出现,这一产品将会填补开源网络组件的重要空白。
当前七层负载均衡的技术状态
协议支持
动态配置
Istio就是一个这种系统的例子。请参考 Service Mesh Data Plan vs Control Plan 来获取更多这方面的内容。
高级负载均衡
可观测性
扩展性
容错
更多
5
13:全局负载均衡
会有越来越多的独立负载均衡器以商品设备的面目呈现。我认为真正的创新和商业机会来自于控制平面。展示了一个全局负载均衡系统。在本例中有一些不同的东西:
Envoy's universal data plane API
6
看了以上关于负载均衡那点事儿的一些浅见,如果大家还有什么地方需要了解的可以在创新互联行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,创新互联技术工程师在行业内拥有十几年的经验了。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流