关于负载均衡:常用负载均衡方案概述
需要背景面对大量用户拜访,多任务执行,零碎负载会继续升高,目前共有三类解决方案 硬件降级:CPU降级,多外围,内存裁减,这一类纯正靠资本,降级老本极高软件层面:采纳高效率开发语言,比方C/Go/Rust等底层开发语言,能够编译为操作系统间接执行的二进制文件,不像Java/Python等解释型语言须要装置一个语言解释器,导致内存占用较大(尤其是Java吃内存很重大),同时速度也不快业务拆分与分布式:负载平衡,解决高并发拜访与多任务执行问题,技术难度与硬件老本角度衡量较为平衡负载平衡概述将负载(前端的拜访申请,后盾执行的工作)进行均衡,通过负载平衡算法摊派到多个服务器上进行执行,是解决高性能,单点故障高可用,程度伸缩的终极解决方案 成果 减少吞吐量,解决高并发压力(高性能)提供故障转移,解决单节点故障问题(高可用)通过增加或缩小服务器数量,提供网站程度伸缩性(扩展性)网络入口平安防护,在负载平衡设施上做一些过滤,黑白名单等解决,最大水平上保障集群零碎的安全性负载平衡实现技术负载平衡在OSI网络档次中,层级越低,性能越好,然而技术复杂度也越高 DNS负载平衡(七层负载平衡)最早的负载平衡技术,利用域名解析实现负载平衡,在DNS服务器,配置多个DNS记录,这些记录对应的服务器形成集群,大型网站总是局部应用DNS解析,作为第一级负载平衡 比方在不同网络环境下,ping baidu.com命令执行获取到指标设施的IP是不一样的 长处 简略:负载平衡工作交给DNS服务器解决,不须要专门的服务器保护性能高:能够反对基于地址的域名解析,解析成间隔用户最近的服务器地址,防止长链路网络传输,放慢访问速度毛病 可用性差:新增/批改DNS后,解析工夫较长,域名DNS服务器产生变更后,须要期待本地DNS中域名DNS服务器的TTL缓存生效,本地DNS才会从新发动递归查问,而后全国各地DNS能力同步到最新的域名DNS服务器名称,该过程须要一到两天的工夫扩展性低:DNS负载平衡的控制权在域名商,扩展性无限Nginx HTTP负载平衡(七层负载平衡)能够应用配置实现 依据URL、浏览器类别、语言来决定是否要进行负载平衡 长处 对网络稳定性的依赖十分小承当高负载压力且稳固,在硬件不差的状况下个别能撑持几万次的并发量毛病 仅能反对http、https和Email协定,在适用范围下面较小LVS负载平衡(四层负载平衡)用Linux内核集群实现的一个高性能、高可用的负载平衡服务器,具备很好的可伸缩性,可靠性和可管理性 四层负载平衡服务器在承受到客户端申请后,通过批改数据包的地址信息(IP+端口号)将流量转发到应用服务器 长处 抗负载能力强,在负载平衡软件里的性能最强的,对内存和cpu资源耗费比拟低工作稳固,本身有残缺的双机热备计划,如LVS+Keepalived,然而我的项目施行中用得最多的还是LVS/DR+Keepalived无流量,LVS只散发申请,而流量并不从它自身进来,这点保障了均衡器IO的性能不会收到大流量的影响利用范畴比拟广,工作在OSI4层,所以它简直能够对所有利用做负载平衡,包含http、数据库、在线聊天室等等毛病 软件自身不反对正则表达式解决,不能做动静拆散施行操作简单,技术难度高HAProxy负载平衡(七层/四层负载平衡)收费的负载平衡软件,能够运行于大部分支流的Linux操作系统上,HAProxy提供了四层(TCP)和七层(HTTP)负载平衡能力,具备丰盛的性能 长处 反对TCP协定的负载平衡转发反对Session的放弃,Cookie的疏导,同时反对通过获取指定的url来检测后端服务器的状态反对虚拟主机的反对负载平衡策略十分多毛病 不反对HTTP cache性能重载配置的性能须要重启过程多过程模式反对不够好IP负载平衡(三层负载平衡)负载平衡服务器对外仍然提供一个浮动IP,但集群中不同的机器采纳不同的IP地址,当负载平衡服务器承受到申请之后,依据不同的负载平衡算法,通过IP将申请转发至不同的实在服务器,在网络层通过批改申请指标IP地址进行负载 长处 在内核过程实现数据散发,比在应用层散发性能更好毛病 所有申请响应都须要通过负载平衡服务器,集群最大吞吐量受限于负载平衡服务器网卡带宽链路层负载平衡(二层负载平衡)负载平衡服务器对外仍然提供一个浮动IP,配置实在物理服务器集群所有机器虚构IP和负载平衡服务器IP地址统一,集群中不同的机器采纳雷同IP地址,但机器的MAC地址不一样,当负载平衡服务器承受到申请之后,通过改写报文的指标MAC地址的形式将申请转发到指标机器实现负载平衡,达到不批改数据包的源地址和指标地址,进行数据散发的目标 长处 性能好毛病 配置简单负载平衡算法负载均衡器通过负载平衡算法决定申请转发到哪台设施 轮询Round Robin 程序循环将申请一次程序循环地连贯每个服务器,以轮询的形式顺次申请调度不同的服务器;实现时,个别为服务器带上权重 长处:服务器申请数目雷同;实现简略、高效;易程度扩大 毛病:服务器压力不一样,不适宜服务器配置不同的状况;申请到目标结点的不确定,造成其无奈实用于有写操作的场景 利用场景:数据库或应用服务层中只有读的场景 比率Ratio 给每个服务器调配一个加权值为比例,根椐这个比例,把用户的申请调配到每个服务器 优先权Priority 给所有服务器分组,给每个组定义优先权,当最高优先级中所有服务器呈现故障,将申请送给次优先级的服务器组,这种形式,理论为用户提供一种热备份的形式 起码连贯 将申请调配到连接数起码的服务器 长处:依据服务器以后的申请解决状况,动态分配 毛病:算法实现绝对简单,须要监控服务器申请连接数 最快模式Fastest 传递连贯给那些响应最快的服务器 察看模式Observed 连贯数目和响应工夫这两项的最佳均衡为根据为新的申请抉择服务器 预测模式Predictive 利用收集到的服务器以后的性能指标,进行预测剖析,抉择一台服务器在下一个工夫片内,其性能将达到最佳的服务器相应用户的申请 动静性能调配Dynamic Ratio-APM 依据收集到的应用程序和应用服务器的各项性能参数,动静调整流量调配 动静服务器补充Dynamic Server Act 当主服务器群中因故障导致数量缩小时,动静地将备份服务器补充至主服务器群 服务质量QoS 按不同的优先级对数据流进行调配 服务类型ToS 按不同的服务类型(在 Type of Field 中标识)负载平衡对数据流进行调配 ...