一种基于容器的生产环境仿真方法转让专利

申请号 : CN201911084391.9

文献号 : CN110572484B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王玉木

申请人 : 浩鲸云计算科技股份有限公司

摘要 :

一种基于容器的生产环境仿真方法,包括以下步骤:根据终端用户的操作系统和中间件组件,制作容器基础镜像;在若干台机器上部署容器服务和容器虚拟化网络组件,同时在容器虚拟化网络组件中创建一个或多个对应于终端用户的网络的虚拟网络;按照终端用户现场的节点部署情况,一对一创建容器,容器的主机名、IP地址与终端用户现场一致;在任意一台机器上部署一个VPN服务端,创建一个独立的VPN网络,并建立从VPN网络到虚拟容器网络的NAT转发;在终端用户电脑上安装VPN客户端,将所述VPN客户端连接到步骤s4中所述的VPN服务端,设置本地路由器,将虚拟容器网络的路由指向VPN服务端。基于容器技术来实现环境仿真,降低成本,提高软件交付效能。

权利要求 :

1.一种基于容器的生产环境仿真方法,其特征在于,包括以下步骤:s1:根据终端用户的操作系统和中间件组件,制作容器基础镜像;

s2:在若干台机器上部署容器服务和容器虚拟化网络组件,同时在容器虚拟化网络组件中创建一个或多个虚拟容器网络,所述虚拟容器网络对应于终端用户的网络;

s3:按照终端用户现场的节点部署情况,一对一创建容器,所述容器的主机名、IP地址与终端用户现场一致;

s4:在步骤s2所述的机器中的任意一台机器上部署一个VPN服务端,创建一个独立的VPN网络,并建立从VPN网络到虚拟容器网络的NAT转发,所述VPN网络启用DHCP服务;

s5:在终端用户电脑上安装VPN客户端,将所述VPN客户端连接到步骤s4中所述的VPN服务端,设置本地路由器,将虚拟容器网络的路由指向VPN服务端;

s6:上传软件包,仿真环境部署完成。

2.根据权利要求1所述的一种基于容器的生产环境仿真方法,其特征在于,步骤s1中,所述容器基础镜像内预装有各种应用所共用的基础组件。

3.根据权利要求1所述的一种基于容器的生产环境仿真方法,其特征在于,步骤s2中,机器的数量根据项目的部署规模来评估,具体的评估方法为按照终端用户现场项目设备的总内存的1/64大小来计算设备资源。

说明书 :

一种基于容器的生产环境仿真方法

技术领域

[0001] 本发明属于电信业务领域,尤其涉及一种基于容器的生产环境仿真方法。

背景技术

[0002] 电信运营商的业务运营支撑系统(Business&Operation Support System,以下简称为BOSS系统)是一种复杂的企业级应用,包含有CRM、计费、结算等多个子系统,通常BOSS软件供应商在研发中心开发好产品,并发布到用户现场去部署和运行。
[0003] 从DevOps交付理念出发,需要在研发中心参考客户的场景,搭建一套模拟现场的环境,有两个作用,一个是研发人员日常开发和测试使用的场景可以更接近项目的实际情况,从避免返工,一个是可以将所内的配置文件发布给现场使用,而不需要现场二次配置。
[0004] 我们称这种环境为生产仿真环境,需要能够和现场保持同样的网络拓扑、节点个数、同样的IP地址、同样的操作系统版本等。
[0005] 传统的实现思路是通过虚拟机来实现,比如现场有30台服务器,则在研发中心申请30个虚拟机,并将虚拟机的IP地址、文件系统目录结构、用户名等按照生产环境进行配置,并部署相同的应用进行测试。对于一个软件提供商来说有众多的项目,即使使用虚拟机也会占用大量资源,同时需要维护众多环境,实施成本非常高。

发明内容

