Apache集群在多媒体内容播控管理平台上的应用*

2013-06-01 11:00张小锋朱晓民
电信工程技术与标准化 2013年8期
关键词:集群终端服务器

张小锋,朱晓民

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2 东信北邮信息技术有限公司,北京 100191)

Apache集群在多媒体内容播控管理平台上的应用*

张小锋1,2,朱晓民1,2

(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876; 2 东信北邮信息技术有限公司,北京 100191)

随着终端用户的增加,多媒体内容播控管理平台对高访问量、高并发的需求越来越高。本文首先介绍了Apache集群的原理,然后将其应用于多媒体内容播控管理平台中,通过均衡负载,减轻了服务器的负担,提高了响应速度。

并发; 集群; Apache; 负载

随着多媒体内容播控管理平台(数字标牌业务)的推广,用户数量和终端数量会逐渐增加,多媒体内容播控管理平台的终端访问数量并发访问量越来越大,造成Web服务器的负荷加重直至崩溃, 如何解决服务器的高负荷问题已经是无法回避的问题了。通过单纯提升处理器等服务器硬件性能来提高服务器的负载能力是比较直接的解决方法,但会导致巨大的开销。服务器硬件是相当昂贵的, 而且也无法保护原有设备上的投资,这对于中小型企业来说不堪重负。还有一种解决思路是集群思想,使用多台服务器组成集群提供服务,通过一定机制使集群共同分担系统负载,对单一的服务器没有太高的性能要求,系统负载增加,可以多增加服务器来分担。对用户而言,整个系统仿佛是一台单一的逻辑服务器,这样的系统能够提供较强的可扩展性和较好的吞吐性能。

负载均衡(Load Balance)集群建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性[1]。集群可以使用各种复杂的动态负载均衡算法[2],而Apache集群自带的负载均衡算法非常简单,大大简化了集群的搭建和配置,对于中小型企业来说使用非常简捷。

1 Apache集群介绍

1.1 请求分发原理

Apache集群工作原理如图1所示, Apache和Tomcat共同响应终端用户的请求,Apache作为Tomcat的前端处理器。由于Apache httpd处理静态页面的能力远远强于Tomcat,所以静态请求直接由Apache来处理;而动态请求则由JK(也叫mod_jk,这是一款Apache/IIS用来连接后台Tomcat的模块,是Apache的开源模块,使Apache支持集群和负载均衡)分发给Tomcat处理。

图1 Apache集群架构图

1.2 Session同步机制

对集群来说,如何保证各个服务器之间的Session同步非常关键。

对于由Tomcat主机组成的集群有两种方式:一种就是黏性会话模式,即sticky模式。另外一种就是Session复制模式了。

1.2.1 黏性会话模式

利用负载均衡器的sticky模式的方式把所有同一Session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群中各个Tomcat节点上,实现负载均衡的能力。

这种模式的优点是对于开发者来说,实现起来非常容易,只需修改jvmRoute="Tomcat1";缺点是没有灾难恢复的能力。一旦一个节点发生故障,这个节点上所有的Session信息全部丢失。

1.2.2 复制模式

这种模式可以使所有Session在所有Tomcat节点中保持一致。当一个节点修改一个Session数据的时候,该节点会把这个Session的所有内容序列化,然后广播给所有其它节点。这样当下一个用户请求被负载均衡器分配到另外一个节点的时候,那个节点上有完备的Session信息可以用来服务该请求。

这种模式最大的问题是对Session哪怕有一点点修改,也要把整个Sessions数据全部序列化 (serialize),还要广播给集群中所有节点,不管该节点到底需不需要这个Session。这样很容易会造成大量的网络通信,导致网络阻塞。一般采用这种方式,当Tomcat节点超过4个时候,整个集群的吞吐量就不能再上升了; 此方式是通过Tomcat本身提供的功能,只需要修改server. xml文件:

(1)修改Engine节点信息:

(2)去掉

