




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Internet 的快速增长使多媒体网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力。对于提供大负载Web 服务的服务器来讲,CPU、I/O 处理能力很快会成为瓶颈。简单的提高硬件性能并不能真正解决这个问题,因为单台服务器的性能总是有限的,尤其是网络请求具有突发性,当某些重大事件发生 时,网络访问就会急剧上升,从而造成网络瓶颈,必须采用多台服务器提供网络服务,并将网络请求分配给这些服务器分担,才能提供处理大量并发服务的能力,因 此服务器的负载均衡技术就成为建立一个高负载Web 站点的关键性技术。(一)Nginx 及负载均衡介绍1.高性能We
2、b 服务器NgnixNginx (“Engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。Nginx 已经在俄罗斯最大的门户网站 Rambler Media(www.rambler.ru) 上运行了4年多时间,俄罗斯超过20%的虚拟主机平台采用Nginx 作为反向代理服务器。在国内,已经有新浪博客、新浪播客、搜狐通行证、网易新闻、网易博客、金山逍遥网、金山爱词霸、校内网、YUPOO 相册、豆瓣、迅雷看看等多家网站、频道使用Nginx 服务器。Igor 将源代码以类BSD 许可证的形式发
3、布,Nginx 因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2.负载均衡介绍负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡可以通过软件实现也可以通过硬件实现,软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,它 的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。而硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设 备,这种设备我们通常称之为负载均
4、衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量 管理,可达到最佳的负载均衡需求。一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵,一台F5 BIG-IP 等四/七层负载均衡交换机的价格在十几万到上百万。现代负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡(NAT 负载均衡)将一个Internet 上合法注册的IP 地址映射为多个内部服务器的IP 地址,对每次 TCP连接请求动态使用其中一个内部IP 地址,达到负载均衡的目的。第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HT
5、TP 服务器群的应用。第七层负载均衡技术通过检查流经的HTTP 报头,根据报头内的信息来执行负载均衡任务。(二)Nginx 负载均衡优点及适用环境1.Nginx 负载均衡优点Nginx 负均衡实现比较简单,可配置性很强,可以按URL做负载均衡,默认对后端有健康检查的能力。后端机器少的情况下(少于10 台)负载均衡能力表现好。其优点主要有:(1)功能强大,支持高并发连接,内存消耗少:官方测试能够支撑5 万并发连接,在实际生产环境中跑到23 万并发连接数,且在3 万并发连接下,开启的10 个Nginx 进程才消耗150M 内存(15M*10=150M)。(2)成本低廉:Nginx 为开源软件,可以
6、免费使用。(3)Nginx 工作在网络的7 层,所以它可以针对Http应用本身来做分流策略,比如针对域名、目录结构等进行分流,可以实现多种分配策略,如:可以实现IP hash 等分配策略。第七层负载均衡有着突出的优点,主要表现在如下几个方面:1)通过对HTTP 报头的检查,可以检测出HTTP400、500和600 系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。2)可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能。3)能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是Asp、C
7、GI 等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性。(4)Nginx 对网络的依赖较小,理论上只要ping 得通,网页访问正常,Nginx 就能连得通,Nginx 同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路(5)Nginx 安装和配置比较简单,后端转向与业务配置分离,非常灵活,配置文件非常简单,风格跟程序一样通俗易懂。测试起来也很方便,因为它基本能把错误用日志打印出来。(6)Nginx 能承受很高负载且稳定,用于反向代理,宕机的概率微乎其微。 (7)Nginx 可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等
8、等,并且会把返回错误的请求重新提交到另一个节点。内置的健康检查功能:具有容 灾冗余功能,可以针对后端返回的情况判断,如果 NginxProxy 后端的某台 Web 服务器宕机了,不会影响前端访问。(8)节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。2.Nginx 负载均衡的适用环境 Nginx 工作在网络的7 层,由于第七层负载均衡受到其所支持的协议限制(一般只有Http),并且检查HTTP 报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。因此,用Ngnix 来做负载均衡比较适合于10 台以下服
9、务器的网站,当然,如果网站的流量并不是很大(日PV<1000万),即使机器也不少,仍可以考虑用Nginx 做负载均衡。 此外,对于有资金购买四/七层负载均衡交换机的大型网站,Nginx 也有用武之地,由于大型网站的四/七层交换机承担的并发数非常高,而内容转发规则等七层交换业务,通常用不到负载均衡交换机(如F5 BIG-IP)的四层硬件芯片,却极大地消耗了F5 的CPU 和内存资源,成为高并发应用的制约条件。而Nginx 的出现,成为了F5 BIG-IP 七层交换的有力补充。(三)使用Nginx 实施负载均衡的方法1.负载均衡实施要素 负载均衡方案应是在网站建设初期就应考虑的问题,不过有时
10、随着访问流量的爆炸性增长,超出决策者的意料,这也就成为不得不面对的问题。当我们在引入某种 负载均衡方案乃至具体实施时,像其他的许多方案一样,首先是确定当前及将来的应用需求,然后在代价与收效之间做出权衡。负载均衡策略的优劣及其实现的难易 程度有两个关键因素:一是负载均衡算法,二是对网络系统状况的检测方式和能力。考虑到服务请求的不同类型、服务器的不同处理能力以及随机选择造成的负载分 配不均匀等问题,为了更加合理的把负载分配给内部的多个服务器,就需要应用相应的能够正确反映各个服务器处理能力及网络状态的负载均衡算法,而良好的负载 均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力。(
11、可用到论文里面)2.Nginx 负载均衡的实现Nginx 的负载均衡是一个基于内容和应用的七层交换负载均衡,是以反向代理服务器方式实现负载均衡。因此使用Nginx 实现服务器负载均衡的关键在于ngx_http_upstream_hash_module 模块的使用和设置Nginx 反向代理配置。(1)Nginx 的upstream 模块所支持负载均衡的算法:1)默认的方式是轮询,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。2)权重轮询均衡:可以指定轮询几率,权重(weight)和访问比率成正比,用于后端服务器性能不均的情况。 3)每个请求按访问ip 的hash
12、结果分配,这样每个访客固定访问一个后端服务器,在有些应用情况下,需要将来自同一客户端的所有请求都分配给同一台服务器去负担,例如服务器将客户端注 册、购物等服务请求信息保存的本地数据库的情况下,把客户端的子请求分配给同一台服务器来处理就显的至关重要了。4)按后端服务器的响应时间来分配请求,响应时间短的优先分配。5)按访问url 的hash 结果来分配请求,使每个url 定向到同一个后端服务器,后端服务器为缓存时比较有效。在nginx.conf 配置文件中,用upstream 指令定义一组(以4 台服务器为例)负载均衡后端服务器池:upstream servername server 192.16
13、8.1.10:80 weight=1 max_fails=3 fail_timeout=60s;server 1:80 weight=1 max_fails=3 fail_timeout=60s;server 2:80 weight=1 max_fails=3 fail_timeout=60s;server 3:80 weight=1 max_fails=3 fail_timeout=60s; 其中,servername 是服务器组名;Weight:设置服务器的权重,默认值是1,权重值越大那么该服务器被访问到的几率就越大;max
14、_fails 和fail_timeout :这两个是关联的,如果某台服务器在fail_timeout 时间内出现了max_fails 次连接失败,那么Nginx 就会认为那个服务器已经宕机,从而在fail_timeout 时间内不再去查询它。(2)设置Nginx 的反向代理配置 反向代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web 服务器,反向代理方式是多个客户使用它访问内部Web 服务器,使用反向代理服务器可以将请求转发给内部的Web 服务器,从而提升静态网页的访问速度。因此可以使用这种技术,让代理服务器将请求均匀转发给多台内部Web 服务器之一上,从而达到负载
15、均衡的目的。 使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能,具备额外的安全性,外部客户不能直接访问真实的服务器。 并且实现起来可以实现较好的负载均衡策略,将负载可以非常均衡的分给内部服务器,不会出现负载集中到某个服务器的偶然现象。在nginx.conf 配置文件中,进行反向代理配置:serverlisten 80;server_name *;location /proxy_pass http:/servername;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote
16、_addr;access_log off;其中:proxy_pass http:/servername 用于指定反向代理的服务器池; proxy_set_header Host $host 当后端Web服务器上也配置有多个虚拟主机时,需要用该Header 来区分反向代理哪个主机名;proxy_set_header X-Forwarded-For$remote_addr; 如果后端Web 服务器上的程序需要获取用户IP,就从该Header 头获取。3.Nginx 负载均衡的双机热备 Nginx 处理所有流量受限于机器I/O 和配置;本身的Bug也还是难以避免的;Nginx 没有现成的双机热备方案
17、,所以跑在单机上还是风险较大,单机上的事情全都很难说。因此,可以通过KeepAlived 来实现Nginx 负载均衡的双机热备。正常情况下,两台Nginx 负载均衡服务器全部处于活动状态,对外提供服务。通过两台服务器之间的互相检测机制,当主服务器上的检测程序发现自身的Nginx 无法访问时,停止绑定虚拟IP,改由备用服务器绑定虚拟IP,同时由主服务器给网关发送Arping 包,保证了网关上IP、MAC 地址对应关系能够马上更改,能够做到强行接管虚拟IP。4.在Nginx 负载均衡服务器上设置缓存,加快服务器响应速度 Nginx 从0.7.48 版本开始,支持了类似Squid 的缓存功能,缓存把URL 及相关组合当作Key,用md5 编码哈希后保存。对于修改实时性要求不高的图片、Flash、CSS 样式文件、JavaScript 文件,可以在Nginx 反向代理(负载均衡)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理人员的职业操守与师德师风心得体会
- 矿山开采安全防疫措施
- 体育俱乐部办公室职责说明
- 2025年高中音乐课堂实践心得体会
- 家庭医生签约服务的病历质控流程
- 《还乡》中的情感共同体研究
- 服务化转型对企业现金持有的影响研究
- ALDH2基因多态性与心血管代谢风险因素的相关性研究
- 空调清洗项目安全评估报告
- 基于面板数据的我国CPI影响因素分析与预测
- 《政府采购管理研究的国内外文献综述》5500字
- 糖尿病护理查房提出问题
- 回收设施布局与优化-深度研究
- 2024年国网浙江省电力有限公司招聘考试真题
- 微专题2 质量守恒定律的应用(解析版)
- 分析化学考试题(附参考答案)
- 广东省广州市越秀区2025年中考一模历史模拟试题(含答案)
- 森林无人机灭火技术集成-深度研究
- 股份转让协议模板
- 利他思维培训课件
- 2025年北京铁路局集团招聘笔试参考题库含答案解析
评论
0/150
提交评论