[0006] 本发明提出一种基于容器的生产环境仿真方法,基于容器技术来实现环境仿真,降低成本,提高软件交付效能。
[0007] 为实现上述技术目的,本发明采用以下技术方案:
[0008] 一种基于容器的生产环境仿真方法,包括以下步骤:
[0009] s1:根据终端用户的操作系统和中间件组件,制作容器基础镜像;
[0010] s2:在若干台机器上部署容器服务和容器虚拟化网络组件,同时在容器虚拟化网络组件中创建一个或多个虚拟容器网络,所述虚拟容器网络对应于终端用户的网络;
[0011] s3:按照终端用户现场的节点部署情况,一对一创建容器,所述容器的主机名、IP地址与终端用户现场一致;
[0012] s4:在步骤s2所述的机器中的任意一台机器上部署一个VPN服务端,创建一个独立的VPN网络,并建立从VPN网络到虚拟容器网络的NAT转发,所述VPN网络启用DHCP服务;
[0013] s5:在终端用户电脑上安装VPN客户端,将所述VPN客户端连接到步骤s4中所述的VPN服务端,设置本地路由器,将虚拟容器网络的路由指向VPN服务端;
[0014] s6:上传软件包,仿真环境部署完成。
[0015] 进一步的,所述容器基础镜像内预装有各种应用所共用的基础组件。
[0016] 进一步的,机器的数量根据项目的部署规模来评估,具体评估方法为按照终端用户现场项目设备总内存的1/64来计算机器的资源,例如,假设现场有64台128G内存的设备,则仿真环境需要1台内存为128G的设备。
[0017] 与现有技术相比,本发明具有以下有益效果:
[0018] 首先,本发明要求保护的生产环境仿真方法,通过容器建立仿真环境,可以使得研发人员在研发中心获得与在项目现场一样的操作体验,应用连接的拓扑关系、应用的配置等都可以与现场保持一致。通过仿真环境,研发人员可以更深入的理解现场情况,测试人员可以直接用现场的配置参数进行测试,遵循DevOps理念加强研发和运维的一体化。
[0019] 其次,通过使用容器,同一台主机上的N个仿真节点都共享一个OS内核,而不是启动N个内核,节省了CPU和内存资源。我们以两台物理机分别以容器和虚拟机形式部署仿真节点时的运行态示意图进一步说明使用虚拟机和使用容器来进行环境仿真时的区别,如图2所示,图2左侧是以容器方式部署仿真节点,右侧是以虚拟机方式部署仿真节点,从图上可以看出容器方式存在如下优点:1)由于容器仅做了资源的隔离和资源量的限额控制,并没有做一层虚拟化,因此容器方式比虚机方式节省了虚拟化层;2)由于容器是共享了宿主机的内核,因此只需要运行应用进程,相比虚拟机方式每个虚拟机都要运行完整的内核进程,可以少运行大量进程。
[0020] 再次,通过使用共享基础镜像,利用容器镜像的分层机制,基础软件包只会物理存在一份,因此节省了磁盘空间,如图3所示,图3中公共组件以JDK(Java运行环境)、Tomcat为例,app1.war和app2.war为两个不同的应用程序,分别运行在节点1和节点2上,从图上可以看出,容器方式存在如下优势:利用容器镜像的分层和共享机制,同一个主机上的多个容器共享一个基础镜像层,一方面存储空间上只需要一份,另外一方面文件缓存只缓存一份,可以提升性能,可见,采用容器方式可以降低硬件成本的同时,还能提高效能。另外,通过共用一个基础镜像,并且在基础镜像内预装好基础组件,使得安装新节点的时候,无需从头安装所有组件,节省了大量人力。
[0021] 第四,通过引入容器网络虚拟化组件,打通了多台主机之间的虚拟容器网络,一个虚拟网络可以跨多台机器,因此可以任意仿真现场的网络。同时通过VPN转接技术,使得用户可以直接接入到虚拟网络中,使用体验与原环境一致。
[0022] 综上所述,这种使用容器来实现环境仿真的技术,可以大幅提升效率,降低资源消耗,提高用户体验。

附图说明

[0023] 图1为本发明以容器方式部署仿真节点时网络结构示意图;
[0024] 图2为分别以容器和虚拟机形式部署仿真节点时的运行态示意图;
[0025] 图3为分别以容器和虚拟机方式部署仿真节点时文件存储示意图。

具体实施方式

