# SLB入门
随着互联网的快速发展和企业业务量的不断提高,很多IT系统或者网站都需要提供7*24小时的服务,相对于网络技术的发展,服务器处理速度和内存访问速度的增长远远低于网络带宽和应用服务的增长,这就造成了传统的单机模式,往往成为了网络故障点。解决这个问题就需要扩展服务器的能力,通常有垂直扩展和水平扩展两种方式。
垂直扩展是指向单一节点添加设备或将其升级为一个大型节点,水平扩展代表添加更多节点并将数据及工作负载分配到这些节点中。在水平扩展中就需要用到负载均衡的技术,其会把流量分配到多个操作单元上进行执行使其共同完成任务,例如web服务器、FTP服务器、应用服务器等。
负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能力,增强了应用的可用性。负载均衡通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。
负载均衡默认检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。
负载均衡服务主要有三个核心概念:
- 负载均衡实例 (Server Load Balancer instances):一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。
- 监听 (Listeners):监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
- 后端服务器(Backend Servers):一组接收前端请求的ECS实例。您可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
在阿里云的场景中,ALB 和 CLB 都可以用于实现负载均衡的功能,但是两者的实现机制和使用场景略有不同。
ALB(Application Load Balancer)是一种针对应用层协议进行负载均衡的服务。它支持HTTP/HTTPS协议,可以基于URL、Cookie、Header等信息进行流量分发和路由,从而实现对不同业务请求的区分和转发。相比于传统的负载均衡,ALB 更加智能和灵活,可以提供更多的应用层控制和管理,适用于微服务、容器化等场景下的应用。
CLB(Classic Load Balancer)是一种针对传输层协议(TCP/UDP)进行负载均衡的服务。它通过监听端口号和IP地址等信息,将流量分发到后端的多台服务器上,从而实现对请求的负载均衡和高可用。CLB 对于传统的应用架构而言,是一种稳定、可靠的负载均衡服务,适用于网站、应用等场景下的负载均衡。
从功能和使用场景上来看,ALB 更加适用于微服务、容器化等现代应用架构下的负载均衡,而CLB 更加适用于传统的应用架构下的负载均衡。ALB 相比于 CLB 具有更加智能和灵活的路由控制能力,而 CLB 则具有更加稳定和可靠的传输层负载均衡服务。
在具体的应用场景中,需要根据实际需求进行选择。如果需要针对应用层协议进行负载均衡和路由控制,可以选择 ALB;如果需要传统的TCP/UDP传输层负载均衡服务,可以选择 CLB。同时,如果需要更高级别的应用层控制和管理,还可以选择阿里云提供的API网关等服务。
应用型负载均衡(ALB): ALB 是基于应用层的负载均衡器,可以为 Web 应用程序和微服务应用程序提供高可用性和可扩展性。ALB 通过支持 HTTP/HTTPS 协议的流量转发,可以根据请求内容实现更加精细的流量调度。
优势:
- 支持 HTTP/HTTPS 协议,能够提供高效的 Web 应用程序负载均衡。
- 支持 URL 和 Cookie 路由,能够根据请求内容实现更加精细的流量调度。
- 支持会话保持,能够确保客户端会话的连续性。
- 高可用性,支持多可用区部署,能够提供可靠的服务保障。
- 可以配合阿里云容器服务等容器化平台实现自动化部署和扩容。
适用场景:
- 面向 HTTP/HTTPS 协议的 Web 应用程序和微服务应用程序。
- 需要根据请求内容实现更加精细的流量调度和会话保持的场景。
- 需要高可用性和可扩展性的场景。
传统型负载均衡(CLB): CLB 是基于传统网络层的负载均衡器,可以为 TCP 和 UDP 协议的应用程序提供高可用性和可扩展性。CLB 通过 IP 和端口的方式进行流量转发,能够满足更加通用的应用场景。
优势:
- 支持 TCP 和 UDP 协议,能够适用于更广泛的应用场景。
- 支持四层协议的流量转发,性能更高。
- 支持 SNAT,能够隐藏后端服务器的真实 IP 地址。
- 高可用性,支持多可用区部署,能够提供可靠的服务保障。
- 可以与阿里云 ECS 等云服务器实现快速部署和扩容。
适用场景:
- 面向 TCP/UDP 协议的应用程序,例如数据库、邮件服务器等。
- 不需要根据请求内容进行流量调度和会话保持的场景。
- 需要高可用性和可扩展性的场景。