APP下载

基于Sugon Cloudview 虚拟化平台Nginx 负载均衡的实现

2019-10-31曹园青

现代计算机 2019年26期
关键词:虚拟化客户端集群

曹园青

(河套学院网络信息中心,巴彦淖尔015000)

0 引言

作为现代互联网最常用的网络服务提供方式,Web 服务已经根深蒂固到我们日常生活的方方面面,网购、社交、金融、教育无不例外。随着中国网民数量及使用网络时间的双重增加,单位时间对Web 服务器的并发量也在急剧增大[1]。此外,业务量的提高,网络访问量和数据流量快速增长,使各个核心组件的处理能力和计算强度也相应增大,单一的服务器设备根本无法承担[2],从而就会出现服务器负载过重导致页面无响应等使用户使用体验较差等状况[3]。

解决上述问题最奏效的方式,就是Web 服务器集群策略,通俗地讲,就是Web 系统不再是由一台服务器构成,而是由多台分布式的服务器共同组成,但对于用户而言,就如同一台服务器一般。把用户的所有的高并发请求按照一定的算法合理地分配到后方服务器,充分调动每一台服务器的资源(CPU、内存、硬盘、SCSI 总线等),由过去的“一(服务器)对一(客户端)”服务,切换到现在的“多(服务器)对一(客户端)”服务,大大提高了用户访问速度和Web 系统性能,缩短了客户端响应请求时间,解决了高并发访问应用服务器的难题。

1 负载均衡技术

负载均衡是服务器集群中一种最常见的策略,而服务器的负载均衡表示的是多台服务器以对称的方式组成一个服务器,每台服务器的地位都相同,都可以独立对外提供服务[4],它们按照一定的算法规则,共同为用户群提供服务,当有用户请求时,先由负载均衡模块将用户请求转发给后端服务器[5]。

负载均衡技术的主要优点有:拓展现有的网络带宽、增加吞吐量、加强网络数据处理能力、提升网络的灵活性和可用性,有效解决数据访问和业务信息急剧增长给服务器带来的巨大处理压力[6]。

实现负载均衡的方法有很多种,如硬件负载均衡策略、软件负载均衡策略、IP 负载均衡策略、LVS 负载均衡策略,用途最为广泛的是硬件负载均衡策略和软件负载均衡策略。硬件方式是指通过硬件来实现负载均衡,例如华为的F5 硬件负载均衡器[7],由于单一的设备完成单一的任务,所以系统性能特别高,可以达到极佳的负载均衡效果,但唯一的缺点就是价格昂贵。而软件负载均衡策略是指在服务器或者集群的每台服务器的操作系统上安装软件来实现负载均衡,主流的软件有Connect Control、DNS Load Balance、Nginx、Check Point Firewall-1、Ha proxy 等,它具有配置容易、操作简单、价格便宜等优点,但性能比起硬件负载均衡来说略显一般,其中最为普遍和经典的策略为Nginx。

2 Nginx简介

Nginx 的创始人是俄罗斯著名系统管理人Igor Sysoev,起初被用于开发俄罗斯的国家Web 门户站点Rambler.ru,在2004 年Nginx 的源代码被发布。因其内存占用率低、并发能力强的特点,为整个市场所青睐[8]。此外,Nginx 作为世界第2 大服务器软件,因其良好的架构和开源特性,使得对其的应用和研究也越来越广泛和深入[9]。

相关统计数据显示,从2004 年至2018 年,世界上大约有11.7%的Web 应用服务器都在使用Nginx 软件,其中,访问量排名前两千名的热门网站就有28%是基于Nginx 方案的,并且这个比例还在与日俱增,例如国内很多知名的门户网站网易、凤凰、搜狐、新华、游侠等都在使用。

