什么是负载均衡器
负载均衡(Load Balancer,简称 LB)是将访问流量根据转发策略分发到后端多台云服务器的流量分发控制服务。负载均衡通过流量分发调整资源利用情况,支持自动检测并隔离故障主机,提升系统对外服务能力及可用性。
为什么选择负载均衡
-
多可用区部署:根据业务需求,对支持多可用区的地域可选择将应用负载均衡实例部署在多个可用区下,一旦可用区机房故障或可用区下资源故障,可将流量自动分发至其他可用区,实现可用区级高可用。
-
超高性能:支持负载均衡器集群 (LB Cluster) ,可将来自一个公网 IP 的流量分散至多个负载均衡器节点做并发处理,突破单个负载均衡器节点的能力瓶颈,可承载峰值流量达 1Gbps,支撑千万级别并发访问请求。
-
后端高可用:支持自动检测并隔离不可用的云服务器,从而提高业务的服务能力和可用性。 同时,可以在不影响业务正常访问的情况下,随时通过添加或删减云服务器来调整系统服务能力。
-
灵活转发:支持灵活配置多种转发策略,实现高级的自定义转发控制功能。
-
多协议支持:支持包括 TCP/UDP 协议的四层代理和 HTTP/HTTPS/SSL 协议的七层代理。并且四层、七层都支持透明代理,可以让后端云服务器不做任何更改,直接获取客户端真实 IP。
更多详情,请参见产品特性。
负载均衡组成
负载均衡通常由以下部分组成:
-
负载均衡器实例:接受客户端的传入流量并分发到不同的后端服务器。
-
监听器:您可以向负载均衡器添加一个或多个监听器。监听器需要配置的协议和端口,用于检查来自客户端的连接请求,并根据分配策略和转发策略将请求转发到后端服务器组里的某个后端服务器。
创建监听器时,您可以开启健康检查功能,负载均衡器会根据您的配置定期检查后端服务的运行状态。当后端某台服务器健康检查出现异常时,会自动隔离该后端服务,并将请求转发给其他健康的后端服务,实现高可用性。
-
后端服务器(组):每个监听器会绑定一个后端服务器组,后端服务器组中可以添加一个或多个后端服务器。后端服务器组使用您指定的协议和端口号将请求转发到一个或多个后端服务器。
您可以为后端服务器配置流量转发权重。
负载均衡类型
-
公网负载均衡
公网负载均衡需要为负载均衡器绑定公网 IP,负载均衡器通过公网 IP 对外提供服务,将来自公网的客户端请求按照指定的负载均衡策略分发到后端云服务器进行处理。
使用场景:
-
需要通过服务器集群对公网提供服务,且需要统一的入口,并将公网用户请求合理地分配到服务器集群时。
-
需要对服务器集群做故障容错和故障恢复时。
-
-
私有网络负载均衡
私网负载均衡需要为负载均衡器绑定私有网络,负载均衡器通过虚拟 IP(内网 VIP) 对外提供服务,只能在 VPC 内部被访问,将来自同一个 VPC 的客户端请求按照指定的负载均衡策略分发到后端进行处理。
使用场景:
-
当内部服务器端有多台,需要将客户端请求合理地分发到各台服务器时。
-
当需要对内部服务器集群做故障容错和故障恢复时。
-
当用户想对外屏蔽自己的物理 IP 地址,对客户端提供透明化的服务时。
-
-
公网+私网负载均衡集群
负载均衡器同时绑定公网 IP 和私有网络,既可以通过公网 IP 对外提供服务,也支持通过内网 VIP 对外提供服务,将来自公网及同一个 VPC 的客户端请求按照指定的负载均衡策略分发到后端进行处理。
使用场景:
用户对业务进行分离部署,并分别设置访问权限,例如:将 Web 服务器和数据库服务器分开部署,Web 服务器需要对公网用户提供访问,后端数据库服务器只能通过内网进行访问,该场景下,用户就可以使用公网+私网负载均衡器进行集群,将 Web 服务器连接至公网负载均衡器,将相应的数据库服务器连接至私网负载均衡器。公网负载均衡器接收来自公网的请求并分发至后端 Web 服务器,处理后将对数据库的请求发送到私网负载均衡,再由私网负载均衡转发请求至数据库服务器。
负载均衡如何工作
工作原理
负载均衡的工作原理如下:
-
客户端向您部署的应用程序发出请求。
-
负载均衡器中的监听器接收与您配置的协议和端口匹配的请求。
-
监听器根据您的配置将请求转发至相应的后端服务器组。如果配置了转发策略,监听器会根据您配置的转发策略评估传入的请求,如果匹配,请求将被转发至相应的后端服务器组。
-
符合健康检查要求的后端服务器将根据调度算法和配置的转发策略接收流量、处理流量并返回客户端。
调度算法
负载均衡支持轮询、最少连接及源 IP 三种调度算法:
-
轮询算法
依据后端服务器的权重,将请求轮流发送给后端服务器,常用于短连接服务,例如 HTTP 等服务。
-
最少连接
优先将请求发给拥有最少连接数的后端服务器,常用于长连接服务,例如数据库连接等服务。
-
源 IP 算法
将请求的源 IP 地址进行 Hash 运算,得到一个具体的数值,同时对后端服务器进行编号,按照运算结果将请求分发到对应编号的服务器上。这可以使得对不同源 IP 的访问进行负载分发,同时使得同一个客户端 IP 的请求始终被派发至某特定的服务器。该方式适合负载均衡无 cookie 功能的 TCP 协议。