地震预警系统的容器化部署

2023-06-21 21:18:31周跃勇周施文李水龙于伟恒
现代信息科技 2023年1期
关键词:预警系统镜像虚拟化

周跃勇 周施文 李水龙 于伟恒

摘  要:地震预警是减轻地震灾害的有效途径之一。地震预警系统的部署不仅包含地震预警处理程序的安装,应用运行所依赖支持项的部署,还包含监测台网配置信息、预警处理参数信息、预警发布规则等大量参数的设置。系统部署过程繁琐,运维压力较大。文章探讨了利用容器虚拟化Docker技术,实现地震预警系统的一次打包随处运行,以此提升部署实施的运维效率,减轻运维人员的工作压力。

关键词:地震预警;容器虚拟化;Docker镜像

中图分类号:TP311  文献标识码:A 文章编号:2096-4706(2023)01-0087-03

Containerized Deployment of Earthquake Early Warning System

ZHOU Yueyong, ZHOU Shiwen, LI Shuilong, YU Weiheng

(Fujian Earthquake Agency, Fuzhou  350003, China)

Abstract: Earthquake early warning is one of the effective ways to reduce earthquake disasters. The deployment of the earthquake early warning system not only includes the installation of the earthquake early warning processing program, the deployment of the support items on which the application operation depends, but also includes the setting of a large number of parameters such as monitoring network configuration information, early warning processing parameter information, early warning release rules, etc. The system deployment process is cumbersome and the operation and maintenance pressure is high. This paper discusses how to use the container virtualization Docker technology to realize the “one-time packaging and operation everywhere” of the earthquake early warning system, so as to improve the operation and maintenance efficiency of deployment implementation and reduce the work pressure of the operation and maintenance personnel.

Keywords: earthquake early warning; container virtualization; Docker image

0  引  言

在地震波中,破坏性弱的P波传播速度要比破坏性强的S波传播速度快,而电磁波的传播速度远快于地震波。地震预警技术利用这三者的时间差,做到在S波到达某目标区前向该目标区发出地震预警信息,使不同的目标区能有几秒至几十秒的地震应急处置时间,从而减轻人员伤亡和财产损失。地震预警系统就是实现地震预警的一个技术系统,该系统可实时获取并处理监测区域范围内地震监测台站的波形数据。若监测区域内有地震发生,该系统可通过震中附近少量监测台站获取到的P波数据,初步估算出地震三要素(即发震时刻、震中、震级)以及S波到达不同目标区的时间和可能造成的影响(即烈度),然后根据烈度等级对目标区发布地震预警信息(包括地震三要素、本地预估烈度和预警时间等)。

目前在线生产的地震预警系统不仅包含地震预警的核心处理程序,还包含监测台网的配置信息、预警处理的参数信息、预警产出的配置信息、预警目标的配置信息以及预警发布的规则阈值等数据。对这些配置信息进行处理时的一个疏忽或错误,都可能导致地震预警的失败(比如误报或漏报),造成非常不利的社會影响。地震预警处理程序的平稳运行有赖于底层操作系统和基础软件的支撑。部署地震预警系统时,运维人员首先需要在物理机器上安装合适的操作系统以及相应的支持软件,根据技术指南把地震预警处理程序和相关的配置文档安装到指定的目录位置,并根据监测区域的实际情况和预警要求,修改相应的配置信息。随着地震监测台站数量的不断增加,地震预警系统性能的不断提升,系统的复杂度也日益增大,对于系统运维人员来说,保障地震预警系统7×24小时稳定运行和有效产出,并不是一件轻松的事情。因此,为了支持地震预警系统的大范围部署和长期运行,有必要寻找一种简单易行的系统部署实施方案。

1  容器虚拟化技术

如图1所示为虚拟化技术与容器技术的部署示意图,从图中可以看出,容器技术与传统虚拟化技术有很大不同。传统的虚拟化技术通过管理程序,将一台物理主机虚拟化为多台逻辑计算机,并分别配置虚拟资源(如CPU、内存等),每一个逻辑计算机拥有独立的操作系统,应用在虚拟机上运行,相互隔离。而容器虚拟化技术将应用程序或服务、依赖项及配置(抽象化为部署清单文件)一起打包为容器镜像,容器的运行不会独占操作系统,运行在相同宿主机上的容器共享一个操作系统。

容器与底层共享操作系统,省去了管理程序的额外开销,降低了系统负载,在同等条件下可以支持更多的应用运行,从而可以充分利用系统资源。容器可以根据应用的不同精确地分配CPU、内存等系统资源,应用之间不会相互影响,有效地优化资源的使用。我们还可以利用容器编排技术实现应用在集群上随业务负荷变化而自动扩缩容。基于容器技术的交付流程,可以加快微服务的落地,更好地以应用为中心。

