一种带缓冲层的Web服务集群架构分层解决方案

2016-10-22 02:22缪伟宁罗予东刘锡锋张功陈伟君
现代计算机 2016年26期
关键词:脚本客户端集群

缪伟宁,罗予东,刘锡锋,张功,陈伟君

(嘉应学院计算机学院,梅州 514015)

一种带缓冲层的Web服务集群架构分层解决方案

缪伟宁,罗予东,刘锡锋,张功,陈伟君

(嘉应学院计算机学院,梅州514015)

针对能够应对大流量、高并发的Web服务需求进行深入的研究,提出一个Web服务集群架构分层解决方案。该集群架构分层解决方案按功能分层以细化架构,并且在不同功能层间引入实现缓存、负载均衡和队列机制的缓冲层解决性能瓶颈以进一步提高集群性能和可用性。该集群架构分层解决方案还提供一套基于C/S架构的数据同步更新策略用以解决集群节点服务器软件的统一配置问题。该集群架构分层解决方案具有负载均衡、高性能、高可用性的特点。

负载均衡;集群;高可用性;Web服务器

0 引言

得益于网络技术的发展和成熟,互联网的规模不断地增大,就我国而言,中国互联网络信息中心的《第37次互联网络发展状况统计报告》指出,截止至2015年12月,在我国互联网中运行的网站数量为423万个,较2014年12月前增长26.3%[1]。

面对巨大的网站基数和增长率,为网站提供运行环境、数据库服务的互联网数据服务提供商的压力陡增,其依赖一味地升级硬件、增加服务器数量这种简单粗暴的传统服务器组织方式显然已经无法满足不断上升的性能和稳定性需求。如何在大流量、高并发的情况下保证服务的正常提供、充分发挥服务器性能成了互联网服务提供商的当务之急;除此之外,在全球IPv4地址枯竭[2]的大背景下,如何充分利用有限的IPv4地址资源满足用户大量的IPv4地址需求也是对互联网数据服务提供商的挑战之一。

本文在对大流量、高并发的Web服务需求进行了深入研究后,提出了一个在Linux平台下带有负载均衡机制的具有高稳定性、高可用性、高可扩展性的Web服务高性能服务集群架构设计方案,以期为上述问题提供一个可行的解决方案。

1 对大流量、高并发的Web服务需求的研究

以安装了Apache、PHP、MySQL等软件的能提供完整Web服务的单台服务器为例,在不考虑其中运行的网站代码是否对大流量、高并发的情况做了优化手段的前题下,由于网站应用程序和数据库大多部署在同一台服务器上,当大量用户请求页面时,将直接导致频繁的I/O操作和对数据库的读写,必然使服务器CPU过载,引起脚本执行超时,出现服务器向访问站点的用户返回50x错误。而单纯地提升该服务器的处理速度、加大内存或满足合理的服务请求,当访问量进一步加大时,服务器还是无法提供正常的服务。

文献[3]引入集群机制来解决这个问题。其所设计的LVS集群系统体系结构,采用负载均衡机制将大量的服务请求按一定的策略分散到多个真实服务器上处理,待处理完毕后再将处理结果交由主调度器返回给用户。此集群架构固然能承受更大流量、更高并发的Web服务请求,但此集群架构仍然存在以下缺陷:

(1)存在单一失效点和性能浪费。当服务请求量大于调度器处理能力,调度器的网络使用率却相对地处于较低的水平时,后续的服务请求将不断地涌入调度器,造成调度器CPU处理过载无法响应正常的服务请求,形成单一失效点,而后端的真实服务器却处于空闲状态,造成极大的性能浪费;

(2)节点的功能并不够细分,架构没有将脚本处理与数据库操作分离开来,真实服务器的功能繁杂仍不够专一,不便于转化为分布式系统进一步提高集群的性能;

(3)未对真实服务器间的应用数据共享提供一个解决方案,例如当同一用户的多个请求被分散到多个真实的脚本处理服务器上时该如何进行session的共享。

综上,要满足大流量、高并发的Web服务需求的集群应具有以下特点:

(1)架构的唯一入口点在采用负载均衡机制的同时,应解决唯一入口点无法处理过多请求的问题;

(2)架构应按功能进行分层细化,使单一节点的功能更加专一以充分挖掘计算性能;

(3)架构应当有效地解决真实服务器之间的应用数据共享问题。

2 集群架构分层解决方案

