目录:
负载均衡是什么
负载均衡的作用
IP地址重定向—HTTP重定向
DNS负载均衡
反向代理服务器
IP负载均衡
直接路由(数据链路层)
IP隧道
负载均衡是什么:
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡(Load Balance) 其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡的作用:
- 解决 并发 压力,提高应用处理性能(增加吞吐量,加强网络处理能力)
- 提供故障转移,实现 高可用;
- 通过添加或减少服务器数量,提供网站 伸缩性(扩展性);
- 安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)
负载均衡有 硬件 和 软件 两种
目前主流的软件负载均衡分为四层和七层
LVS属于四层负载均衡,工作在tcp/ip协议栈上,通过修改网络包的ip地址和端口来转发,由于效率比七层高,一般放在架构的前端。
LVS ( Linux Virtual Server ) ,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
可伸缩网络服务的几种结构,它们都需要一个前端(后端的)的负载调度器(或者多个进行主从备份)。
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
七层的负载均衡有nginx,haproxy,apache等,工作在应用层, 因此可以将HTTP请求等应用数据发送到具体的应用服务器,如将图片请求转发到特定的服务器上。总之可以做到更智能的负载均衡,这些功能在四层负载均衡上不好实现,一般放在架构的后面位置,布置在应用服务器前面。
负载均衡都是工作在应用层的
IP地址重定向
HTTP重定向
Web 服务器可通过Http 响应头信息中的 Location 标记来返回一个新的 URL,浏览器自动去访问这个新的 URL。
实现: 可以通过Web应用程序代码实现你想到的调度策略,如可根据请求的URL的不同来进行合理的过滤和转移。
HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算一台真实的服务器地址,并将真实的服务器地址写入HTTP重定向响应中(响应状态码302)返回给浏览器,然后浏览器再自动请求真实的服务器。
优点: 比较简单
缺点: 浏览器需 要每次请求两次服务器才能拿完成一次访问,性能较差;重定向服务器自身的处理能力有可能成为瓶颈。因此这种方案在实际使用中并不见多。
DNS负载均衡
DNS负责将用户请求的域名映射为实际的IP地址,这种映射可以是一对多的( DNS的A记录,用来指定域名对应的IP地址),这样DNS服务器便充当负载均衡调度器。大型网站总是部分使用DNS解析,作为第一级负载均衡。
DNS节省了所谓的主站点,DNS服务器已经充当了主站点的职能。常见的策略是对多个A记录进行RR(轮询)
但在使用DNS均衡负载时,由于DNS数据刷新的延迟问题,无法确保用户请求的完全均衡。 而且,一旦其中某台服务器出现故障,即使修改了DNS配置,仍然需要等到新的配置生效后,故障服务器才不会被用户访问到。 目前,DNS负载均衡仍在大量使用,但多用于实现“多地就近接入”的应用场景。
优点
- 使用简单:负载均衡工作,交给DNS服务器处理,省掉了负载均衡服务器维护的麻烦
- 提高性能:可以支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能;
缺点
- 可用性差:DNS解析是多级解析,新增/修改DNS后,解析时间较长;解析过程中,用户访问网站将失败;
- 扩展性低:DNS负载均衡的控制权在域名商那里,无法对其做更多的改善和扩展;
- 维护性差:也不能反映服务器的当前运行状态;支持的算法少;不能区分服务器的差异(不能根据 系统与服务的状态来判断负载)
反向代理服务器
反向代理服务器的核心工作是转发HTTP,它工作在HTTP层面,因此,基于反向代理的负载均衡也称为七层负载均衡。
任何对于实际服务器的HTTP请求都必须经过调度器;调度器必须等待实际服务器的HTTP响应,并将它反馈给用户。
优点:部署简单,处于http协议层面。
缺点:使用了反向代理服务器后,web 服务器地址不能直接暴露在外,因此web服务器不需要使用外部 IP地址(公网),而反向代理服务作为沟通桥梁就 需要配置双网卡、外部内部两套IP地址。不适合视频类,直播 类等高流量业务
IP负载均衡
网络地址转换(NAT)负载均衡工作在 传输层,对数据包中的IP地址和端口进行修改,从而达到转发的目的,称为四层负载均衡。
NAT服务器(前端服务器)必须作为实际服务器(后端服务器)的网关,否则数据包被转发后将一去不返。
优点: 在内核进程完成数据分发,比在应用层分发性能更好。
缺点: 所有请求响应都需要经过负载均衡服务器,集群最大吞吐量受限于负载均衡服务器网卡带宽。
直接路由(数据链路层)
这种方式工作在数据链路层。
它修改数据包的目标MAC地址,并没有修改目标IP(因为这种转发工作在数据链路层,它对上层端口无能为力),然后发给实际的服务器,实际服务器的响应数据直接发回给用户,而不用经过调度器。但实际服务器必须接入外网,而且不能将调度器作为默认网关,要给实际服务 器添加和调度器IP地址相同的IP别名。
公用一个虚拟ip,对外网进行数据回复
优点:不需要负载均衡服务器进行地址的转换。数据响应时不需要经过负载均衡服务器。
缺点:配置复杂。
IP隧道
基于IP隧道的负载均衡系统也可以使用LVS(Linux Virtual Server)来实现,称为LVS-TUN。与LVS-DR 不同的是,实际服务器和调度器可以不在同一个WAN网段,调度器通过IP隧道技术来转发请求到实际服 务器,所以实际服务器必须有合法的IP地址。
基于IP隧道的请求转发机制,是将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据包可以直接到达用户端。
基于IP隧道的独特方式,可以将实际服务器部署在不同的地域并根据就近原则转移请求,比如一些CDN 服务器就是基于IP隧道技术实现的。