(3)web.xml中增加

2 在多媒体内容播控管理平台中使用Apache集群

2.1 系统架构图

基于Apache集群的播控终端管理平台系统架构如图2所示,负载均衡层由一台Apache主机支持,服务器集群由多台Tomcat主机组成,数据库由两个数据库主机采用主备切换的方式实现容灾。

任务服务器把任务分配给后端的应用服务器,任务服务器需要后端的应用服务器暴露一个接口供应用服务器来查询,从而使任务服务器获取当前该服务器的负载状态。通过一个HTTP接口,把一些信息暴露给任务服务器,任务服务器只需要通过后端的应用服务器查询这些状态,就可以找到应用服务器欲提供的信息。由于使用的标准HTTP协议,上述过程可以用标准的HTTP客户端来测试。

应用服务器相当于一个HTTP服务器,这个任务服务器相当于一个HTTP客户端,它可以去查询或者说是监视这些应用服务器当前的负载。到底是CPU高还是I/O高还是并发高,还是内存换页高,这些应用服务器应该提供一个接口,暴露给应用服务器去查询。应用服务器的负载均衡增加一个任务服务器来实现。任务服务器在查询到这些信息后,选取负载最低的应用服务器来分配任务。当然这里面可能有一些算法来确定负载最低的。相当于应用服务器被动的接收了任务。应用服务器能不能主动的去任务服务器上面取任务呢。数据库同步用的是replication机制,主流的服务器都有类似的机制。

图2 基于Apache集群的数字标牌平台架构

2.2 终端任务轮询接口(心跳接口)

2.2.1 接口功能

终端定期向平台进行轮询,获取任务以及控制指令,该接口同时具备心跳功能。随着多媒体内容播控管理平台的推广,终端数量会增加。播控终端每隔一个时间片将与播控平台交互(如图3所示),导致系统负载较大。

图3 任务轮训接口

2.2.2 接口流程

由图3和图4可知,时刻都有终端在向播控终端轮询是否有播放任务,使用多台服务器组成集群提供服务,通过一定机制使集群共同分担系统负载,解决系统负载增加的问题。

图4 终端获取播放任务流程

2.3 Apache集群部署的主要配置

2.3.1 http.conf

修改这个配置文件的作用是Apache添加JK模块,修改之前首先去官网下载JK模块,命名格式为mod_jk-1.2.31-httpd-2.2.3.so,下载后将文件放在apache安装根目录的modules目录下,然后再http. conf文件末尾添加下面的语句:

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

JkWorkersFile conf/workers.properties

#指定那些请求交给Tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名