根据对大流量、高并发的Web服务需求的研究中所得出的集群应有的特点,项目组提出了如图1所示的集群架构分层解决方案。该集群架构分层解决方案将常规的Web服务按功能抽象分层为前端调度层、后端服务层、脚本处理层、数据服务层。并且,在以上各个功能层之间插入相应的缓冲层。

在此分层体系中,软件开发人员不必关心该分层体系的具体结构,也不必关心某一层的具体实现方式,该体系的各层对软件开发人员来说是透明的,整个体系对外表现为一台独立的安装了各种软件的服务器。互联网数据服务提供商按照该分层体系组织服务器,可以根据每层的性能需求适当的增减服务器数量甚至将某一功能层采用分布式系统实现,而不必担心造成对其他功能层的干扰。

图1 集群架构分层解决方案

以下是对各层的功能的具体介绍。

2.1前端调度层

前端调度层作为整个集群架构分层解决方案的唯一入口点,除了实现支持各种负载均衡算法的负载均衡机制外,还增加了以下两项优化的机制消除性能瓶颈进一步提升集群性能:

(1)队列机制。当有超过前端调度层处理能力的请求量时,前端调度层将启用队列机制将超出的请求放入队列中,避免超出的请求量冲垮整个前端处理层导致整个集群失效,解决了文献[3]所设计的LVS集群系统体系结构中调度器过载无法响应正常的服务请求,而后端的真实服务器却处于空闲状态的问题;

(2)域名-应用解析机制。此机制为引言中提到的如何充分利用有限的IPv4地址资源满足用户大量的IPv4地址需求提供了一个可行的解决方案。在本分层体系中,只需使用一个公网地址作为前端调度层的地址并让一个一级域名指向该地址,然后为用户的每个应用分配一个唯一的多级域名,就可以在前端调度层中建立一个多级域名与应用的对应关系。当请求到达前端调度层时,前端调度层会检查该请求的HTTP头,按其域名告知后端服务层应返回哪个应用中的数据(如图2)。并且,该机制还对部署在该分层体系中的应用起到了一定的保护作用,当部署在该分层体系中的某个应用遭受到DoS攻击或DDoS攻击[4]时,前端调度层只需要丢弃特定域名的请求即可隔离该应用,避免对其他应用的正常运行造成影响,即可起到一定的保护作用。

图2 域名-应用解析机制

除此之外,前端调度层将集群内网和公网隔离开来,运营维护人员可在前端调度层进行各种安全防护操作,提高整个集群架构的安全性,例如运营维护人员可构建堡垒主机,作为进入内部网的一个检查点,以达到把整个网络的安全问题集中在某个主机上解决,从而省时省力,不用考虑其他主机安全的目的[5]。

2.2缓冲层

在本架构分层体系中,前端调度层和后端服务层之间插入了一个后端服务缓冲层,后端服务层和脚本处理层之间插入了一个脚本处理缓冲层,脚本处理层和数据服务层之间插入了一个数据服务缓冲层。这些缓冲层的作用有以下四点:

(1)屏蔽下层实体实现细节和组织结构。缓冲层类似于OSI/RM的分层体系结构中服务访问点(Service Access Point)的概念[6],任一上层实体通过缓冲层来获取其下层实体提供的服务,缓冲层为上层实体提供下层实体的单一访问入口,;

(2)实现带队列的负载均衡机制。缓冲层将上层的服务请求按合理有效的负载均衡策略分散到下层的各个服务节点中,超出缓冲层承受量的请求将进入过载队列中,以保证服务的稳定性;

(3)提供缓存机制。缓冲层可实现LNC算法[7]将频繁操作的数据缓存起来,一方面减轻下层的处理压力,另一方面加快上层获取数据的速度。

(4)高效解决真实服务器之间的应用数据共享问题。例如为了解决脚本处理层中多个真实的脚本处理服务器如何共享Session的问题,常用的办法是文献[8]采用的按域共享方案,但这种方案存在一定的跨域安全问题和设置繁杂问题。在本分层体系中,所有的Session由脚本处理缓冲层中的Session产生器生成并存储在脚本处理缓冲层中的Redis或Memcached等内存数据库服务器[9]中,脚本处理服务器不必关注Session的生成和存储,只需从脚本处理缓冲层获取相应的Session即可实现Session的共享和其高速存取。

2.3后端服务层与脚本处理层

