详解 LB 负载均衡的应用

2022-04-29 16:15:04 +08:00
 Cloudpods

Cloudpods 是一个开源的 Golang 实现的云原生的多云和混合云融合平台。

Cloudpods 不仅可以管理本地的虚拟机和物理机资源,还可以管理其他公有云和私有云平台的资源。

GitHub: https://github.com/yunionio/cloudpods,欢迎使用+star

今天分享的内容是“云上负载均衡产品的应用”。会从以下几个方面展开:

一、产品简介

1. 以 NGINX 为例

提到负载均衡,我们以前一般先会想到 NGINX ,或者淘宝的分支 Tengine 。我们先来看看

在加入了 NGINX 之后,客户端( Client IP )首先与 NGINX 建立连接( Virtual IP+Virtual Port ),请求也先发给 NGINX ,再由 NGINX 从多个后端服务器中选择一台,建立连接后把请求转发给后端服务器( Real IP )。

NGINX 作为网络转发节点,不参与后端服务的业务逻辑处理。而相比客户端直连后端,多个后端服务器可同时处理业务请求,应用的服务能力得到水平扩展。同时,转发节点上可以对后端做健康检查,自动屏蔽掉不健康的后端服务器,保障业务的高可用,使得单个后端服务器在故障、升级、过载时依然对用户连续可用。

因此,我们说水平扩展、高可用是负载均衡解决的最基本的两个问题。从另外一方面来说,使用负载均衡的业务,在架构设计上应该是能够水平扩展的。比如,一个应用的多个实例之间不需要通信,相互之间没有复杂的状态维护。

2. 业务词汇

在使用云上负载均衡的时候,不管哪个厂商的产品,我们会遇到一些常用的业务词汇。我们围绕一张图来简要介绍。

负载均衡实例,除了区域、可用区之外,每个实例至少有一个 IP 地址。同一个负载均衡实例下可以有多个监听,每个监听一般至少有协议、端口两个属性。后面还会介绍监听的其它属性,比如调度算法、健康检查、转发策略等。

实例和监听对应到 NGINX 上,其实是 Virtual IP 和 Virtual Port 的组合。每个监听有一个后端服务器组,组内可以有多个后端服务器,监听将来自客户端的请求转发给后端服务器( Real IP 、Real Port )。

对于 HTTPS 协议的监听,我们还会遇到 TLS 证书的概念。

通常每个监听还可以绑定一个访问控制列表,用来设置黑名单、白名单,限定业务的服务范围。

将业务词汇放到转发模型上,我们可以得到这样一张图。在壹云的负载均衡实现中,转发节点使用 HAProxy 负责具体的流量转发。实例和监听的配置被转换为 HAProxy 的配置应用到转发节点上。HAProxy 据此将流量转发到后端服务器组。

因篇幅过长,后续的功能与应用场景,和总结等详细内容请点击链接查看 https://mp.weixin.qq.com/s/3IWF-HwGAI6FquKsoGbAcA

GitHub: https://github.com/yunionio/cloudpods

3079 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/850051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX