`
gaojingsong
  • 浏览: 1200948 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【六种常见的Web负载均衡原理与实现】

阅读更多

负载均衡(Load Balance)是集群技术(Cluster)的一种应用。负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力。目前最常见的负载均衡应用是Web负载均衡。根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询、IP负载均衡和CDN。其中IP负载均衡可以使用硬件设备或软件方式来实现。

 

一、http重定向

当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL。这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转。

 

二、DNS负载均衡

DNS负责提供域名解析服务,当访问某个站点时,实际上首先需要通过该站点域名的DNS服务器来获取域名指向的IP地址,在这一过程中,DNS服务器完成了域名到IP地址的映射,同样,这样映射也可以是一对多的,这时候,DNS服务器便充当了负载均衡调度器,它就像http重定向转换策略一样,将用户的请求分散到多台服务器上,但是它的实现机制完全不同。

 

 

三、反向代理负载均衡

这个肯定大家都有所接触,因为几乎所有主流的Web服务器都热衷于支持基于反向代理的负载均衡。它的核心工作就是转发HTTP请求。Nginx,Haproxy

相比前面的HTTP重定向和DNS解析,反向代理的调度器扮演的是用户和实际服务器中间人的角色:

1、任何对于实际服务器的HTTP请求都必须经过调度器

2、调度器必须等待实际服务器的HTTP响应,并将它反馈给用户(前两种方式不需要经过调度反馈,是实际服务器直接发送给用户)

 

 

特性:

1、调度策略丰富。例如可以为不同的实际服务器设置不同的权重,以达到能者多劳的效果。

2、对反向代理服务器的并发处理能力要求高,因为它工作在HTTP层面。

3、反向代理服务器进行转发操作本身是需要一定开销的,比如创建线程、与后端服务器建立TCP连接、接收后端服务器返回的处理结果、分析HTTP头部信息、用户空间和内核空间的频繁切换等,虽然这部分时间并不长,但是当后端服务器处理请求的时间非常短时,转发的开销就显得尤为突出。例如请求静态文件,更适合使用前面介绍的基于DNS的负载均衡方式。

4、反向代理服务器可以监控后端服务器,比如系统负载、响应时间、是否可用、TCP连接数、流量等,从而根据这些数据调整负载均衡的策略。

5、反射代理服务器可以让用户在一次会话周期内的所有请求始终转发到一台特定的后端服务器上(粘滞会话),这样的好处一是保持session的本地访问,二是防止后端服务器的动态内存缓存的资源浪费。

 

 

四、IP负载均衡(LVS-NAT)

因为反向代理服务器工作在HTTP层,其本身的开销就已经严重制约了可扩展性,从而也限制了它的性能极限。那能否在HTTP层面以下实现负载均衡呢?

NAT服务器:它工作在传输层,它可以修改发送来的IP数据包,将数据包的目标地址修改为实际服务器地址。

 

 

五、直接路由(LVS-DR)

NAT是工作在网络分层模型的传输层(第四层),而直接路由是工作在数据链路层(第二层),貌似更屌些。它通过修改数据包的目标MAC地址(没有修改目标IP),将数据包转发到实际服务器上,不同的是,实际服务器的响应数据包将直接发送给客户羰,而不经过调度器。

 

 

六、IP隧道(LVS-TUN)

基于IP隧道的请求转发机制:将调度器收到的IP数据包封装在一个新的IP数据包中,转交给实际服务器,然后实际服务器的响应数据包可以直接到达用户端。目前Linux大多支持,可以用LVS来实现,称为LVS-TUN,与LVS-DR不同的是,实际服务器可以和调度器不在同一个WANt网段,调度器通过IP隧道技术来转发请求到实际服务器,所以实际服务器也必须拥有合法的IP地址。

 

 

IP负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。

 

 

F5

F5的全称是F5-BIG-IP-GTM,是最流行的硬件负载均衡设备,其并发能力达到百万级。F5的主要特性包括:

1、多链路的负载均衡和冗余

可以接入多条ISP链路,在链路之间实现负载均衡和高可用。

2、防火墙负载均衡

F5具有异构防火墙的负载均衡与故障自动排除能力。

3、服务器负载均衡

这是F5最主要的功能,F5可以配置针对所有的对外提供服务的服务器配置Virtual Server实现负载均衡、健康检查、回话保持等。

4、高可用

F5设备自身的冗余设计能够保证99.999%的正常运行时间,双机F5的故障切换时间为毫秒级。

使用F5可以配置整个集群的链路冗余和服务器冗余,提高可靠的健康检查机制,以保证高可用。

5、安全性

与防火墙类似,F5采用缺省拒绝策略,可以为任何站点增加额外的安全保护,防御普通网络攻击,包括DDoS、IP欺骗、SYN攻击、teartop和land攻击、ICMP攻击等。

6、易于管理

F5提供HTTPS、SSH、Telnet、SNMP等多种管理方式,包含详尽的实时报告和历史纪录报告。同时还提供二次开发包(i-Control)。

7、其他

F5还提供了SSL加速、软件升级、IP地址过滤、带宽控制等辅助功能。

 

0
0
分享到:
评论

相关推荐

    web集群服务的负载均衡方案选择与实现

    ### Web集群服务的负载均衡方案选择与实现 #### 一、引言 随着互联网技术的飞速发展,用户对Web应用的需求日益增加,这不仅体现在访问量的剧增上,还体现在对服务质量的要求提高上。为了满足这些需求,Web集群服务...

    Linux服务器负载均衡的研究与实现.pdf

    本文主要介绍了负载均衡的基本概念和原理,并基于LVS技术,在Linux平台设计实现了一个高性能、高可伸缩性、高可用性、高性价比的负载均衡系统。该系统可以有效地增强服务的性能和可用性,具有很高的伸缩性和性价比。...

    几种典型的负载均衡算法

    常见的负载均衡算法有很多,下面将对几种典型的负载均衡算法进行介绍。 一、HASH 算法 HASH 算法是一种简单的负载均衡算法,它将请求的 ID 值进行 HASH 操作,然后将其映射到对应的服务器上。在 Baidu 的服务中,...

    Keepalived+Nginx实现Web负载均衡

    ### Keepalived+Nginx 实现 Web 负载均衡 #### 一、场景需求与背景 在现代互联网架构中,随着用户量级的增长及业务复杂度的提升,单一服务器往往难以满足高并发访问的需求,同时也面临着单点故障的风险。为了解决...

    用负载均衡来实现web服务器集群.ppt

    负载均衡是一种网络技术,用于在多个计算资源之间分配网络流量,以优化系统性能、增加可用性和响应速度。在Web服务器集群的场景下,负载均衡器是关键组件,它能够有效地解决单个服务器处理高并发访问时可能出现的...

    用负载均衡来实现web服务器集群PPT资料.ppt

    网络负载均衡的实现方式多样,常见的有硬件负载均衡器和软件负载均衡器,如Nginx、HAProxy等。这些工具可以根据不同的策略进行流量分配,比如轮询、最少连接数、源IP哈希等,以达到最优的资源利用率。 负载均衡技术...

    nginx+redis负载均衡、session共享

    在构建高性能、高可用的Web服务时,"nginx+redis负载均衡、session共享"是一个常见的解决方案。这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP...

    负载均衡

    负载均衡是一种计算机网络服务,它的目的是分散网络流量,提高系统的响应速度和整体处理能力,同时也能增强服务的可用性和可靠性。在IT行业中,负载均衡通常应用于Web服务器、数据库服务器和其他处理大量请求的服务...

    服务器负载均衡技术研究.docx

    常见的负载均衡策略包括轮询、随机、最少连接数等。 原理分析: 服务器负载均衡技术的基本原理是,通过在客户端和服务器之间添加一个负载均衡器,将网络流量分配到多个服务器上。负载均衡器可以位于客户端和服务器...

    负载均衡模拟

    负载均衡是一种网络技术,用于在多个计算资源之间分配网络流量,以优化系统...通过这个项目,我们可以学习到负载均衡的重要性,理解其工作原理,以及在实际编程中如何运用多线程技术来设计和实现一个简单的负载均衡器。

    网络设计服务器负载均衡PPT学习教案.pptx

    本教程主要介绍了几种常见的负载均衡方法。 1. **基于DNS的负载均衡** 基于DNS的负载均衡通过将一个域名解析为多个IP地址来实现。当客户端请求域名时,DNS服务器会随机返回其中一个IP,从而将流量分发到不同的...

    四层和七层负载均衡的区别.docx

    其中,四层和七层负载均衡是两种最常见的负载均衡方式。 四层负载均衡是基于 IP 和端口的负载均衡。它通过虚拟的 IP 和端口来接收请求,然后根据四层信息(如 IP 和端口)来决定如何转发流量。四层负载均衡通常用于...

    Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    在Linux环境中,使用Apache、Tomcat和JK模块实现负载均衡和群集是一项常见的高可用性架构设计,它能够有效地分发网络流量,提高系统的可扩展性和稳定性。Apache作为前端Web服务器,负责接收用户请求并根据配置策略将...

    Tomcat6实现负载均衡

    本教程将聚焦于如何使用Tomcat6实现负载均衡,这是一个常见的Java应用服务器,常用于部署Web应用程序。 首先,我们需要理解负载均衡的基本原理。负载均衡通过将网络流量分发到多个服务器来防止单个服务器过载,从而...

    Go-sslb-Golang超级简单的负载均衡只是一个小项目来达到某种性能

    【标题】"Go-sslb-Golang超级简单的负载均衡只是一个实现特定性能的小项目" 这个项目是基于Golang语言编写的,名为"sslb",它是一个轻量级的负载均衡器。...同时,这也是一个学习Golang和负载均衡原理的实践案例。

    Tomcat集群与负载均衡

    本文将深入探讨Tomcat集群与负载均衡的概念、原理及其实现方式,旨在帮助读者理解如何构建高可用、高并发的Web应用环境。 #### 二、Tomcat集群与负载均衡的核心概念 **1. 集群(Cluster)** 集群是指一组通过网络...

    常见WEB服务器原理以及分析

    在高访问量的场景下,通常会采用服务器集群、负载均衡或CDN(内容分发网络)加速技术来提升性能和可用性。 常见的WEB服务器软件有: 1. IIS(Internet Information Services):这是微软开发的,主要运行在Windows...

    负载均衡技术探讨(LoadBalancing.ppt)

    在本文中,我们将深入探讨负载均衡的基本概念、集群系统体系架构、常见的负载均衡算法以及实现技术,特别是网络层负载均衡和NAT的工作原理。 1. 负载均衡简介: 随着互联网业务的增长,单个服务器的处理能力往往不...

    网站负载均衡解决方案.doc

    13. 负载均衡的分类:有“四层负载均衡”和“七层负载均衡”两种,区别在于工作层次不同。 14. Nginx的配置文件:需要配置worker_processes、events、http、upstream、server等参数,以实现负载均衡和反向代理。 ...

Global site tag (gtag.js) - Google Analytics