Nginx 之所以如此受青睐,归功于自身的几个特点:①对客户端的TCP 报文请求的响应时间极短(几万并发的情况下);②扩展性功能强。Nginx 由几个不同的功能模块构成,这些模块的功能性和层次性都不同,并且耦合度特别弱,这就意味着,当其中的一个模块不能正常工作时,其他的模块可以忽略单模块故障而运行正常,这对排错过程是非常有益的;③Nginx 的构架设计简单,模块部署优秀,具有极强的可靠性。大部分对并发数要求高的Web 站点都会选择Nginx;④单服务器的并发数性能强大,最高可达10 万;⑤对于大量的代码编程者而言,Nginx 开源代码是他们的福音,可以通过修改代码来带来个性化的体验。

3 Sugon Cloudview虚拟化平台的设计

Sugon Cloudview 虚拟化平台是一款开放的平台架构,基于OSGi 模块化机制,功能组件可灵活组合,标准的服务接口可兼容支持第三方服务器、存储、网络方案,兼容支持Xen、VMWare 等异构虚拟化平台,此外,它还具有高度可扩展性,对平台中物理资源、虚拟资源实现物理分组及逻辑分组管理,满足服务器、存储、网络资源的可扩展性要求,支持Windows、Redhat、Suse 等主流操作系统,支持虚拟机创建、启停、动态迁移、配置修改、性能监控、远程访问等功能。

新设计的共享存储模型为基于光纤通道SAN(Storage Area Network)的磁盘子系统,共由五个RAID 5.0 SCSI 磁盘阵列组成的虚拟化资源池,其中,两个RAID 5.0 是由磁盘阵列提供,三个RAID 5.0 是由物理服务器的本地SCSI 存储提供,五个磁盘阵列在光存储交换机的连接下,构成了光纤通道存储局域网,这样既结合了I/O 总线的通道传输特征和和远距离特征,又提供了传统网络所具有的灵活连接性和高度的可扩展性。

在三台物理服务器(hvn0、hvn1 和hvn2)上部署Sugon Cloudview 1.8 系统,构建出虚拟化平台的资源池,配合SAN 磁盘子系统,在两者的基础上创建4 台虚拟服务器,其中,1 台用作Nginx 负载均衡虚拟机(Nginx-Server),其他3 台用作Web 应用服务虚拟机(Web-Server1、Web-Server2 和Web-Server3)。平台构架如图1 所示。

图1 Sugon Cloudview虚拟化平台构架

4 Nginx配置及调优

4.1 Nginx配置

负载均衡的算法,即是分发请求的调度算法,对负载均衡的效果起着决定性的作用[10]。Nginx 主流算法有五种,分别是轮询、ip_hash、weight、fair(第三方)和url_hash(第三方),每种算法都有自己的适用场景,由于新设计的侧重点在于对比基于不同虚拟化平台的Nginx 负载均衡的性能优劣,而不是新Nginx 算法的设计,所以,为了保证测试结果的一致性和可靠性,将所有虚拟机的配置设为一样,并采用默认的Nginx 轮训算法,Nginx 版本为1.9.9,配置文件如下所示:

4.2 Nginx优化

Nginx 作为一个配置灵活的高性能负载均衡解决方案,可以通过更改配置文件中的某些配置项,来使负载均衡系统的性能提高一个水平,下面通过更改一些默认配置,来优化Nginx 的性能,让Nginx 客户端的访问速度更快:

第一个优化项worker_processes 是指worker 进程的数量,建立worker 进程的对象是Nginx 的master 模块,Nginx 配置文件里的worker_processes 项直接掌控着worker 的数量,这个值太高,会导致系统不断在不同worker 进程间来回切换,大大地增加了系统的负担,这个值太低,会造成系统对并发请求的处理变地愈发艰巨,从而很多系统的闲置资源无法充分利用,所以,此项参数建议为CPU 的核数。

第二个优化项worker_connections 指的是每一个worker 进程能并发处理的最大连接数,不能超过最大文件打开数。这里建议为CPU 核数与1024 的乘积。

第三个优化项worker_cpu_affinity 的作用是把CPU 的每个内核绑定在worker 进程上,这样做的目的是减小进程处理过程中选择内核的时间,从而大大缩减了系统开销。

5 测试分析

