【摘自大型网站技术架构】负载均衡的方法

1.http重定向负载均衡

http重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的http请求计算一台真实的web服务器地址,并将该web服务器地址写入http重定向响应中(Location头)

状态码是302,返回给用户浏览器。负载服务器和web服务器,都是公网的IP。

这种负载均衡的有点是比较简单,缺点是浏览器需要两次请求服务器才能完成一次访问,性能比较差,重定向服务器自身可能成为瓶颈,很少使用.

2.DNS域名解析负载均衡

这是利用DNS处理域名解析请求的同时进程负载均衡的一种方案。

在DNS服务器中配置多个A记录,比如www.mysite.com  IN A 114.100.80.1 , www.mysite.com IN A 114.100.80.2,www.mysite.com IN A 114.100.80.3

每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这就达到了负载均衡的目的了。问题来了,那么负载均衡之后的,session如何共享呢?比如第一次负载到服务器A,第二次负载到服务器B,那么如何A服务器保存的session如何在B服务器上也能访问呢?(第一种,将session的值加密保存在cookie,每次访问服务器的时候,带回服务器;第二种,利用memcached, 数据库,redis等,将session保存在一台单独的服务器上,所有的web服务器都可以访问这台session服务器,那么就解决了共享的问题了,一般常用的方法是加密保存在cookie中。)

DNS域名解析负载均衡的优点是将负载均衡的工作转交给DNS,省掉了网站管理维护负载均衡服务器的麻烦,同时许多DNS支持基于地理位置的域名解析,会将域名解析成距离用户地理位置最佳的一个服务器,加快访问速度。缺点是,每一级的DNS都可能缓存A记录,需要长时间才能生效(好像是10分钟),这段时间,DNS依然会解析到已经下线的服务器,导致用户访问失败。

大型网站的架构一般是dns作为第一级的负载均衡,结构是 dns(负载均衡)->内网的负载均衡服务器(比如lvs,nginx)->web服务器

3.反向代理负载均衡(比如varnish, squid, nginx)

反向代理一般用来缓存资源,以改善网站的性能,(第一次访问资源的时候,反向代理会向资源服务器转发请求,然后缓存资源,然后返回给用户;第二次访问的时候,直接从反向代理获取资源,返回给用户,比如nginx的静态资源缓存,cgi缓存;varnish可以缓存资源,如果是.php结尾的请求则转发到fastcgi服务器等),web服务器不直接对外访问,因此web服务器不需要外部的IP,反向代理服务器则需要两个网卡,配置一个外网,一个内网的IP.

缺点是所有的请求和响应都要经过其中转,所以有可能成为瓶颈。

4.IP负载均衡(lvs的Virtual Server via Network Address Translation(VS/NAT)方法,ip地址重写方法,详细的解释可以看关于LVS的文章)

请求到达负载均衡服务器之后,负载均衡服务器根据负载均衡的算法选择一台后端的web服务器ip,然后把请求的目标IP改为web服务器的IP,将请求的源地址改为自身的IP,然后将请求转发给web服务器,这样,请求和响应都会经过负载均衡服务器。另一种做法是将负载均衡服务器同时作为真实物理服务器集群的网关,这样所有的请求都会达到负载均衡服务器。

IP负载均衡是在内核进程完成数据分发的(看lvs的文章有详细的介绍),较反向代理负载均衡(在应用层)有更好的处理性能。但是所有的请求和响应都要经过负载均衡服务器,所以可能成为瓶颈。

5.数据链路层负载均衡(lvs的Virtual Server via Direct Routing(VS/DR))(最高效,使用最多的方法)

数据链路层负载均衡是指在通信协议的数据链路层修改MAC地址进行负载均衡,详细的内容可以看关于LVS的DR方法的介绍。

时间: 2024-10-06 20:51:39

【摘自大型网站技术架构】负载均衡的方法的相关文章

【摘自大型网站技术架构书】应用服务器集群的session管理

由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求能够获得正确的session比单机时复杂. 集群环境下,session管理的主要几种手段 1.session复制 session复制是早期的企业级的使用比较多的一种服务器集群session管理机制.应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每台服务器上都保存所有的session信息,这样任何一台宕机都不会导致session的数据丢失,服务器使用session时,直

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

《大型网站技术架构-核心原理与案例分析》之一: 大型网站架构演化

最近刚刚读完李智慧的<大型网站技术架构-核心原理与案例分析>,对每章重点内容作了一些笔记,以便加深印象及日后查阅. 一.大型网站软件系统的特点 高并发,大流量:需要面对高并发用户,大流量访问. 高可用:系统7X24小时不间断服务. 海量数据:需要存储.管理海量数据,需要使用大量服务器. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户分布范围广,各地网络情况千差万别. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几乎每天都会被黑客攻击. 需求快

大型网站技术架构(七)--网站的可扩展性架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 大型网站技术架构(四)--网站的高性能架构 大型网站技术架构(五)--网站高可用架构 大型网站技术架构(六)--网站的伸缩性架构 扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力. 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性.模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系

大型网站技术架构介绍--squid

一.大型网站技术架构介绍 1.pv高  ip高 并发量 2.大型网站架构重点 1. 高性能:响应时间,TPS,系统性能计数器.缓存,消息队列等. 高可用性High Availability   99.99% 7*24 2.衡量标准:假设环境中一台或者多台服务器宕机,服务是否依然可用.解决关键办法:冗余.资源定位,健康检查.负载均衡,关键服务器冗余:web DB ,及时有效的监控和报警 3.高伸缩性[高可维护性] 是否可以用多台服务器构建集群,是否容易向集群添加新的服务器,新服务是否可提供相同的服

《大型网站技术架构》读书笔记一:大型网站架构演化

一.大型网站系统特点 (1)高并发.大流量:PV量巨大 (2)高可用:7*24小时不间断服务 (3)海量数据:文件数目分分钟xxTB (4)用户分布广泛,网络情况复杂:网络运营商 (5)安全环境恶劣:黑客的攻击 (6)需求快速变更,发布频繁:快速适应市场,满足用户需求 (7)渐进式发展:慢慢地运营出大型网站 二.大型网站架构演化过程 (1)初始阶段网站架构:一台Server就刚需-应用程序.数据库.文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站 (2)应用和数据

大型网站技术架构(四)--网站的高性能架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 网站性能是客观的指标,可以具体体现到响应时间.吞吐量.并发数.性能计数器等技术指标. 1.性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间.如下列出了系统常用的操作响应时间表. 操作 响应时间 打开一个网站 几秒 数据库查询一条记录(有索引) 十几毫秒 机械磁盘一次寻址定位 4毫秒 从机械磁盘顺序读取1M数据 2毫秒 从S

阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章

题目:阅读<大型网站技术架构:核心原理与案例分析>第五.六.七章,结合<XXX需求征集系统>,分析如何增加相应的功能,提高系统的可用性和易用性,撰写一篇1500字左右的博客阐述你的观点 在这一节课上,我们学习了系统质量属性其中的可用性和易用性.那么质量属性是什么呢,质量属性是高于对系统功能(即对系统能力.服务和行为)的基本的要求的.系统质量属性讲重点放在了可用性.可修改性.性能.安全性.可测试性和易用性.从设计师方面,系统质量属性一般存在三个问题:(1)为属性提供的定义并不是可操作