在后端服务层中,互联网数据服务提供商可以部署不同的Web服务器软件,例如目前流行的Apache、IIS、Nginx等;在脚本服务层中,也可以部署不同的脚本服务器软件,例如PHP、ASP、Java、Python等。此举有力地解决了文献指出的现有的PaaS(Platform-as-a-Service,平台即服务)平台中存在的应用托管环境单一化、仅能提供特定编程语言或脚本语言的应用环境所导致的应用兼容性低,需要引入应用迁移成本[10]的问题。

2.4数据服务层

数据服务层主要由数据库服务和文件服务组成:

(1)数据库服务与后端服务层和脚本处理层相似地,在数据服务层中也可部署不同的数据库软件,如MySQL、MS SQL、Oracle DB等以增加了业务的多样性。并且,为了应对大流量、高并发的业务压力,就数据库服务而言,可通过配置数据库服务器的负载均衡与数据库读写分离策略以提高整个数据库服务的速度和质量。

(2)文件服务用于存储应用数据并实现了FTP服务。互联网数据服务提供商可在FTP服务器上为每个用户创建一个限定大小的FTP目录,该目录作为该用户的应用数据目录,当脚本处理服务器接收到绑定了特定域名的应用服务请求时即从相应的应用数据目录获取所需数据。通过此方式,用户可方便地对自己的应用数据进行管理,并且互联网数据服务提供商可将为用户定时备份的数据库数据和应用数据放置在用户对应的FTP目录中,方便用户下载及管理。

3 简要实现

项目组以目前比较热门的动态网站架构搭建方案LAMP(即Linux+Apache+PHP/Python+MySQL/MariaDB)为例,根据集群架构分层解决方案搭建了如图3所示的LAMP简要实现。

在此简要实现中,使用了在高并发下表现良好的Nginx[11]通过架设反向代理服务器配合负载均衡策略配置及缓存策略实现了前端调度层和后端服务缓冲层,采用三台Apache服务器作为作为后端服务层,三台PHP服务器作为脚本处理层,并在数据服务层实现了MySQL数据库的读写分离。

值得一提的是,Nginx提供了基于轮询、ip_hash、fair、url_hash等负载均衡策略的第七层负载均衡功能[12]。当服务请求到达前端调度层后,将由Nginx根据指定负载均衡策略将服务请求反向代理到后端服务层,待后端服务层与脚本处理缓冲层合作处理后,返回处理结果交由Nginx反向代理服务器返回给用户,整个分层体系的架构对服务请求者是不可见的。

同时,为了防止Nginx服务器宕机造成单一失效,采用心跳线将主Nginx服务器和备用Nginx服务器连接起来,当主Nginx服务器无法提供服务时,备用Nginx服务器将代替主Nginx服务器接管前端调度层和后端服务缓冲层,保证整个集群的正常运行。

图3 集群架构分层解决方案的简要实现

4 数据同步更新策略

当实现了架构分层体系的集群的规模变大,集群中的服务器数量增多,如何快速批量进行服务器软件初始化配置及更新服务器配置成了不可忽视的问题。纯粹得靠人工配置每一台服务器显然不是合理且高效的解决方法。为此,本集群架构分层解决方案设计了一套基于C/S的数据同步更新策略为该问题提供一个简单可行的解决方案。

首先,需要在集群中部署一台服务器作为配置中心,并且在集群中的其他服务器上安装一个用以接受并执行配置中心发来的执行脚本的客户端软件,该客户端软件还有定时向配置中心报告服务器状态的功能及获取配置更新功能。

其次,当安装了客户端软件服务器首次接入集群网络中时,客户端软件即向配置中心请求配置执行脚本及其他有关的数据。配置中心在收到客户端软件的首次请求时,会将该服务器信息保存到集群信息数据库中,并且向客户端软件返回配置执行脚本及其他有关的数据。客户端软件在接收到配置中心发来的配置脚本及其他有关数据后,即执行配置脚本开始配置所在服务器,待客户端软件执行完配置脚本并保存好相关数据后,即向配置中心报告已经配置完毕。

最后,服务器的配置更新有两种方式,一种是客户端软件定时向配置中心询问是否有配置更新脚本;另一种是配置中心根据管理员操作主动向在集群信息数据库中记录的服务器客户端发送更新通知,让客户端软件立即发起更新操作。

如此一来,集群运维人员便能方便快捷地对集群中的服务器进行快速自动化的配置。

