基于Nginx的Web服务器负载均衡策略改进与实现
来源:用户上传
作者:
摘 要:互联网产品随着经济的快速发展越来越深地融入进普通人的生活,网民的数量激增,各网站的访问数字也呈逐年上升的态势。但是由于各个地区网民人数的差异加上经济水平的不同,传统的负载均衡策略存在改进的空间,该文针对如何平衡负载进行了研究,分析了Nginx系统的现状,提供了负载均衡算法,以优化Nginx的性能。
关键词:Nginx Web服务器 性能优化 负载均衡
中图分类号:TP393 文献标识码:A 文章編号:1672-3791(2019)04(b)-0017-02
1 Nginx的研究现状
Nginx是俄罗斯人塞索耶夫所撰写的涉及到HTTP服务器的一款反向代理软件,是一种和POP3、SMTP、IMAP相同的代理服务器。虽然这款服务器产生和发展的时间都不够长,但是这种服务器已经具备了一些鲜明的特点,使得其稳定性和高消耗性能够满足开源和代码编写的基本需求,所以这种服务器在很多开发人员当中受到欢迎,一些公司也大量采用,NGXPAGESPEED是一种谷歌借助Nginx所开发的模块,这种模块飞速地提升了网页打开的速度,并且可以帮助网页降低访问的延迟。Nginx在我国的应用非常广泛,已经有了大量的人员在研究这些项目,并且根据这个模块开发出了不同的项目。针对大量网站的访问申请,在这个平台的基础上,增加上更具特色的功能和特性,可以基本实现负载均衡。关于负载均衡的研究一直是这个领域的特色所在,相同的领域也一直有不同的算法被开发出来,分布式计算和云计算相关的新算法不断被研究出来,在这个领域形成了鲜明的特色,节点和负载的性能经常影响负载的衡量和权重,负载的值如果非常大,那么其权重一般也非常大。Nginx已经在俄罗斯的门户网站www.rambler.ru上运行了多年,有超过20%的虚拟主机平台选用了Nginx为反向代理服务器。我国也已经有新浪博客、网易新闻、金山词霸等多家网站选用了这种服务器。塞索耶夫将开源的代码以类似于BSD许可证的方法发布,Nginx由于性能非常稳定,功能方面具有富集效应,在配置基础文件和系统资源的时候功率消耗比较低,和Nginx负载相关的均衡计算研究方法的类型之中,很多内容集中在服务器集群之上,根据算法和配置文件的不同,内置的算法有不同的类型,加权轮询的算法也是其中的一个种类,一致性哈希算法也算是其中的一种。
2 负载均衡的概念
负载均衡是针对现有的网络结构提出来的概念,提供了一种廉价而高效的方法,建立在现有的网络结构的基础之上,可以增加网络设备和服务器的带宽,增强网络内容的吞吐量,强化网络的数据处理能力,提升网络服务的灵活性和可用性。负载均衡一般是通过硬件实现的,有时也可以通过软件实现,负载均衡可以提升网络处理数据的灵活性和可靠性。软件负载均衡是通过一台或多台服务器的相互连接,在操作系统之上加装附加软件来实现负载均衡,优点是可以根据特定环境的不同,进行简单配置、灵活操作,由于成本低廉,可以基本满足一般的负载均衡需求,硬件的负载均衡解决方案是在服务器和外部网络之上加载负载均衡的设备,我们将这种设备称为负载均衡器,可以由专门的设备完成相应的任务,这些设备独立于操作系统之外,整体性能可以获得提升。根据多样化的负载均衡策略,进行智能化的流量管理升级,可以达到最佳的负载均衡要求。一般来说,硬件的负载均衡会优于软件的负载均衡,硬件的负载均衡在功能和性能方面要优于软件,但是硬件更加昂贵。现代化的负载均衡技术通常在网络的第四层次或者第七层次,四层的负载均衡是将Internet 上的合法IP地址映射到多个服务器之上,最终达到负载均衡的目的。七层的负载均衡是控制应用层的内容,可以提供一种针对流量的访问控制模式。针对HTTP服务器的应用指标,第七层的负载均衡技术可以通过HTTP的报头,根据报头的内容实现负载均衡的操作。
3 和Nginx相关的负载均衡算法
与Nginx有关联的负载均衡算法的种类非常多,负载均衡所要达到的目标就是通过并发的方式,将不同的请求分配给集群服务器,根据算法内置的差异,可以将内置算法分成不同的种类,分别是扩展算法和内置算法。加权轮询的算法模式一般都被认为是内置算法的一个种类,哈希性算法一般被认为是扩展算法的一个种类。
3.1 加权轮询的算法
在设置与负载均衡有关的算法的时候,根据负载均衡是默认值还是轮询算法的不同,考虑到加权轮询算法的缺点,根据轮询算法的重复方面的配置问题,服务器的真实性能可能会难以保证,由于客户端对于客户的请求的处理方法会有不一致的地方,因此会产生一些均衡方面的差异,导致一些服务器的比重出现增大的状况。很多用户会因此出现长时间等待的问题,如果出现了新的请求需要处理的问题,还涉及到某类服务器的比重过大的问题,新的请求在这种状态下就会被要求分给服务器。服务器在负荷较大的情况下可能会出现超载的问题,但是其他的一些服务器在这个时候可能会遇到请求需要处理的情况。
3.2 一致性哈希算法
这种算法的原理是根据服务器地址的不同,按照一定的规则进行分配,分配的方法类似于路由分配表,根据服务器承载的服务的类型进行区分,将同样的内容分配到一致性的哈希表当中,如果有新的数据请求需要进行处理,可以根据哈希表之中的数据顺序进行处理,选择最新的服务器来对请求进行处理。哈希算法的优点是可以将服务器的地址按照一定的规则进行处理,快速地寻找到存储这种数据类型的服务器,但是这样的设置也有一些缺点,比如根据路由状态的不同所形成的哈希表,会和一些服务器分属于不同的缓存服务器,在这样的情况下会因为IP段的请求的种类不同,分配一些不同的内容于服务器之上。 4 Nginx负载均衡的优点和环境适应性
4.1 Nginx负载均衡的优点
Nginx负载均衡的现实环境情况较为简单,可配置性比较强,根据URL进行的负载均衡,默认后端进行健康检查的性能,后端机器在较少的情况之下,负载均衡的表现能力较强,优点主要有如下几点。(1)负载的功能强大,同时支持高端并发的连接,实现的内存消耗较少,测试的时候得到了5万并发的连接,实际的运行环境之中进行3万发的并发连接下,进行10个Nginx的进程所消耗掉的内存也仅仅只有150MB。(2)成本造价低廉,Nginx为开源的软件,所以可以进行免费试用,成本造价方面有优势。(3)由于Nginx工作在网络的第七层级之上,因此针对HTTP本身的分流策略而言,可以對域名、目录结构等实现分流,实现多种策略的分配,比如说可以针对IP Hsh的分配策略实现均衡分配。
4.2 环境适应性
七层次的均衡分配各自有其突出特点,主要表现在如下一些方面。(1)对HTTP的报头进行检查,可以检测到HTTP400和HTTP500系列的错误数值信息,可以实现透明且连续的重新定位到新的服务器,避免出现应用层次的故障。(2)根据数据类型的不同,对不同类型的数据包,流入图像文件、压缩文件和多媒体文件等不同格式的文件进行分类,根据数据流行的指引来对服务器的内容进行处理,如此可以提升系统的性能。(3)根据连接请求的类型不同,对普通文本以及图像等静态的内容进行处理,不论是CGI还是ASP等动态的文档请求,都可以指引向特定的服务器,从而提升系统整体的安全性。(4)Nginx对于网络的依赖性特别小,只有通过Ping上可以行得通,网页访问可以正常,Nginx就可以正常连接,Nginx同时还能对内外网进行区分,如果是同时用于许多的外网节点,可以根据单机对设备的路线进行分配。(5)Nginx对于网络的要求比较简单,转向业务配置分类之后的操作较为灵活,进行文件配置也操作简便,风格和普通程序一样比较容易弄懂,测试起来也非常方便,同时可以及时地对错误日志进行打印操作。(6)Nginx所承受的高负载具有稳定性,可以用于反向代理,出现宕机的概率也比较小。(7)通过Nginx可以检测服务器内部出现的故障,可以根据服务器处理网页返回的代码状态和是否超时等因素进行判断,把返回的错误请求提交关键节点,内置的健康检查功能也可以尝试运用,有时还具有消灭冗余的功能,在针对后端返回的情况处理的判断之中,可以尝试运用Nginx进行Web服务器的宕机测试,也不会影响前端的访问。(8)更加节省带宽,由于是通过GZIP进行的压缩,所以可以添加游览器的header本地接头。
5 Nginx的性能优化
Nginx一般支持正规的表达方式,配置非常灵活,是一种高性能的Web服务器,针对Nginx的性能进行优化的时候,一般只有一个配置的选项,可以在更改之后再次更改回原来的数值。如下几个方面需要特别关注:(1)控制进程数量的创制过程中,Nginx可以实现工作进程的多个进程的同时运用,很多工作都可以实现对大量的链接数量的快速处理,Nginx可以通过主进程对工作进行某些方面的创建,很多数值都是通过文件配置的方式将Nginx当中的文件进行清理,如果出现数值比较低的状况,会根据数据的有效处理的请求进行分配。如果设置的数值的区间比较高,有可能出现工作进程处置方面的问题,最终出现导致系统的功耗增加的问题,产生系统功耗的损失等情况。(2)大多数工作进程都固定在CPU之内,这样做的好处是避免了同一个工作进程选择不同的CPU内核。(3)在设置Nginx模块的时候,注意进程可以打开的最大文件数的设置,如果这个数值设置得比较低,同时打开多个进程数的时候,会出现打开的文件过多的提示。
6 结语
国外的技术人员对于Nginx的研究逐步深入,这个技术的稳定性、安全性和高效性兼具的特点使其值得进行大范围的应用,我国的科技人员对该技术的研究也势必大大增强。
参考文献
[1] 刘畅.以NGINX为核心优化掌端用户使用体验[J].江西通信科技,2019(1):17-20.
[2] 黎宇.Nginx在不同网络域名访问中的应用[J].通讯世界,2019,26(2):88-89.
①作者简介:周潮(1996,7—),男,汉族,湖北黄冈人,本科在读,研究方向:基于nginx的web服务器负载均衡策略改进与实现。
转载注明来源:https://www.xzbu.com/8/view-14910464.htm