跳至主要內容

13. 代理与负载均衡


13. 代理与负载均衡

代理(Proxy)

代理(Proxy)是位于客户端和目标服务器之间的中介设备或程序。它可以根据不同的需求,代理客户端的请求或响应。代理能够隐藏客户端的真实信息、缓存请求、访问控制、加速响应等。代理服务器根据不同的功能可以分为正向代理和反向代理。


正向代理

正向代理是指客户端通过代理服务器访问外部资源。在此过程中,代理服务器代表客户端发送请求并返回结果,常见的正向代理应用场景有:

  • VPN(虚拟专用网络):VPN 是一种常见的正向代理,它通过加密传输保护客户端的隐私,并能让客户端访问受限区域的网络。
  • 公司网关:在企业内部,正向代理通常用于控制员工访问外部网络。公司网关充当客户端与外部网络之间的代理,控制访问权限、记录流量和阻止有害内容。

反向代理

反向代理是代理服务器位于客户端和一组服务器之间。客户端请求反向代理,而反向代理将请求转发到后端的真实服务器。反向代理的主要作用是隐藏后端服务器的具体位置和信息,同时可以进行负载均衡、缓存、SSL 终止等操作。

  • CDNs(内容分发网络):CDN 通过反向代理缓存静态内容,将用户的请求引导到距离最近的节点。CDN 可以有效提高访问速度,并减轻源服务器的压力。
  • 负载均衡器(Load Balancer):负载均衡器也是反向代理的应用,通过将用户请求分发到多个后端服务器上,提升系统的处理能力和可用性。

负载均衡器(Load Balancer)

负载均衡器是用于分配客户端请求的设备或软件,它将请求合理地分配到多台后端服务器上,从而避免单一服务器的过载,确保高可用性和高性能。


原理

负载均衡的核心思想是通过策略将流量分配给多个服务器,以提高性能和可靠性。负载均衡器充当客户端和后端服务器之间的中介,接收请求后根据选择的策略将请求分发到合适的服务器。


常见的负载均衡策略

  1. 轮询(Round Robin):将请求依次分配给服务器,适用于每台服务器性能相近的场景。
  2. 加权轮询(Weighted Round Robin):根据服务器的处理能力或负载情况,分配更多的请求给更强的服务器。
  3. 最少连接数(Least Connections):将请求分配给当前连接数最少的服务器,适用于负载均衡较为动态的情况。
  4. 地理位置(Location):根据用户的地理位置选择最合适的服务器,通常配合 CDN 使用。
  5. 哈希(Hashing):通过客户端 IP、请求路径等信息生成哈希值,将请求固定路由到某个特定服务器,适用于需要会话保持的场景。

负载均衡的分类

负载均衡器可以根据所操作的网络层级分为不同的类型:

  • Layer 4 负载均衡:操作在传输层(TCP),基于 IP 地址和端口号来决定请求的转发。其优点是速度快,且实现简单,但无法查看应用层的数据。
  • Layer 7 负载均衡:操作在应用层(HTTP),可以分析请求的具体内容,如 URL、请求头等,基于内容来进行智能路由。其缺点是处理速度较慢,但可以实现更灵活和复杂的负载均衡策略。

备用负载均衡器

为了确保高可用性,一般会使用多个负载均衡器的备份方案。当一个负载均衡器发生故障时,另一个负载均衡器可以接管流量,保证服务持续运行。


常见的负载均衡器

  • Nginx:Nginx 是一款开源的高性能 HTTP 和反向代理服务器,同时也可以作为负载均衡器使用。它支持多种负载均衡算法,并且配置灵活,广泛用于大规模的 Web 应用中。
  • AWS Elastic Load Balancing(ELB):AWS 提供的云负载均衡服务,可以自动调节负载,支持自动扩展功能。它可以处理 HTTP/HTTPS 请求,也支持基于 TCP 和 UDP 的负载均衡。
  • Google Cloud Load Balancing:GCP 提供的负载均衡解决方案,支持全球范围内的流量分配,并提供智能路由、自动扩展等功能。