[0026] 下面以具体实施方式对本发明做进一步的描述。
[0027] 一种基于容器的生产环境仿真方法,包括以下步骤:
[0028] s1:根据终端用户的操作系统和中间件组件,制作容器基础镜像,所述容器基础镜像内预装有各种应用所共用的基础组件;
[0029] s2:在若干台机器(机器的数量根据项目的部署规模来评估)上部署容器服务和容器虚拟化网络组件,同时在容器虚拟化网络组件中创建一个或多个虚拟容器网络,所述虚拟容器化网络对应于终端用户的网络;
[0030] s3:按照终端用户现场的节点部署情况,一对一创建容器,所述容器的主机名、IP地址与终端用户现场一致;
[0031] s4:在步骤s2所述的机器中的任意一台机器上部署一个VPN服务端,创建一个独立的VPN网络,并建立从VPN网络到虚拟容器网络的NAT转发,所述VPN网络启用DHCP服务;
[0032] s5:在终端用户电脑上安装VPN客户端,将所述VPN客户端连接到步骤s4中所述的VPN服务端,设置本地路由器,将虚拟容器网络的路由指向VPN服务端;
[0033] s6:上传软件包,仿真环境部署完成。
[0034] 由于仿真环境的网络需要和原生产环境保持一致,因此每个仿真环境都需要创建一个独立的虚拟化网络,这个网络与外部是隔离的,优选的,引入一个支持容器网络的虚拟化网络组件,一个VPN服务端来实现网络的仿真和远程接入。具体实现如图1所示,实现方式描述如下:引入容器虚拟化网络组件,并将容器的网络通信托管给这个组件,容器内置的默认网络只能实现同一台主机上的容器之间通信,通过虚拟化网络组件可以实现多个主机之间容器网络的互通,如图1中的点状线所示;容器虚拟化网络组件可以在多台机器之上建立一个虚拟的仿真网络,但是仿真网络与外部的办公网络等是隔离的,为了能够实现终端用户接入到仿真环境,在每套仿真环境的宿主机中选择一台,部署一个VPN服务端,用户通过拨VPN创建一个VPN通道,然后通过NAT方式访问到仿真节点,如图1中的虚线所示。
[0035] 通过如上方案,当用户需要接入某个仿真环境时,只需要与对应的VPN服务端建立VPN连接即可,用户体验和连接到生产环境一样的。
[0036] 具体实施例描述如下:
[0037] 选用docker作为容器服务,使用calico作为容器网络组件,使用SoftEther作为VPN服务软件,这三个组件都是开源产品,并且社区活跃。具体实施过程如下:
[0038] 第一步,在所有主机上都部署好容器服务docker和容器网络组件calico组件,选择一台机器部署SoftEther服务端;
[0039] 第二步,使用如下命令在calico中创建一个10.40.0.0/24的虚拟网络:
[0040] calicoctl pool add 10.40.0.0/24--ipip--nat-outgoing;
[0041] 第三步,使用如下命令在docker中关联calico的虚拟网络,并注册这个虚拟网络名称为EMU_NET_10_40:
[0042] docker network create --driver calico --ipam-driver calico-ipam --subnet=10.40.0.0/24EMU_NET_10_40
[0043] 第四步,使用如下命令新建一个仿真节点:
[0044] docker run--net EMU_NET_10_40--name APP1--init--ip10.40.0.10-tidbase_app:1.0
[0045] 指定地址为10.40.0.10,使用基础镜像名称为base_app:1.0,优选的,指定--init参数可以避免仿真环境下出现僵尸进程。优选的,在base_app基础镜像中安装好sshd等常用软件;
[0046] 第五步,配置SoftEther服务端,在管理虚拟HUB菜单中,配置好一个VPN用户。在虚拟NAT和虚拟DHCP服务器选项框,启用SecureNAT,并配置虚拟主机网络接口为192.168.10.1,DHCP范围为192.168.10.10~192.168.10.200,配置一条推送静态路由到VPN客户端的规则:10.40.0.0/255.255.255.0/192.168.10.1。优选的,勾选IPSec/L2TP设置,可以支持更多类型的VPN客户端;
[0047] 第六步,使用SoftEther客户端或者支持L2TP协议的VPN客户端,使用第五步创建的用户名和密码,连接到VPN后可以直接使用10.40.0.10地址访问到第四步创建的仿真节点。