为了验证基于CVM 虚拟化平台的Nginx 负载均衡的性能效果,我们对比同等配置下基于KVM 的Nginx 负载均衡方案。首先,将CVM 和KVM 分别部署在3 台配置相同的物理机上,然后,分别在CVM 平台和KVM 平台上虚拟出4 台配置相同的虚拟机,物理机和虚拟机的配置如表1 所示。

表1 物理机与虚拟机配置表

测试环境的服务器集群的架构如图2 所示,Nginx负载均衡服务器,用来接收和处理来自客户端的并发请求,并根据负载均衡算法来进行请求在集群Web 服务器中的合理分配。

图2 虚拟服务器集群构架

最后利用httperf 压力测试工具分别对CVM 和KVM 两个集群进行压力测试。测试工具的选择决定着一个解决方案的可靠性,httperf 是一款高效可靠的HTTP 压力测试工具,它可以模拟多客户端和高并发连接数的实际应用场景,长时间或超大负荷地测试Web应用服务器的性能,最高可支持1 万的并发访问,可以充分地测试Web 服务器的性能。它的测试结果侧重于响应速率和响应时间。

在CentOS6.4 下安装好httperf-0.9.0 后,输入如下命令,即可进行压力测试:

httperf--server 192.168.0.167--port 80--uri/index.html--rate 500--num-conn 1000--num-call 1-timeout 10

其中,rate 代表每秒发送的请求,num-conn 代表连接的总数,num-call 代表每个连接发送的请求数目。

新设计的测试方案为:首先对比测试单物理机和基于CVM 虚拟化集群的Nginx 方案的响应时间,并发连接数从500 增至5000,分别测试10 个数据点(步长为500);然后对比测试基于CVM 虚拟化集群的Nginx方案和基于KVM 虚拟化集群的Nginx 方案的响应时间,并发连接数从1000 增至7000,分别测试7 个数据点(步长为1000)。所有的数据点都测试3 遍,最后取算数平均值,测试结果经过Excel 可视化后,输出折线图。基于CVM 虚拟化集群和KVM 虚拟化集群的Nginx 方案测试数据分别如表2 和表3 所示,可视化图表分别如图3 和图4 所示。

表2 单物理机和CVM+Nginx 集群响应时间

表3 KVM+Nginx 集群和CVM+Nginx 集群响应时间

图3 单物理机和CVM+Nginx集群响应时间

图4 KVM+Nginx集群和CVM+Nginx集群响应时间

从图3 不难看出,并发数在1000 之前,单物理机和CVM+Nginx 集群的响应时间基本上保持一致,在1000 之后,随着并发数的增加,单物理机的响应时间急剧上升,但CVM+Nginx 集群的响应时间还是很快,这就说明CVM+Nginx 集群的性能要显著优于单物理机,处理多任务的水平会更加出色。

从图4 可以得到,在并发数低于5000 时,KVM+Nginx 集群和CVM+Nginx 集群的响应时间都比较理想,均在20ms 以内,但并发数高于5000 后,KVM+Nginx 集群的响应时间要比CVM+Nginx 集群慢,说明CVM+Nginx 集群的性能要比KVM+Nginx 集群好。

6 结语

本文提出了一种新的Nginx 的实现方式,即基于CVM 的Nginx 负载均衡集群方案,相比传统的基于KVM 的Nginx 集群,在相同的硬件条件下,从系统响应时间的性能指标角度进行了参数的对比,结果表明新方案拥有更快的相应速度,具有明显的性能优势,从而验证了新方案是可行的,可以为客户端请求更合理地分配负载服务器,达到了负载均衡的目标,满足了设计的基本要求。

猜你喜欢

虚拟化客户端集群
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
齐口裂腹鱼集群行为对流态的响应
基于信息素决策的无人机集群协同搜索算法
勤快又呆萌的集群机器人
媒体客户端的发展策略与推广模式
服务器虚拟化的安全威胁及防范分析
新华社推出新版客户端 打造移动互联新闻旗舰
浅谈虚拟化工作原理
用户怎样选择虚拟化解决方案