1、构建高可用和可伸缩的视频监控系统一、引言随着信息技术的迅猛发展、公安信息化研究和应用的不断深入,特别是平安城市建设和科技强警示范城市工作大范围的展开,城市视频监控系统的建设越来越受到重视和关注。作为城市安全防范系统中的重要组成部分,视频监控系统在图像侦查、智能研判、电子巡逻、可视化指挥调度等公安业务工作中都有着至关重要的应用。因此,如何构建稳定、实用、高效的视频监控系统一直是公安科研工作的重要方向。从逻辑上讲,典型视频监控系统架构主要包含应用服务器、信令服务器、数据库服务器以及媒体服务器。典型架构按照具体功能和模块将系统进行分解,明确了各部分的设计和部署,有利于系统的开发、调试、故障诊断和维护
2、。在功能方面,它满足了公安业务对视频监控系统的需求,同时,它占用硬件资源相对独立,部署简单,能耗低。如图 1 所示,典型架构中的系统模块通常被部署在独立物理服务器上,应用服务器负责进行业务逻辑处理和提供用户交互界面,信令服务器负责视频链路信令控制,数据库服务器负责保存和管理系统数据,媒体服务器负责视频和音频媒体流的转发和存储;此外,系统可能还包含其他服务器来完成相应的业务应用。系统通过核心交换机接入视频监控网络,同时,前端设备如摄像机和硬盘录像机等,通过该网连接系统。同时,视频监控系统还可以与对接系统通信,为后者提供视频服务,例如网上督查系统、警用地理信息系统等。图 1 典型视频监控系统架构随
3、着基于视频的公安业务应用的日益广泛和深入,对视频监控系统的稳定性、可靠性以及性能提出了更高的要求。尤其是在云服务逐渐落地的今天,如何利用云框架和技术获得系统高可用性和动态伸缩能力,成为了当前公安视频监控系统研究亟待解决的问题。典型系统架构通过系统模块化的方法最大限度地隔离故障,使得系统能可靠地提供视频服务。但是,它仍然无法满足新需求中对于系统高可用性和伸缩性的要求。目前,为了获得高可用性,业界多采用双机热备方式来保证系统提供不间断服务。双机热备方式部署简明,维护方便,能在一定程度上提升系统的可用性。但是,该方式无法从根本上解决高可用性问题,并且无法实现系统的动态伸缩特性。同时,双机热备对于计算
4、机硬件资源和能源都存在较大浪费。因此,迫切需要对视频监控系统架构进行高可用性和伸缩性方面的增强,以满足公安视频业务的新需求。二、设计目标为了满足公安视频应用新场景下对于视频监控系统提出的新需求,高可用和可伸缩的视频监控系统需在提供正常视频业务功能的同时,达到以下设计目标:1.高可用性。在少数服务器宕机、响应失败或者系统维护和升级过程中不影响正常的系统服务,即在不断电情况下能提供 7*24 小时不间断系统服务。2.可伸缩性。在业务负载增大时,可以通过添加硬件资源或者启动新服务器的方式,无缝透明地提升系统的承载能力;在业务负载减小时,可以通过关闭部分服务器来节约硬件资源和能耗。在添加和削减硬件资源
5、或者服务器时,不影响系统正常提供服务。3.负载均衡。系统计算和存储任务应该能够被合理地分配到相关服务器,避免形成负载不均衡的现象(某些服务器处于过载状态,而其余服务器处于空闲状态),通过减小服务器之间的负载差,提升系统的整体性能。三、系统设计(一)总体设计在高可用和可伸缩的视频监控系统架构中,使用存在于云环境中的虚拟服务器集群替代原有单个物理服务器,同时,系统中加入了负载均衡模块。利用集群和负载均衡技术获得高可用性和伸缩性,从而透明地为用户提供系统服务。与典型架构相比,该架构包含若干功能模块集群。其中,由多台同构的虚拟服务器通过共享内存和会话的方式来协同工作,并提供统一透明的系统服务。如 0
6、所示,系统架构中包含:应用服务器集群、信令服务器集群、数据库服务器集群、媒体服务器集群以及其他功能集群。在系统架构中,利用负载均衡器隔离部署服务器集群的私有云环境和外部视频监控网络。系统集群和外接系统、外部视频设备之间通过负载均衡器进行通信。对于视频监控系统外部的系统和设备,通过负载均衡器上配置的视频监控网地址和端口通信,即可实现透明的对接和访问,而无需关注具体是由集群中的哪台服务器提供的处理。而对于系统集群间的通信,也是通过负载均衡器来完成的。每个集群在负载均衡器中都配置有对应的云环境内部私有地址和端口(即集群的代理地址和端口),当有请求到达时,负载均衡器会根据当前的负载情况从目标集群中选择
7、合适的服务器来处理。同时,负载均衡器会对每个集群内的虚拟服务器负载进行监控,动态分析系统各部分的负载情况,并根据实时负载情况和预设规则进行系统伸缩控制。当业务请求增大时,集群服务器负载加重,负载均衡器会在负载达到一定阈值后调用云环境系统接口启动新的集群节点来提供更大的系统承载能力,并在整个集群上实现负载均衡;反之,当业务请求减少时,集群服务器负载减轻,负载均衡器会根据预先设置的规则关闭集群中的某些节点,从而减少了虚拟机的数量,节约云环境中的硬件资源和能源消耗。因此,与典型架构相比,该架构带来以下特性:首先,负载均衡器和集群功能帮助系统获得了高可用性,集群中只要有一台服务器在正常工作,该功能模块
8、就能正常提供系统服务;并且,利用负载均衡器实现了负载均衡的目标,即根据动态的负载情况选择集群中合适的服务器来处理请求;再者,利用集群和负载均衡技术,可以在云环境中实现系统的负载监控,并根据实时负载情况动态调整集群规模和承载能力,实现系统的动态伸缩特性,满足不同应用场景下的业务需求;此外,由于负载均衡器的隔离功能,系统只提供统一访问的外部地址和端口,而系统内部的集群对外不可见,隐藏了集群实现和访问的细节,负载均衡器能提供对网络攻击的检测和拦截,系统整体的安全性得到了提升。图 2 总体架构(二)部署架构在实际部署和应用中,为了获得良好的可用性、伸缩性和安全性,系统集群将部署在私有云环境中,并且利用
9、软件中间件和负载均衡器来分别提供集群和负载均衡功能。同时,还需使用内存共享服务器来为集群中的节点提供共享内存的功能。如图 3 所示,根据总体架构设计,高可用和可伸缩的视频监控系统部署由应用服务器集群、信令服务器集群、数据库服务器集群、媒体服务器集群、其他功能集群、共享服务器集群以及负载均衡器组成。由于系统中所有集群都部署在私有云环境中,集群中节点都采用独立网段分配 IP 地址。每个集群都使用了若干台虚拟机作为载体,分别运行集群软件中间件组件。负载均衡器采用旁路串联结构接入,即从逻辑上,系统中的其他部分都被屏蔽于负载均衡器之后。所有系统的请求和响应都必须经过负载均衡器进行通信。同时,为了避免负载
10、均衡器的单点故障,部署中使用了两台负载均衡器来进行双机热备配置。每台负载均衡器需配置两组 IP 地址,一组与系统集群同网段的 IP 地址供集群间通信使用,一组为外部视频监控网 IP 地址供外部访问使用;两台负载均衡器之间通过专用接口线完成热备状态同步,并共享同一个外部视频监控网 IP 地址。图 3 部署架构进行部署时,为了提高系统的可用性,宜将各服务器的多个实例部署在不同的虚拟机或者物理机上。由于系统中包含多个集群,在部署前应进行全面规划,权衡系统可用性和计算机硬件资源,从而实现高效合理的部署。四、关键技术(一)云环境利用云环境搭建视频监控系统,为系统的高可用性、快速部署、实时监控、动态伸缩提
11、供底层技术支持。虚拟化技术旨在将物理上相互独立的计算机硬件资源,整合为逻辑上统一的整体,为上层系统应用提供服务。通过虚拟化技术整合包括计算、存储、网络等硬件资源,提供统一透明的高可用基础设施环境,为构建高可用和可伸缩的视频监控系统提供保障。一方面,它能帮助系统高效利用计算机硬件资源,降低系统能耗;另一方面,虚拟化技术为系统的高可用性、实时监控、动态伸缩特性提供技术支持。在视频监控系统内部,系统各个集群和服务器以虚拟机为载体执行计算任务;当系统监控到各服务器负载达到一定阈值时,可根据预先设定的规则,启动新的服务器加入集群,提升集群的承载能力。反之,当负载减小时,可关闭部分虚拟机,回收硬件资源供其
12、他负载较大的集群使用。媒体服务器集群通过虚拟存储进行媒体数据的存储和管理,当存储容量到达一定阈值后,可通过添加存储介质的方式提升系统的存储能力,而不会影响系统的正常使用;当存储介质中某些部分损坏时,虚拟存储技术可将该部分数据迁移到正常设备上,实现系统存储的容错性,保证了系统数据的完整性,透明地提供存储服务。随着云技术的不断发展和成熟以及云服务在公安信息化领域逐渐落地,利用云环境搭建稳定、高效、智能的基础设施,从而为视频监控系统提供底层保障和技术支持。(二)集群技术中间件集群技术为视频监控系统带来了容错性和高可用性。通过系统服务器集群,使用同构的服务器提供系统服务,一方面提高了系统的容错性,在单
13、个服务器发生故障时不会影响系统的整体情况;另一方面,通过冗余方式保存关键数据,保证系统数据完整性,提高了系统的可用性和稳定性。大多数中间件集群采用分层结构模型,该模型将整个集群划分为两层:处理层和数据层。前者用于无状态地处理请求,后者用于保存会话数据和状态。其中,每层中都会运行相当数量的实例,处理层实例都是独立运行提供服务,数据层的实例采用冗余方式保存系统关键数据,实例运行于不同的物理机或者虚拟机当中,互相之间不影响。此外,集群中与会话状态无关的数据,可使用内存服务器完成内存共享。如图 4 所示,该集群中处理层和数据层各包含两个实例,其中,处理层的两个实例和负载均衡器连接提供服务,而不保存任何
14、状态相关的数据,数据层的两个实例负责保存系统状态数据。处理层的实例都可以从任意一个数据层的实例上获取系统状态数据,操作完成后,所有数据层实例上的系统状态数据都将得到更新。不同数据层实例保存着冗余的全量系统状态数据,因此,只要有一个数据层实例存活即可保证系统数据不会丢失。并且,当其他数据层实例重新启动后,系统数据会被自动复制到新启动的实例上。集群技术提高系统可用性的原理在于集群技术消除系统中存在的单点故障源,即每层中所有实例的服务器同时发生故障的概率要远小于单个服务器发生故障的概率。图 4 分层结构的中间件集群模型(三)负载均衡利用中间件集群技术和负载均衡技术为系统提供动态伸缩和负载均衡特性,从
15、而保证视频监控系统的服务质量。负载均衡技术可以实时监控集群环境中的负载情况,并根据各个服务器的负载数据和预置规则,实现集群内的负载均衡,减小服务器之间的负载差,从而整体提高系统的服务性能。于此同时,集群分层模型中各层的实例都是同构的服务器,因此,可以通过动态地开启和关闭新的实例来调整系统的承载能力和服务性能。当负载均衡器监控到集群中的负载达到一定阈值时,根据预置规则,将开启新的集群服务器来完成负载提升,保证系统性能;当监控集群负载小于一定阈值时,为了节约硬件资源和能耗,系统将关闭某台服务器,并回收其硬件资源,从而实现了视频监控系统的动态伸缩特性。此外,由于分层结构的集群模型实现,处理层和数据层的实例存在于不同的服务器上,他们之间需要使用进程间通信来完成系统