JkMount /*.jsp controller

2.3.2 创建并编辑work.properties

这个文件的作用是配置Tomcat服务器主机的IP、

#server

worker.list = controller

#========Tomcat1======== worker.Tomcat1.port=11009

worker.Tomcat1.host=localhost

worker.Tomcat1.type=ajp13

worker.Tomcat1.lbfactor = 1

#========Tomcat2======== worker.Tomcat2.port=12009端口和权值以及负载控制器的策略、Session共享机制:

worker.Tomcat2.host=localhost

worker.Tomcat2.type=ajp13

worker.Tomcat2.lbfactor = 1

#========controller,负载均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=Tomcat1,Tomcat2,T omcat3

worker.controller.sticky_Session=false

worker.controller.sticky_Session_force=1

#worker.controller.sticky_Session=1不能

2.3.3 Tomcat配置

Tomcat配置主要是使Tomcat支持集群方式,只需修改server.xml即可,第1处修改是支持AJP/1.3协议,如下:

第2处修改是配置此Tomcat实例的名字,如下:

注意:jvmRoute的值必须与work. properties中配置的Tomcat 实例的名字一致。

第3处就是打开集群,如下:

2.4 使用Apache集群后与使用前的性能比较

测试环境是4台配置相同的主机:CPU 2.4 GHZ,内存4.0 GB,硬盘500 GB,操作系统SUSE Linux Enterprise Server 10 (x86_64)。

使用Apache集群时:一台主机作为Apache负载均衡器,另外3台作为Web服务器,并部署相同的应用;不使用Apache集群时:仅使用一台主机作为Web服务器,在这台服务器上部署与集群服务器上相同的应用,用户的请求都发送给这台Web服务器来处理。

所使用的测试软件是Apache自带的ab (ApacheBench)压力测试工具,命令为ab -c并发数-n请求数请求的网址[3],如输入ab -c 10 -n 100 http://localhost/cyuser/zone/sucai.jsp,表示每次发出10个请求(即并发次数为10),一共有100个请求,请求的网址为:http://localhost/cyuser/zone/ sucai.jsp。

本实验共进行了6次测试,每次测试选用的并发数都是同一个值,选用的是10,不同是请求数的取值,分别取10,100,500,1000,5000,10000,6次测试执行命令分别为:

ab -c 10 -n 10 http://localhost/cyuser/ zone/sucai.jsp

ab -c 10 -n 100 http://localhost/cyuser/ zone/sucai.jsp

表1 使用Apache集群前后性能比较

图5 使用Apache集群与未使用Apache集群响应时间对比图

图6 使用Apache集群与未使用Apache集群加速比趋势图

ab -c 10 -n 500 http://localhost/cyuser/ zone/sucai.jsp

ab -c 10 -n 1000 http://localhost/cyuser/ zone/sucai.jsp

ab -c 10 -n 5000 http://localhost/cyuser/ zone/sucai.jsp

ab -c 10 -n 10000 http://localhost/cyuser/ zone/sucai.jsp

表1是测试结果。

从图6可以看出效率提升是很明显的,加速比下降的那个点,推断可能是由于系统资源不稳定导致的奇异点,同比还是增加的。从表中可以看出,使用Apache集群后,响应时间大大缩短,而且,随着访问量的增大,使用集群所带来的负载分担效果越来越明显,集群响应高访问量的速度更快。

3 展望

集群系统技术的发展非常迅速,如今已越来越受到人们的重视并广泛地应用在各个方面,成为主要的高性能低价格的网络服务系统的解决方案,同时由于集群系统的高效性、可靠性、扩展性、低成本和透明性,相信未来会得到更多的应用。

[1] 魏红,李志勇.Web 服务器动态负载均衡的设计与研究 [J].现代计算机,2009(10):48-50,74

[2] Teng S B, Liao J X, Zhu X M. Dynamic weighted random load balancing algorithm for SIP application server[J], The Journal of China Universities of Posts and Telecommunications, August 2009,16(4):67-70.

[3] 邵芬,于国防,付海燕.AB:一种简单的性能测试工具[J].计算机时代,2007,(12):59-60.

Apache cluster in multimedia broadcast content management platform

ZHANG Xiao-feng, ZHU Xiao-min
(1 State Key Lab of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2 EBUPT Information Technology Co., Ltd., Beijing 100191, China)

With the increasing of the end users, the multimedia broadcast content management platform requires web service with higher speed and better performance. This paper fi rst introduces the principle of the Apache cluster, and then uses the techenique in multimedia broadcast content management platform. Through balancing the load of web servers, it can reduce the burden of server and improve the response speed.

concurrency; cluster; Apache; load

TP393

A

1008-5599(2013)08-0079-05

2013-07-18

国家973计划项目(No. 2013CB329100, 2013CB329102);国家自然科学基金(No. 61271019, 61101119, 61121001, 61072057,60902051);长江学者和创新团队发展计划资助(No. IRT1049)。

猜你喜欢
集群终端服务器
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
GSM-R手持终端呼叫FAS失败案例分析
Python与Spark集群在收费数据分析中的应用
中国服务器市场份额出炉
勤快又呆萌的集群机器人
得形忘意的服务器标准
计算机网络安全服务器入侵与防御