张宝龙
C/S模式网管系统向B/S模式的迁移与优化①
张宝龙
(西安工程大学计算机科学学院, 西安 710048)
在传统C/S(客户端/服务器)模式的网络管理系统中, 存在网络管理便利性差和维护麻烦的缺点, 因此提出基于B/S(浏览器/服务器)模式的网络管理系统, 将原有C/S模式的网管系统转为B/S模式, 并且对系统结构进行了优化, 有助于客户方便可靠地监测和管理网络资源. 该系统以原网管系统服务端暴露的接口为基础, 利用RMI(远程方法调用)技术调用服务端接口与Web服务器实现数据通信, 并且整个系统采用负载均衡策略将来自多个浏览器的访问请求均衡地分配至各Web服务器进行处理, 同时对单一的负载均衡器进行了双机热备处理, 从而大大提升了网络管理系统的整体性能和可靠性.
网络管理; C/S; B/S; 负载均衡; 双机热备
目前, 大多数的网管系统都是基于网络管理协议进行网络资源的管理, 传统的网管软件均采用C/S结构, 管理模式集中化[1], 这种结构的优点在于网络管理系统服务高度集中, 易于作出全面判断和决策; 由于所有数据均连接到统一的中央数据库, 易于管理、维护和扩容[2]. 但是C/S结构需要在客户端桌面安装相应的软件, 对客户端硬件有一定的的要求, 并且操作不太便利; 并且由于互联网规模日益庞大, 应用程序的功能不断丰富和复杂, 表现出灵活性差、移植困难、开发成本高、维护麻烦、升级难度大和新技术不能轻易应用的缺陷[1], 不能够满足现代网络管理操作便捷、适应性广和低成本的要求.
为了解决以上问题, 本文提出基于Web方式的网络管理系统, 利用Web技术平台与语言无关的优势, 以原C/S模式网管系统服务端提供的接口为基础, 通过多台Web服务器组成的集合, 采用三层结构的局部负载均衡技术, 构建一种较为可靠的B/S模式网络管理系统, 方便客户对网络设备的监控和管理; 并且对单一的负载均衡器进行了双机热备处理, 有效地提高了网管系统的稳定性和响应速度.
网络管理是利用网络管理协议对网络资源进行拓扑发现、监控、调试以及图形化展示. 基于 Web的网络管理WBM(Web-Based Management)[3]就是将Web技术集成到网管系统中, 从而使网络管理更加便捷和高效, 它从实现方式上分为代理和嵌入式两种. 基于代理的方案是在网络管理之上叠加一个Web服务器[4], 使其成为浏览器用户的网络管理的代理者, 该方式支持对多种网络设备的管理, 同时支持与其他应用的扩展融合; 嵌入式方案是将Web能力嵌入到被管设备中[4], 该方案对设备有限制, 扩展性不好.
由于原网管系统采用了代理的实现方式, 所以也就决定了本文基于Web的网络管理是使用代理的方式对支持网络管理协议的网络资源进行管理. 与C/S模式相比, 采用B/S模式的网络管理系统拥有如下三点优势:
第一, 易于维护和升级. 系统的核心功能均在Web服务器上运行, 客户端不需要安装相应软件, 在任何平台下直接使用浏览器就可以操作网络管理系统, 系统升级时只需升级服务器端, 便于系统的开发、维护和操作.
第二, 优秀的系统性能. 基于Web的网管系统中大量的计算和存储任务都在服务器端完成, 而浏览器只负责显示和交互, 特别是由于AJAX技术的出现, 它能使程序在用户浏览器上进行局部实时刷新, 从而大大的减轻了服务器的压力, 提升了系统的响应速度和整体性能.
第三, 基于Web方式的网络管理系统容易构建一种分布式的系统, 容易扩展, 不仅改善了传统的集中式管理模式的网络负荷大和服务器负载重的缺陷, 而且增强了网络管理系统的健壮性.
本文采用Web方式的网络管理系统分为客户端浏览器、负载均衡模块、Web服务器集合和原网管系统服务器四部分, 如图1所示. 由于B/S模式的核心功能部署在服务器端, 这种“瘦客户端/胖服务器”的模式使得客户端的负荷较轻, 服务器端的负荷却较重, 然而单台服务器的处理能力又有限, 不能够同时处理大量的访问请求, 因此我们对客户端、负载均衡器和Web服务器采用了三层结构的局部负载均衡技术, 将来自浏览器的访问请求均匀地分配至不同的Web服务器进行处理[5], 从而平衡各个Web服务器的负载, 使系统达到最佳的状态. 这种基于Web服务器的负载均衡结构客户端应用不需要做特殊修改, 透明的中间层将请求均衡的分布到不同的服务器处理[4], 而请求的应答则不需要经过负载均衡器.
图1 Web网管系统整体架构图
从图1中可以看出, 所有的浏览器请求均会通过负载均衡器被转发到Web服务器节点进行处理, 因此为了避免负载均衡器发生单点故障, 从而使整个网络管理系统发生瘫痪, 故使用了双机热备的方式, 使某台负载均衡器发生故障后另一台能够继续为系统提供正常的服务. 如果Web服务器集合中的某台服务器出现故障时, 负载均衡器便会自动检测出出现问题的服务器, 并暂停对该服务器的请求访问, 将其任务转发至其他正常工作的服务器, 从而保证系统为用户提供正常的服务[6].
3.1 B/S模式网管系统架构
Web网管服务器采用模型-视图-控制器(MVC)结构的分层设计模式[7], 它主要通过分离模型、视图以及控制器在应用程序中分担的角色将业务逻辑从界面中解耦, 这种分离让它们更容易进行定制. 而Spring框架提供了构建Web应用程序的全功能MVC模块, 并且具有高度的可配置性和扩展性, 故我们使用Spring mvc轻量级框架构建Web网管项目.
B/S网管系统的请求处理流程如图2所示, 当客户端浏览器向Web网管服务器发出HTTP请求时, 该请求首先会被负载均衡器分配给负载较轻的Web服务器, 由服务器中DispatcherServlet(Spring控制器)对请求的URL进行解析, 通过一个或者多个处理程序映射, 将每个请求映射到处理程序中(Controller); 处理程序在执行时, 即实现业务逻辑, 会通过RMI远程方法调用原网管服务器服务接口进行数据通信, 控制器处理完业务请求后, 会将ModelAndView对象返回给DispatcherServlet, 最后再通过浏览器进行呈现用户.
图2 B/S网管系统架构图
3.2 负载均衡模块
由于本系统对服务器的并发请求数量不是特别巨大, 并且对负载均衡器进行了双机备份处理, 为了降低开发难度和成本, 故选用集中式的软件负载均衡实现方式, 软件选择Nginx. Nginx是一款开源的、轻量级的Web服务器/反向代理服务器[7]. 其特点是占有内存少, 运行可靠, 并发能力强, 我们采用反向代理负载均衡方式和默认的轮询调度算法.
反向代理是一种通过在繁忙的Web服务器和外部网络之间增加一个高速的Web缓冲服务器来降低实际的Web服务器的负载的一种技术[7]. 通过在nginx.config中进行配置, 反向代理服务器将来自外部网络的多个请求均匀地分配给内部网络上的各个服务器结点进行处理[8], 减轻服务器的负载压力, 从而使整个网管系统实现负载均衡, 达到最佳状态.
Nginx内置5种负载均衡算法, 分别是轮询、weight、ip_hash、fair和url_hash; 轮询算法的基本原理是当请求发送到系统前端的负载均衡器时, 负载均衡器将每个访问请求按响应的时间顺序依次分配到不同的后端服务器[9], 当后端服务器down掉后, 就自动删除, 简单易行且通用性较强, 由于本网管系统无特殊需求, 故采用此算法.
3.3 双机热备
我们使用Nginx+Keepalived的双机热备处理方式[10], 即使用两台均安装Nginx的设备充当负载均衡服务器同时对外提供服务, 并通过Keepalived软件检测负载均衡器的状态, 当某台负载均衡器发生故障时, Keepalived就会检测出出现故障的负载均衡器, 该负载均衡器便会立即释放虚拟IP, 由另一台负载均衡器绑定该虚拟IP, 同时Keepalived还会向网关发送 Arping 包, 保证网关上的IP和MAC地址对应的关系能随之更新[11], 从而使负载均衡器能够强行接管虚拟IP并继续为系统提供服务.
首先构建的Web工程, 通过修改web.xml文件并添加Spring配置文件构建Spring MVC项目, 然后添加RMI配置文件, 实现RMI远程调用原网管系统暴漏的接口, 根据业务需求划分系统功能模块, 从而逐个实现各模块的系统功能.
由于整个Web网络管理系统功能较多, 且大多都是通过浏览器的http请求到Web服务器, 然后使用RMI调用原网管服务端暴漏的接口实现数据通信, 最后展现到浏览器端, 从而实现网络管理. 各模块相似度较高, 故仅以性能管理模块描述基于Web方式的网络管理系统的实现.
4.1 性能管理模块
性能管理模块分为任务管理、实时性能监测和历史性能查询三部分; 首先根据需求对照原网管系统客户端使用easyUI做出静态页面.
① 任务管理: 通过原网管系统提供的接口对本区域任务进行管理, 包括任务的查看、添加、编辑、开始、暂停和删除, 主页面默认以列表显示已添加的任务信息. 其中添加和编辑任务需要使用JQuery弹窗, 选择要添加或编辑的轮询任务类型、轮询时间和要监视的设备, 以及各任务所对应的告警门限设置, 这里需要对输入的告警门限值进行校验, 最后将这些设置通过ajax请求调用接口保存到数据库中, 并将该任务信息显示到列表中; 而开始、暂停和删除功能只需要调用相应的接口, 对轮询任务作出相应的处理, 并修改列表上该任务的状态即可. 在任务轮询时, 当轮询结果超过设置的门限值时便会以弹框的形式产生告警.
② 实时性能监视: 主页面默认显示所有轮询任务已添加的设备, 在查看该设备的实时性能时, 通过JQuery弹窗以不同的tab页将该设备已添加的所有任务展示出来, 各tab页的任务视图利用JFreeChart将该轮询结果以折线图的形式展现出来, 并且按任务的轮询时间, 将采集端采集的轮询结果通过服务端使用JMS发送到Web服务器, 接收后解析加入到该设备对应的任务缓存中, 然后刷新图表, 双击图表可通过任务缓存查看该任务视图的详情, 包括当前值、最大值、和平均值, 关闭页面后任务缓存释放.
③ 历史性能查询: 主页面默认以tab页形式显示所有的轮询任务, 每个轮询任务的tab页可通过选择区域和该区域下已添加该轮询任务的设备, 然后选定时间节点查询该设备的日视图、周视图和月视图, 各视图均采用JFreeChart将查询结果以折线图的形式展现出来; 并可将结果导出到excel中.
4.2 界面对比
以任务管理为例, 对比图3和图4可见, B/S结构与C/S结构用户界面基本相似, 实现功能完全相同, 达到了预期的目的.
图4 B/S结构的任务管理界面
本文C/S模式网管系统向B/S模式的迁移是在使用原C/S网管系统服务端的基础上, 使用Spring MVC框架构建Web服务器, 利用服务端暴漏的接口通过RMI(远程方法调用)与原有网管系统进行数据通信, 从而实现B/S网管系统功能; 通过对多台Web服务器利用Nginx软件实现负载均衡, 平衡各个Web服务器的负载, 并对单一的负载均衡器进行了双机热备, 消除网络瓶颈, 也能起到冗余作用, 提高网络服务的灵活性和可用性[12].
1 袁俊.基于Web的网络管理模型及实现技术研究.河南科技, 2014,4:23–24.
2 顾慧娟.构建企业级WEB分布式网络管理系统的研究[学位论文].无锡:江南大学,2009.
3 Yao L, Sheng QZ, Dustdar S. Web-based management of the internet of things. IEEE Internet Computing, 2015, 19(4): 60–67.
4 邓江安,金晟.基于Web和SNMP的网络用户管理系统.计算机与网络,2014,23:58–60.
5 Yang K, Song X, Li X. Parallel web server load balancing technology of cloud computing environments. Guidance, Navigation and Control Conference. IEEE. 2014.
6 周博.WEB服务器负载均衡系统设计与实现[硕士学位论文].成都:电子科技大学,2014.
7 付文超.WEB服务器负载均衡技术研究[学位论文].天津:河北工业大学,2008.
8 Semchedine F, Bouallouche-Medjkoune L, Sayeh O, et al. DNS-based load balancing with cache for geographically distributed web server systems. Computer & Information Technology(GSCIT), 2014 Global Summit. IEEE. 2014. 1–6.
9 Chi X, Liu B, Niu Q, et al. Web load balance and cache optimization design based nginx under high-concurrency environment. International Conference on Digital Manufacturing & Automation. IEEE Computer Society. 2012. 1029–1032.
10 肖佳,王古城,杨旭,晁勇.双机热备与负载均衡的设计与实现.电子设计工程,2015,18:176–179.
11 李彬,朱亚兴.Nginx在实现网站负载均衡方面的研究.信息与电脑(理论版),2013,11:49–50.
12 巴哈提亚尔,聂波,宋子龙.网络负载均衡技术研究和应用. 中国管理信息化,2014,3:68–70.
Migration and Optimization of C/S Model Network Management System to B/S Model
ZHANG Bao-Long
(School of Computer Science, Xi’an Polytechnic University, Xi’an 710048, China)
There are some defects such as inconvenience and maintenance trouble for network management in the traditional C/S (client/server) model of network management system. Therefore, we put forward a network management system that based on B/S (browser/server) model, in which the original C/S model of network management system is turned to B/S model, and the structure of system is optimized which helped the customers to conveniently and reliably monitor and manage the network resource. This system is based on the interface that the original network management system server exposed, uses the RMI (remote method invocation) technology call server interface to realize data communication with Web server, and the whole system adopts the load balancing strategy to balance the access requests from multiple browser to each Web server for processing. Meanwhile, the system adopts the hot standby process on the single load balancer, thus greatly improves the overall performance and reliability of the network management system.
network management system; C/S; B/S; load balancing; hot standby
2016-04-06;收到修改稿时间:2016-05-16
[10.15888/j.cnki.csa.005528]