在容器虚拟化技术的应用中,开发、测试和生产都是基于同一个镜像。具体来说,就是开发人员使用镜像实现标准开发环境的构建并在该环境下进行开发,开发完成后将应用和完整环境打包封装成镜像进行迁移,测试人员直接部署镜像进行测试,测试通过后的镜像再交由运维人员部署到线上投产。这种基于镜像的部署模式,实现了应用的一次打包随处运行,基本消除了线上线下的运行环境差异,保证了应用程序整個生命周期环境的一致性,解决了传统运维模式下应用运行在不同部署节点上由于运行环境组成缺失或版本不一致导致的问题,大大简化了持续集成、测试和发布的过程,为标准化管理提供了便利。

2  Docker技术

Docker是一个专为开发者和系统管理员设计、以Docker容器作为资源分割和调度的基本单位,同时封装应用及其运行时环境,可用于构建、发布和运行分布式应用的平台。Docker平台包含两个部分:一是负责创建与运行容器的Docker引擎;二是用于发布容器的云服务Docker Hub。Docker为用户提供高度应用程序访问权限、版本控制、快速部署和分发的服务。Docker技术的核心概念有三个:一是镜像(即创建Docker容器的基础),类似虚拟机镜像;二是容器,类似一个轻量级的沙箱,用来运行和隔离应用;三是仓库,类似代码仓库,是Docker集中存放镜像文件的场所。

使用Docker容器有如下好处。

2.1  模块化

Docker容器化方法非常注重在不停止整个应用的情况下单独截取部分应用进行更新或修复的能力。除了这种基于微服务的方法,还可以采用与面向服务的架构(SOA)类似的方法,在多个应用间共享进程。

2.2  层和镜像版本控制

每个Docker镜像文件都包含多个层,这些层组合在一起,构成单个镜像。每当镜像发生改变时,就会创建一个新的镜像层。用户每次发出命令(例如run或copy)时,都会创建一个新的镜像层。Docker重复使用这些层来构建新容器,借此帮助加快流程构建。镜像之间会共享中间变化,从而进一步提升速度、规模及效率。版本控制是镜像层本身自带的能力,每次发生新的更改时,会获得一个内置的更改日志,实现对容器镜像的全盘管控。

2.3  回滚

回滚可以说是层中最值得一提的功能。每个镜像都拥有多个层,可以通过回滚,返回之前的版本。这一功能还支持敏捷开发方法,帮助持续实施集成和部署(CI/CD),使其在工具层面成为一种现实。

2.4  快速部署

启动和运行新硬件,实施部署并投入使用,这在过去一般需要数天时间,而基于Docker容器的部署方式能够在几秒钟之内完成部署。添加或移动容器不需要关闭/启动操作系统,大幅缩短了部署时间;而为每个进程构建容器,则可以快速将这些进程应用到新的应用程序中。除此之外,得益于这种部署速度,相关人员可以轻松无虞、经济高效地创建和销毁容器创建的数据。

概括来说,Docker技术的优点是可以实现更快速的交付和部署、更轻松的迁移和扩展、更高效的资源利用、更简单的更新管理。Docker技术是一种基于微服务,更加精细、可控的技术,可为企业提供更高的效率价值。

3  应用的容器化

容器能够简化应用的构建、部署和运行过程。应用的容器化过程主要是指创建包括应用描述、依赖以及如何运行应用等信息的Dockerfile文件,执行命令“docker image build”将应用程序构建到Docker镜像中。通过命令“docker container run”从镜像启动容器。镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(run-time)结构,即可以通过同一个镜像创建运行多个容器,如图2所示。

地震预警系统目前主要有实时波形数据接收、波形数据质量监测、震相自动捡拾、地震事件判定、地震定位、地震预警信息发布等14个模块,系统容器化示意图如图3所示。

3.1  构建应用系统镜像

镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所需的文件和依赖包。因为容器的设计初衷就是快速和小巧,所以镜像通常都比较小。

地震预警系统用于构建镜像的上下文目录内容,如图4所示。

其中,bin子目录用于存放地震预警应用的jar包文件,conf子目录用于存放地震预警系统的配置文档,lib子目录用于存放应用依赖项的jar包文件,log子目录用于存放应用的日志信息。eew_progress_start.sh是用于启动地震预警应用的命令文件,Dockerfile文件是用于指导构建地震预警系统镜像的描述文件,其内容如图5所示。

在镜像构建上下文目录下,运行命令“docker image build -t eew_progress:latest”构建地震预警系统镜像。构建完成后,可以通过命令“docker image inspect eew_progress:latest”来确认刚刚构建的镜像配置是否正确。

