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