任务分配器
根据服务器的能力(硬件),承担相应的工作,是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案
-
解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);
-
提供故障转移,实现高可用;
-
通过添加或减少服务器数量,提供网站伸缩性(扩展性);
-
安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)
- DNS负载均衡
- 硬件负载(F5)
- 软件负载
当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL。这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转
- 吞吐率限制(负责重定向的主服务器,需要高吞吐量)
- 重定向访问深度不同(重定向的资源处理时间不通,主服务器无感知)
可以实现地理级别的负载 通过配置域名到DNS的服务器,达到一对多的映射,相比http重定向,基于DNS的负载均衡完全节省了所谓的主站点,DNS有浏览器等的600s缓存,不用担心吞吐率限制
一般将DNS作为第一级负载均衡,A记录对应着内部负载均衡的IP地址
- 扩容非实时
- 非高可用,只负责解析ip,不负责探活
- 暴露太多外网ip
反向代理的调度器扮演的是用户和实际服务器中间人的角色
- 调度策略丰富
- 根据实时情况调整策略
- 粘滞会话
对反向代理服务器要求高,需要keeplive监控心跳,单机有上限和时延增加
lvs:Linux Virtual Server,使用集群技术,实现在linux操作系统层面的一个高性能、高可用、负载均衡服务器
在网络层通过修改请求目标地址进行负载均衡
用户请求数据包,到达负载均衡服务器后,负载均衡服务器在操作系统内核进程获取网络数据包,根据负载均衡算法得到一台真实服务器地址,然后将请求目的地址修改为,获得的真实ip地址,不需要经过用户进程处理
- 但是一旦请求的内容过大时,不论是基于反向代理还是NAT,负载均衡的整体吞吐量都差距不大
- 网络是瓶颈,需要转发数据包
数据分发时,不修改ip地址,只修改目标mac地址,配置真实物理服务器集群所有机器虚拟ip和负载均衡服务器ip地址一致,达到不修改数据包的源地址和目标地址,进行数据分发的目的,也称为直接路由模式
优点:性能好;
缺点:配置复杂;
LVS-DR和LVS-TUN都适合响应和请求不对称的Web服务器,如何从它们中做出选择,取决于你的网络部署需要,因为LVS-TUN可以将实际服务器根据需要部署在不同的地域,并且根据就近访问的原则来转移请求,所以有类似这种需求的,就应该选择LVS-TUN。
- 动静分离的场景:DNS负载均衡 + 反向代理负载均衡 + IP负载均衡/链路层负载均衡
- 动态场景:DNS负载均衡 + IP负载均衡 + 链路层负载均衡
- 轮询
- 随机
- 最少链接
- Hash(源地址散列)
- 加权