知识总结4:负载均衡⾯试题⼤全(四层七层负载均衡对⽐详
解+nginxlvshaproxy区。。。
⽬录
负载均衡介绍
1.什么是负载均衡
负载均衡是由多台服务器以对称的⽅式组成⼀个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务⽽⽆须其他服务器的辅助。
通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某⼀台服务器上,⽽接收到请求的服务器独⽴地回应客户的请求。均衡负载能够平均分配客户请求到服务器列阵,借此提供快速获取重要数据,解决⼤量并发访问服务问题。
2.常见的负载均衡器
根据⼯作的协议层可划分为:
四层负载均衡(位于内核层):根据请求报⽂中的⽬标地址和端⼝进⾏调度
七层负载均衡(位于应⽤层):根据请求报⽂的内容进⾏调度,这种调度属于“代理“的⽅式,如varnish
根据软硬件划分为:
硬件负载均衡:
F5 的 BIG-IP;Citrix 的 NetScaler
软件负载均衡:
a.TCP 层:LVS,HaProxy,Nginx;
b.基于 HTTP协议:Haproxy,Nginx,ATS(Apache Traffic Server),squid,varnish;
c.基于 MySQL 协议:mysql-proxy
3.负载均衡分类
1)⼆层负载均衡(mac)
根据OSI模型分的⼆层负载,⼀般是⽤虚拟mac地址⽅式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应. 2)三层负载均衡(ip)
⼀般采⽤虚拟IP地址⽅式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应. (即⼀个ip对⼀个ip的转发, 端⼝全放开)
3)四层负载均衡(tcp)
在三次负载均衡的基础上,即从第四层"传输层"开始, 使⽤"虚拟ip+port"接收请求,再转发到对应的机器。四层通过虚拟IP+端⼝接收请求,然后再分配到真实的服务器;
4)七层负载均衡(http)
从第七层"应⽤层"开始, 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。
我们运维中最常见的四层和七层负载均衡,这⾥重点说下这两种负载均衡。
4.四层和七层负载均衡之间的区别
1) 从技术原理上分析
所谓四层负载均衡,也就是主要通过报⽂中的⽬标地址和端⼝,再加上负载均衡设备设置的服务器选择⽅式,决定最终选择的内部服务器。
以常见的TCP为例,负载均衡设备在接收到第⼀个来⾃客户端的SYN 请求时,即通过上述⽅式选择⼀个最佳的服务器,并对报⽂中⽬标IP地址进⾏修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建⽴,即三次握⼿是客户端和服务器直接建⽴的,负载均衡设备只是起到⼀个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报⽂的同时可能还会对报⽂原来的源地址进⾏修改。四层负载均衡在传输层执⾏,它处理消息的传递,但不考虑消息的内容。
所谓七层负载均衡,也称为“内容交换”,也就是主要通过报⽂中的真正有意义的应⽤层内容,再加上负载均衡设备设置的服务器选择⽅式,决定最终选择的内部服务器。
以常见的TCP为例,负载均衡设备如果要根据真正的应⽤层内容再选择服务器,只能先代理最终的服务器和客户端建⽴连接(三次握⼿)后,才可能接受到客户端发送的真正应⽤层内容的报⽂,然后再根据该报⽂中的特定字段,再加上负载均衡设备设置的服务器选择⽅式,决定最终选择的内部服务器。负
载均衡设备在这种情况下,更类似于⼀个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建⽴TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更⾼,处理七层的能⼒也必然会低于四层模式的部署⽅式。七层负载均衡不同于四层负载均衡,它在⾼级应⽤层上执⾏,会处理每个消息的实际内容。它可以根据消息内容(如URL或cookie)做出负载均衡决策。随后,七层负载均衡与选定上有服务器建⽴新的TCP连接并将请求写⼊服务器。
2)总体对⽐
4.1) 智能性
七层负载均衡由于具备OIS七层的所有功能,所以在处理⽤户需求上能更加灵活,从理论上讲,七层模型能对⽤户的所有跟服务端的请求进⾏修改。例如对⽂件header添加信息,根据不同的⽂件类型进⾏分类转发。四层模型仅⽀持基于⽹络层的需求转发,不能修改⽤户请求的内容。
4.2) 安全性
七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来⾃⽹络的攻击;四层模型从原理上讲,会直接将⽤户的请求转发给后端节点,⽆法直接抵御⽹络攻击。
4.3) 复杂度
四层模型⼀般⽐较简单的架构,容易管理,容易定位问题;七层模型架构⽐较复杂,通常也需要考虑结合四层模型的混⽤情况,出现问题定位⽐较复杂。
4.4) 效率⽐
四层模型基于更底层的设置,通常效率更⾼,但应⽤范围有限;七层模型需要更多的资源损耗,在理论上讲⽐四层模型有更强的功能,现在的实现更多是基于http应⽤。
5.如何解决负载均衡器成为瓶颈的问题?
通过修改tcp报⽂的源地址和⽬的地址,使从web服务器中返回的数据直接返回到客户端,这是七层负载均衡⽆法做到的,因为tcp三次握⼿建⽴在客户端与负载均衡服务器之间,http协议基于tcp协议,建⽴好tcp链接后才传送http报⽂,收到http报⽂说明负载均衡器和客户端已经建⽴了tcp连接,⽽web服务器和客户端的tcp链接都没建⽴,怎么回传数据给客户端呢。以上的办法会出现问题:所有集⾥的主机都是内⽹ip,⽆法跟外界联系。
解决⽅案1:
如果能买到那么多外⽹Ip地址来⽤,然后在tcp链接要建⽴时负载均衡给真正的web服务器,让客户端和服务器建⽴tcp链接
解决⽅案2:
引⽤⼀句话:计算机所有的问题都可以通过建⽴⼀层虚拟层解决。
可以通过将所有服务器主机ip虚拟化成负载均衡服务器的ip,这样服务器集的所有主机都可以访问外界⽹络,因为ip地址(⽹络层,三层)都是相同,所以只能通过第⼆层来分辨数据流向,修改数据链路层(⼆层)⽬的主机的MAC地址,使请求发到web服务器上,然后才真正建⽴起tcp连接,然后web服务器因为可以联⽹,所以可以直接返回数据给客户端
Nginx
优点
⼯作在7层,并发量可以达⼏万次,可以针对http做分流策略
对⽹络稳定性的依赖⾮常⼩,理论上能ping通就能进⾏负载功能。
Nginx可以通过端⼝检测到服务器内部的故障,如根据服务器处理⽹页返回的状态码、超时等,并会把返回错误的请求重新提交到另⼀个节点。
正则表达式⽐HAProxy强⼤安装,配置,测试简单,通过⽇志可以解决多数问题
缺点
仅仅⽀持http,https,mail协议,应⽤⾯⼩
监控检查仅通过端⼝,⽆法使⽤url检查
LVS
优点
负载能⼒强,⼯作在4层,仅作ip与端⼝分发之⽤,没有流量的产⽣对内存,CPU消耗低
配置性低,没有太多可配置性,减少⼈为错误
应⽤⾯⼴,⼏乎可以为所有应⽤提供负载均衡,包括http、数据库、室等等。
缺点
不⽀持正则表达式,不能实现动静分离
如果⽹站架构庞⼤,LVS-DR配置⽐较繁琐
HAProxy
优点
能够补充Nginx的⼀些缺点,如⽀持session,cookie功能,可以通过url进⾏健康检查
本⾝就只是⼀款负载均衡软件,效率,负载均衡速度,⾼于Nginx,低于LVS
HAPproxy⽀持TCP,可以对MySQL进⾏负载均衡
调度算法丰富,有⼋种
缺点
正则弱于nginx
不⽀持HTTP cache功能。现在不少开源的lb项⽬,都或多或少具备HTTP cache功能。
⽇志依赖于syslogd,不⽀持apache⽇志
⽐较HAProxy Nginx LVS Apache
简介⾼可⽤、负载均衡且基于
TCP和HTTP应⽤的代理,
⽀持⾼并发,多集反
代。
⾼性能http和反向代理服务器、
邮件代理服务器,⽀持⾼并发,
轻量级Web,低系统资源消耗。
Linux虚拟服务器,常⽤
VS/NAT、VS/TUN和
VS/DR,三种模式负载均
衡。
⾼性能Web服务器,⽀持代理,
市场份额很⾼。
优点缺点1、抗负载能⼒强,负载均
衡速度⾼。
2、⽀持session保
持,Cookie引导,可通过
url检测后端服务器健康状
态。
3、也可做MySQL、Email
等负载均衡。
4、⼀般不做Web服务器的
Cache。
1、抗负载能⼒强。
2、http、https、Emai协议功
能较好,处理相应请求快。
3、Web能⼒强,配置简单,⽀
持缓存功能、适⽤动静分离,低
内存消耗。
4、不⽀持session直接保持,但
可通过ip_hash解决,通过端⼝
对后端服务器健康检查。
1、抗负载能⼒强。
2、通过vrrp转发(仅分发)
效率⾼,流量通过内核处
servlet工作原理和工作流程理,没有流量产⽣。(理
论)
3、相当稳定可靠。
4、不⽀持正则,不能做动静
分离,配置略复杂,需要IP略
多。
1、Web处理能⼒强,市场份额
很⾼。(不过后期Nginx在Web
⽅⾯越来越好,份额也在增长)
2、Rewrite强⼤,并⽀持很多
模块,扩展很⽅便。
3、Bug少,历史久,⽐较稳
定。
4、处理动态请求⽐Nginx好。
⽀持算法1、轮循
Round-robin
2、带权轮循
Weight-round-robinweb前端基础面试题
3、原地址保持)
Source
4、RI请求URL
高薪php教程
rdp-cookie(根据
cookie)checkbox的值是什么类型
1、轮循
Round-robin
2、带权轮循
Weight-round-robn
3、Ip哈希
Ip-hash
1、rr(轮循)
2、wrr(带权轮循)
3、lc(最⼩连接)、
4、wlc(权重最⼩连接)
通过相关模块实现代理
官⽹www. jquery 下载大文件
是否
免费
免费免费免费免费
虚拟
主机
⽀持⽀持不⽀持 ⽀持
七层(常⽤)七层(常⽤)四层(常⽤)不常⽤
七层重量级,四层轻量级七层重量级,四层轻量级四层重量级功能略差
热备
Keepalived+其它Keepalived+其它Keepalived+其它Keepalived+其它
负载均衡参考标准1、效率,并发处理能⼒、处理数据能⼒。
2、成本、需求、平台。正版win10
LVS基础
1.什么是LVS
LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。LVS 可以达到的技术⽬标是:通过 LVS 达到的负载均衡
技术和 Linux 操作系统实现⼀个⾼性能⾼可⽤的 Linux 服务器集,它具有良好的可靠性、可扩展性和可操作性。从⽽以
低廉的成本实现最优的性能。LVS 是⼀个实现负载均衡集的开源软件项⽬,LVS架构从逻辑上可分为调度层、Server集
2.LVS
的基本⼯作原理
1)当⽤户向负载均衡调度器(Director Server)发起请求,调度器将请求发往⾄内核空间
2) PREROUTING链⾸先会接收到⽤户请求,判断⽬标IP确定是本机IP,将数据包发往INPUT链
3)IPVS是⼯作在INPUT链上的,当⽤户请求到达INPUT时,IPVS会将⽤户请求和⾃⼰已定义好的集服务进⾏⽐对,如果⽤户请求的就是定义的集服务,那么此时IPVS会强⾏修改数据包⾥的⽬标IP地址及端⼝,并将新的数据包发往POSTROUTING链
4) POSTROUTING链接收数据包后发现⽬标IP地址刚好是⾃⼰的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。