5 结语

本文提出的集群架构分层解决方案,采取按功能抽象分层、引入缓冲层等手段来构建一个针对大流量、高并发的Web服务集群,提供可以了实用性强且具有一定安全性的高性能架构设计方案。该集群架构设计方案不单单适用于互联网数据服务提供商的服务器集群组织,也适用于任何具有大并发、高流量的大型网站服务器架构搭建。

此外,根据此集群架构设计方案进行了一个集群的简要实现,并对其进行了各项性能指标试验测试,目前已完成整个集群的正常运行,集群的分层体系架构对服务请求者是不可见的,集群的性能指标还需在不同的压力下进行进一步测试,下一步项目组将根据测试结果对该集群架构分层解决方案设计方案做更加细致的调整和修正,并且为数据同步更新策略提供相应的安全机制。

[1]中国互联网络信息中心.第37次中国互联网络发展状况统计报告[EB/OL].http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/201601/ P020160122469130059846.pdf,2016-01.

[2]黄洁梅.IPv4地址枯竭问题的分析与校园网IPv6系统构建的研究[D].广州:华南理工大学,2012.

[3]程洪,钱乐秋,洪圆.基于Linux集群的Web服务的研究和构建[J].计算机工程与应用,2004,34:160.

[4]徐恪,徐明伟,吴建平.分布式拒绝服务攻击研究综述[J].小型微型计算机系统,2004,25(3):338.

[5]赵瑞霞,王会平.构建堡垒主机抵御网络攻击[J].网络安全技术与应用,2010,8:26.

[6]雷震甲.网络工程师教程.第4版.北京:清华大学出版社,2014:12-13.

[7]林永旺,张大江,钱华林.Web缓存的一种新的替换算法[J].软件学报,2001,12(11):1711-1713.

[8]杨美珍.基于PHP的多服务器共享Session的方法[J].信息通信,2013,6:108-109.

[9]杨武军,张继荣,屈军锁.内存数据库技术综述.西安邮电学院学报,2005,10(3):96-97.

[10]徐鹏,陈思,苏森.互联网应用PaaS平台体系结构[J].北京邮电大学学报,2012,35(1):121.

[11]凌质亿,刘哲星,曹蕾.高并发环境下Apache与Nginx的I/O性能比较[J].计算机系统应用,2013,06:207-208.

[12]黎哲,郭成城,陈亮.一个基于TCP迁移机制的第七层负载均衡系统.计算机应用研究,2005,4:116.

A Layered Architecture of Web Service Cluster with Buffer Layer

MIAO Wei-ning,LUO Yu-dong,LUI Xi-feng,ZHANG Gong,CHEN Wei-jun
(College of Computer,Jiaying University,Meizhou 514015)

Proposes a layered architecture of web service cluster architecture to deal with the large flow,high concurrent service request.This architecture layered structure by function,and introduced buffer layer which has implemented caching,load balancing,and queue mechanism between different functional layer for solving the performance bottleneck and improving the performance and availability of the cluster further.Also provides a data synchronization and update strategy based on C/S architecture in order to solve the unified configuration of server software.This architecture has the characteristics of load balancing,high performance and high availability.

Load Balancing;Cluster;High Availability;Web Server

国家自然科学基金资助项目(No.41172028)、广东省大学生科技创新培育基金专项资金项目(No.pajh2016a0460)、2014年国家级教育基地项目(No.414B0110)

1007-1423(2016)26-0018-05DOI:10.3969/j.issn.1007-1423.2016.26.004

缪伟宁(1995-),男,广东五华人,本科,研究方向为下一代互联网

罗予东(1969-),男,广东梅州人,高级实验师,硕士,研究方向为网络工程、信息安全

刘锡锋(1996-),男,广东云浮人,本科,研究方向为软件工程

张功(1995-),男,安徽阜阳人,本科生,,研究方向为软件工程

陈伟君(1958-),男,广东兴宁人,高级实验师,硕士,研究方向为网络工程

2016-07-22

2016-09-10

猜你喜欢
脚本客户端集群
酒驾
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
海上小型无人机集群的反制装备需求与应对之策研究
培育世界级汽车产业集群
一种无人机集群发射回收装置的控制系统设计
自动推送与网站匹配的脚本
勤快又呆萌的集群机器人
新华社推出新版客户端 打造移动互联新闻旗舰