3.2  配置信息获取

容器从地震预警镜像启动后,地震预警应用所需的配置信息存放在/conf子目录里。

如果有些配置信息需要根据运行当时的情况来确定,则可以在容器启动后,对/conf子目录里对应的配置文档进行修改,从而在应用运行时使用最新的配置信息。这些修改在容器删除后也随之丢失。

如果有些配置信息发生了持久的改变(如台网增加了新的台站,或有的参数有了更好的阈值设置等),可以根据构建地震预警镜像所述,更新构建的上下文目录内容,重新生成地震预警镜像并分发。

3.3  波形数据接收

地震预警应用要从外部波形流服务器上实时接收台站波形数据,供后續的仿真环节使用。容器从地震预警镜像启动后,通过主机的iptables规则实现NAT转换,可以从容器内部访问外部的网络。

3.4  产出结果共享存储

地震预警应用的产出,一方面持久化在存储设备上,另一方面通过网络端口对外提供共享服务。

每个容器都被自动分配了本地存储。默认情况下,这是容器全部文件和文件系统保存的地方。非持久化存储属于容器的一部分,并且与容器的生命周期一致——容器创建时会创建非持久化存储,同时该存储也会随容器的删除而删除。

容器从地震预警镜像启动后,目录结构包含了/log子目录,用于存储地震预警应用产生的日志信息,供调试分析之用。这部分信息不能随容器的删除而删除,必须以持久化存储的方式来处理。在容器启动时指定“--mount source=eew_process_log, target=/log”参数,可以为地震预警日志信息指定持久化的卷eew_process_log,允许在容器被删除后依然可以对日志信息进行分析处理。

在配置文档和Dockerfile里,指定了地震预警应用对外提供共享服务的端口,在启动容器时可通过“--publish 容器端口:主机端口”参数,把容器里设置的共享服务端口映射到主机的网络端口,从而允许外部用户通过访问主机端口来获取容器端口的服务内容,实现地震预警信息的网络发布。

4  结  论

Docker技术在金融、互联网等行业的应用已经很成熟,但在地震行业的应用尚不成熟。本文简要介绍了容器化与Docker技术,并利用Docker技术初步实现了地震预警系统的应用容器化,归纳了地震预警应用容器化的关键命令。利用容器虚拟化技术,实现地震预警系统的一次打包随处运行,减轻运维人员的工作压力,提升部署实施的运维效率。后续将对地震预警系统容器化进行完善和优化,并研究利用Kubernetes+Docker实现大规模场景下的多服务部署和管理。

参考文献:

[1] 杨保华,戴王剑,曹亚仑.Docker技术入门与实战 [M].北京:机械工业出版社,2015.

[2] 奈吉尔·波尔顿.深入浅出Docker [M].刘瑞丰,刘康,译.北京:人民邮电出版社,2021.

[3] 阿德里安·莫阿特.Docker开发指南 [M].黄彦邦,译.北京:人民邮电出版社,2019.

[4] 蒋彪.Docker微服务架构实战 [M].北京:电子工业出版社,2018.

[5] 郭甲戌,胡晓勤.基于Docker的虚拟化技术研究 [J].网络安全技术与应用,2017(10):28-29.

[6] 高礼,高昕.Docker技术在软件开发过程中的应用研究 [J].软件,2016,37(3):110-113.

作者简介:周跃勇(1975.02—),男,汉族,福建连城人,工程师,硕士,研究方向:地震监测预警技术研发;通讯作者:周施文(1986.10—),女,汉族,江苏东台人,工程师,硕士,研究方向:地震监测预警技术研发。

收稿日期:2022-05-15

基金项目:福建省地震局科技基金专项地震预警与烈度速报系统的容器化部署(SF202206)

猜你喜欢
预警系统镜像虚拟化
民用飞机机载跑道入侵预警系统仿真验证
镜像
当代党员(2020年20期)2020-11-06 04:17:52
一种基于CNN迁移学习的井下烟、火智能感知预警系统
河南科学(2020年3期)2020-06-02 08:30:14
基于ZigBee与GPRS的输电杆塔倾斜监测预警系统
电子制作(2019年11期)2019-07-04 00:34:36
基于OpenStack虚拟化网络管理平台的设计与实现
电子制作(2019年10期)2019-06-17 11:45:10
镜像
小康(2018年23期)2018-08-23 06:18:52
对基于Docker的虚拟化技术的几点探讨
电子制作(2018年14期)2018-08-21 01:38:20
虚拟化技术在计算机技术创造中的应用
电子测试(2017年11期)2017-12-15 08:57:56
桥、隧安全防范声光预警系统
存储虚拟化还有优势吗?