【DevOps构筑篇】负载均衡器及其不同技术策略
推荐超级课程:
@TOC
什么是负载均衡器?
负载均衡器将传入的网络流量分发到多个服务器上,以确保没有单个服务器承载太大负载。通过有效地分散请求,它们提高了应用程序的容量和可靠性。以下是负载均衡中常用的一些策略和算法:
1. 轮询
轮询是最简单的负载均衡形式,其中池中的每个服务器按顺序和循环顺序获取请求。当到达最后一个服务器时,它会循环回到第一个。
对于规格类似且负载均匀分配的服务器来说,这种方法效果很好。
2. 最少连接
最少连接算法将流量引导到具有最少活动连接的服务器。当存在各种长度和需求的会话时,这是特别有用的。
对于较长任务或当服务器负载不均匀分布时,这是理想的选择。
3. 最少响应时间
这个以响应时间最低且具有最少活动连接的服务器为目标的算法。
当目标是为请求提供最快的响应时,这是有效的。
4. IP哈希
IP哈希根据客户端IP地址的哈希确定接收请求的服务器。这确保客户端始终连接到同一台服务器。
在应用程序中需要会话持久性的情况下非常有用,这样重要的是客户端能够始终连接到同一台服务器。
5. 加权算法
还有一些以上方法的变种可以加权。例如,在加权轮询或加权最少连接中,服务器分配的权重通常基于它们的容量或性能指标。
当池中的服务器具有不同能力(例如CPU,RAM)时,加权算法非常有效。
6. 地理算法
这些是基于位置的算法,根据用户地理位置最接近的服务器或基于特定区域要求来指导请求。
在全球服务中很有用,其中减少延迟和遵守当地法规是优先事项。
7. 一致性哈希
一致性哈希使用哈希函数将数据分布到各个节点上。
想象一个哈希空间形成一个圆圈,端点环绕到开始,通常称为“哈希环”。节点(服务器)及数据(如存储值的密钥)都被哈希到这个环上。
这也确保了相同的客户端始终连接到同一台服务器。
健康检查
负载均衡器的一个重要特性是持续检查服务器的健康状态,以确保流量只进入在线且响应正常的服务器。如果服务器失败,负载均衡器将停止将流量发送到它,直到它恢复为止。
负载均衡器示例
负载均衡器有各种形式,包括硬件设备、软件解决方案和基于云的服务。以下是一些示例:
硬件负载均衡器
- F5 BIG-IP:一个广泛使用的硬件负载均衡器,以其高性能和广泛的功能集而闻名,提供本地流量管理、全球服务器负载平衡和应用程序安全。
- Citrix ADC:以前被称为 NetScaler,提供负载均衡、内容切换和应用程序加速。
软件负载均衡器
- HAProxy:一种流行的开源软件负载均衡器和代理服务器,用于TCP和基于HTTP的应用程序。以其效率、可靠性和低内存占用而闻名。
- NGINX:经常用作web服务器,NGINX也作为HTTP和其他网络协议的负载均衡器和反向代理。
基于云的负载均衡器
- AWS弹性负载均衡(ELB):作为AWS云服务的一部分提供多种类型的负载均衡器,包括应用程序负载均衡器、网络负载均衡器和经典负载均衡器。
- Microsoft Azure负载均衡器:为在Azure上运行的应用提供高可用性和网络性能。它支持入站和出站场景。
- Google Cloud负载均衡:一种完全分布式的、软件定义的、托管服务,适用于所有流量。提供各种类型,包括HTTP(S)、TCP/SSL和UDP负载均衡。
虚拟负载均衡器
- VMware NSX高级负载均衡器(Avi Networks):提供一个软件定义的应用交付控制器,可在本地部署或云中部署。
当负载均衡器故障时会发生什么?
负载均衡器基本上是一个单点故障,如果它故障,所有服务器对客户端都不可用。
为避免或减少负载均衡器故障的影响,通常采取以下几种策略:
冗余性
通过使用多个负载均衡器(通常成对)实现冗余负载均衡是一种常见方法。如果一个故障,另一个接管,这种方法称为故障转移。
健康检查和监控
持续监控和健康检查负载均衡器本身可以确保及早发现任何问题,并在造成重大中断之前进行处理。
自动扩展和自愈系统
一些现代基础设施设计为自动检测负载均衡器的故障,并在无需手动干预的情况下用新实例替换它。
DNS故障转移
在某些配置中,DNS故障转移可以将流量从不再接受连接的IP地址(如失败的负载均衡器)重新路由到预先配置的备用IP。