CN112560244B - 一种基于Docker的虚拟仿真实验系统及方法 - Google Patents
一种基于Docker的虚拟仿真实验系统及方法 Download PDFInfo
- Publication number
- CN112560244B CN112560244B CN202011420943.1A CN202011420943A CN112560244B CN 112560244 B CN112560244 B CN 112560244B CN 202011420943 A CN202011420943 A CN 202011420943A CN 112560244 B CN112560244 B CN 112560244B
- Authority
- CN
- China
- Prior art keywords
- environment
- simulation experiment
- docker
- experiment
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
- G06Q50/20—Education
- G06Q50/205—Education administration or guidance
Abstract
本发明提供了一种基于Docker的虚拟仿真实验系统及方法,包括虚拟实验环境、统一用户登录管理平台。虚拟实验环境实现了对兼容Windows、Linux及其分支操作系统的实验内容和环境管理;统一用户登录管理平台采用B/S架构,终端用户通过浏览器访问实验环境,系统鉴权后授予相应资源权限。本发明主要利用Docker实现仿真实验环境虚拟化,满足仿真实验、科研或课题组的计算环境要求,并将配置好的实验环境、实验工具、科研或课题计算模型等以镜像的方式固化在仿真环境仓库中以充分利用学校现有软硬件资源、仿真实验或科研模型。本发明可以解决传统虚拟化操作系统支持不够、多语言环境支持不足、实验环境动态创建与跟踪实践难的现象。
Description
技术领域
本发明涉及计算机领域,尤其是工程计算模拟领域,尤其是一种虚拟仿真实验系统。
背景技术
虚拟仿真是用一个计算机系统来模仿另一个真实系统的技术,又称为仿真技术或模拟技术,是一种可创建和体验虚拟世界的计算机系统。
Docker是GO语言写、开源的应用容器引擎、轻量级的操作系统虚拟化解决方案,装载Linux、OSX、Windows操作系统环境的应用,实现了对应用的编译、封装、部署、运行等生命周期管理。Docker提供了一种可移植的标准化部署过程,支持规模化、自动化、异构化的部署。
Kubernetes是Google开发的开源的容器编排工具,是一个完备的分布式系统支撑平台,具有集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。
虚拟仿真实验系统管理功能基于J2EE环境开发,J2EE是由Sun公司定义的开发分布式企业级应用的规范。数据库采用Mysql,存储虚拟实验的过程数据、结果数据以及整体系统的用户、配置、日志等数据。
虚拟实验环境是为学生、科研人员提供实验教学、项目实验模拟的基础,搭建实验环境有三个难点问题:
1、虚拟环境的操作系统支持:实践中实验环境依赖的操作系统存在多样性,如:Windows操作系统、Unix/Linux操作及其分支、嵌入式操作系统等,虚拟环境的基础是操作系统虚拟化,在此基础上构建特定的实验内容。当前,云计算技术已经比较成熟,虚拟操作系统比较方便,市面上较为普及的解决方案是公有云、私有云,公有云成本较高,不太适合学校教学使用;私有云如采用商用云系统,如:微软云解决方案Azure、阿里云ECS以及其他厂家的云服务方案,方案本身成本昂贵,实验环境的定制化较为困难;
2、多语言环境支持:科研及教学过程中,不同的科研组、院系使用的开发语言多种多样,如:水利水电学院各系,实验模型多用Fortran;计算机与信息学院开发语言教学多采用Java、C#;另外,实验教学中的软件开发工具、教学用数据库软件,也存在着多样性。因此,虚拟仿真实验多语言支持是实践中较难解决的问题;
3、实验环境的动态创建与跟踪:实验环境的创建存在时间、空间的不确定性,虚拟仿真实验系统根据实验要求生成对应的环境,同时,识别用户、跟踪实验过程,采集实验产生的数据,形成实验结果。异构操作系统、异构实验环境,用户识别、实验数据收集是实践中必须解决的问题;
如何解决基础环境的一致性问题,如何提高基础IT资源使用率和复用率,如何实现快速弹性部署与资源回收,如何提供多语种、多学科、多班级、全天候仿真实验,是当下面临的刚性需求。因此,设计一套方案,解决以上问题,虚拟仿真实验系统才有建设的可能。
发明内容
作为校级虚拟仿真实验系统,既要满足各个院系、科研组的实验环境需求,又要满足学校的管理需求和物力资源的分配问题,主要包括:
实验环境的配置:任课教师、科研组教师可以配置所需要的实验环境,包括:操作系统、自愿要求、实验工具、实验基础数据导入、认证方式、实验数据采集方式等;
资源总体管理:有两层需求,一层:实验环境部署、调度、认证、生命周期及健康状况;另一层:资源的主动发现、随时扩展或收缩容器规模,按照具体实验划分管理域,域内负载均衡等;
资源授权:系统根据用户角色授予功能权限及资源域权限,终端用户登陆后,根据用户属性分配实验入口及实验资源;
数据采集:虚拟仿真实验需要采集两个层面的数据,一层是实验结果数据,如:学生完成实验的情况,以实验评分体现学生实验的成绩;另一层是实验产生的个性化数据,如:科研组实验的个性化数据,系统提供数据的导出及基本的按数据项统计分析功能;
系统还应体用按照院系、课题组的分权分域、学生管理、教师管理、成绩管理、实验管理、校级视图、院系视图、课题组视图、教师视图等功能。
本发明主要利用Docker实现仿真实验环境的虚拟化,满足各个仿真实验、科研或课题组的计算环境要求,并将配置好的实验环境、实验工具、科研或课题计算模型等以镜像的方式固化在仿真环境仓库中,仿真环境的使用不受使用者的基数水平、时间、空间的限制,最大程度利用学校已有的硬件、软件、仿真实验/科研模型,在此基础上实现校级学术、科研、仿真环境研究成果的积累。
为了实现上述目的,实验环境采用Docker进行环境虚拟化及环境的部署、装载,资源总体管理采用Kubernetes。通过Kubernetes对Docker进行编排,实现实验环境的动态配置、部署、创建、监控、回收等功能。
本发明采用的具体技术方案如下:
一种基于Docker的虚拟仿真实验系统及方法,其特征在于,本发明包括虚拟实验环境部分、统一用户登录管理平台部分,所述虚拟实验环境部分兼容Windows、Linux及其分支操作系统的实验内容,同时实现对虚拟实验环境管理;所述统一用户登录管理平台部分采用B/S架构,最终使用者通过浏览器登录远程实验环境主机,系统根据用户登录账户授予系统功能权限及虚拟环境资源权限。
作为优选,所述虚拟仿真实验系统包括Docker基础环境模块、Kubernetes与Docker集成模块、仿真实验环境配置模块;所述Docker基础环境模块在操作系统层提供了统一标准的容器运行环境,处在最底层,负责实际镜像拉取,容器启停操作;所述Kubernetes与Docker集成模块则提供了跨节点容器调度编排能力,负责实际运行pod网络、存储对接,通过调用Docker基础环境模块提供的API实现;所述仿真实验环境配置模块,是对实际仿真实验环境的应用层的管理抽象,包含应用管理、镜像管理、认证管理、资源管理其静态表现为实验运行环境的Docker镜像,其动态表现为实际运行pod。
作为优选,所述Kubernetes与Docker整合用于仿真实验平台的网络架构如下:
控制口Apiserver:作为整个系统的控制入口,以REST API服务提供接口。
复制控制器ReplicationController(RC):RC用来管理Pod,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。
服务器Service:定义了一个Pod逻辑集合的抽象资源,Pod集合中的容器提供相同的功能。集合根据定义的Label和selector完成,当创建一个Service后,会分配一个Cluster IP,这个IP与定义的端口提供这个集合一个统一的访问接口,并且实现负载均衡。
其他Etcd:负责节点间的服务发现和配置共享。
资源分配器Scheduler:负责节点资源管理,接受来自Apiserver创建Pods任务,并分配到某个节点。
控制器Master:是中央控制点,它提供了一个统一的集群视图。有一个主节点,控制多个下属Slave。
运行器Minion:是一个由主节点委托运行任务的worker。它能运行一个或多个Pods。它在容器环境中提供了一个特定于应用程序的"虚拟主机"。
库贝代理Kube-proxy:运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
部署单元Pod:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。
作为优选,仿真实验实际运行过程基本如下:
第一步,依据不同的仿真实验实际,选取对应的基础Docker镜像,如ubuntu14.04,再安装依赖库,如QT,最后集成仿真实验程序和配置文件封装出一个通用的Docker镜像;
第二步,将做好的Docker镜像上传至仿真PaaS系统镜像仓库;
第三步,创建不同的账号和租户;
第四步,使用对应的账号登录后,通过仿真实验镜像创建出实际的应用(Pod),Kubernetes的Scheduler组件负责挑选运行该应用最合适的节点;
第五步,进入仿真实验环境开始仿真实验;
第六步,实验完成,实验结果数据收集。
作为优选,在仿真实验实际运行过程中,Docker组件负责镜像构建和上传,账号认证和应用运行由仿真PaaS平台完成,仿真实验则为实际运行的Pod;仿真实验入口格式为“Master节点IP:NodePort”,实际流量由Kubernetes根据Etcd注册信息,将流量通过Kube-proxy引流至ClusterIP,ClusterIP会自动将流量负载至实际运行的pod(仿真实验);从终端用户的角度看,一个仿真实验环境就是一个URL。
作为优选,用户登录仿真实验环境系统及仿真实验资源换件的流程包括如下步骤:
步骤1:终端用户使用浏览器登陆实验平台,进行账户身份的校检,实验平台返回给与用户身份相对应的功能及资源权限;
步骤2:用户在权限范围内选择仿真实验,并向实验平台请求开启仿真实验环境,实验品平台接受请求后,通过API请求Kubernetes;
步骤3:Kubernetes接收请求后,会校验请求是否正确授权。若确认是非法请求直接拒绝,是合法请求则将请求的Deployment,Service资源和状态全部写入Etcd;
步骤4:Kubernetes中的Controller组件会实时监听Etcd事件,当监听到有Deployment资源需要创建时,会解析需要创建的Pod资源及数量回写到Etcd;
步骤5:Kubernetes中的Scheduler组件会实时监听Etcd事件,当监听到有Pod资源需要创建时,会根据标签过滤和节点cpu,内存,磁盘等实际资源占用情况进行得分评估,挑选出最适合运行Pod的节点,并将对应信息回写至Etcd;
步骤6:Kubernetes中的Kublet组件会实时监听Etcd事件,当探测到本节点需要创建Pod,会调用同节点的Docker API来拉取镜像并创建Pod;
步骤7:Kubernetes中的Kube-proxy组件会实时监听Etcd事件,当监听到有Service资源需要创建,会根据Etcd中的注册信息创建相应的iptables规则,以暴露该服务的入口,实际表现为节点IP:NodePort。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤2中,各模块具体调用逻辑说明如下:
Docker基础环境模块:在操作系统层提供了统一标准的容器运行环境,实际指,虚拟机、物理机在安装完操作系统Centos7.5后,需要在该操作系统上安装稳定版本的Docker-CE软件包;Docker-CE是一个兼容OCI标准的主流容器运行时方案,是目前真实生产环境使用最广的容器运行时;Docker-CE软件包安装完成后,会在操作系统上启动一个dockerd的常驻内存服务,该服务是一个C/S架构;其它dockerd是服务端,docker命令行为客户端,除提供命令行外,还提供一套完整的RESTful API接口,以方便和其它环境对接;dockerd负责响应docker命令行或API接口传入指令,并通知docker-containerd进程进行容器的启动、停止、暂停、删除,镜像的上传、下载、导入、导出等操作;
Kubernetes与Docker集成模块:利用Kubernetes提供了跨节点容器调度编排能力。Kubernetes以其设计先进性著称,为容器运行时接口提供了统一的规范CRI,方便后续对接除Docker以外的运行时;为容器挂载存储卷提供了统一的规范CSI,本身也内建支持cephfs,nfs等常见存储,虚拟仿真系统使用的存储方式为HostPath;为容器跨节点通信提供了统一的网络接入规范CNI,虚拟仿真系统使用的是Calico网络解决方案;
仿真实验环境配置模块:是实际仿真实验应用管理系统,向上对接仿真实验Portal,负责接收门户网站下发的课程创建请求,向下对接Kubernetes与Docker集成模块,调用仿真实验PaaS接口创建相应资源,最终将课程访问URL返回给仿真实验Portal。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤3中,关于ubuntu14.04构建QT仿真程序具体说明如下:
以ubuntu14.04镜像为基础镜像,安装QT运行环境和Octave工程计算软件包,这样同时基于QT图形和Octave的仿真实验就可能共享同一份基础环境Docker镜像,相比于使用虚拟机占用空间更小,同时避免了因人为因素造成环境不一致。同类别的仿真实验,只需要将仿真实验二进制程序和配置文件拷贝至基础镜像,即可生成不同实验课程的稳定镜像,版本可控,上层仿真实验Portal可根据实验提供不同版本的课程。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤4中,关于身份认证和资源授权具体说明如下:
仿真实验PaaS平台,提供多种用户认证机制,主要体现为用户、团队、租户授权机制,其中用户支持平台本地用户的同时还支持WindowsAD,OpenLDAP等LDAP认证,还支持通过OpenID对接第三方认证系统;
租户的授权对象是团队,不能直接将租户授权给某个用户,租户可以授权给多个团队,用户也可以隶属于多个团队;
当用户登录时,仿真实验PaaS系统会先校验用户的密码是否正确,密码是否过期,再确认用户对分配的租户有何种权限,这直接影响到后续应用部署。
本发明可以解决传统虚拟化操作系统支持不够、多语言环境支持不足、实验环境动态创建与跟踪实践难的现象。
附图说明
图1为Kubernetes与Docker集成架构图;
图2为仿真实验使用流程图。
具体实施方式
实施例1
Docker为所有的虚拟仿真实验环境提供了底层支持,无论是Linux及其分支、Windows及其分支版本,实验环境开发语言无论是JAVA、Fortran、R、Python等,都可以通过Docker容器进行虚拟化。
本发明使用Docker环境的虚拟化,主要通过手动将实验环境镜像配置生成,用户有实验环境使用需求时,根据课程配置及对应的实验环境镜像,调用Docker启动镜像,生成用户所需仿真环境。
本发明采用的具体技术方案如下:
一种基于Docker的虚拟仿真实验系统及方法,其特征在于,本发明包括虚拟实验环境部分、统一用户登录管理平台部分,所述虚拟实验环境部分兼容Windows、Linux及其分支操作系统的实验内容,同时实现对虚拟实验环境管理;所述统一用户登录管理平台部分采用B/S架构,最终使用者通过浏览器登录远程实验环境主机,系统根据用户登录账户授予系统功能权限及虚拟环境资源权限。
作为优选,所述虚拟仿真实验系统包括Docker基础环境模块、Kubernetes与Docker集成模块、仿真实验环境配置模块;所述Docker基础环境模块在操作系统层提供了统一标准的容器运行环境,处在最底层,负责实际镜像拉取,容器启停操作;所述Kubernetes与Docker集成模块则提供了跨节点容器调度编排能力,负责实际运行pod网络、存储对接,通过调用Docker基础环境模块提供的API实现;所述仿真实验环境配置模块,是对实际仿真实验环境的应用层的管理抽象,包含应用管理、镜像管理、认证管理、资源管理其静态表现为实验运行环境的Docker镜像,其动态表现为实际运行pod。
作为优选,所述Kubernetes与Docker整合用于仿真实验平台的网络架构如下:
控制口Apiserver:作为整个系统的控制入口,以REST API服务提供接口。
复制控制器ReplicationController(RC):RC用来管理Pod,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。
服务器Service:定义了一个Pod逻辑集合的抽象资源,Pod集合中的容器提供相同的功能。集合根据定义的Label和selector完成,当创建一个Service后,会分配一个Cluster IP,这个IP与定义的端口提供这个集合一个统一的访问接口,并且实现负载均衡。
其他Etcd:负责节点间的服务发现和配置共享。
资源分配器Scheduler:负责节点资源管理,接受来自Apiserver创建Pods任务,并分配到某个节点。
控制器Master:是中央控制点,它提供了一个统一的集群视图。有一个主节点,控制多个下属Slave。
运行器Minion:是一个由主节点委托运行任务的worker。它能运行一个或多个Pods。它在容器环境中提供了一个特定于应用程序的"虚拟主机"。
库贝代理Kube-proxy:运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略。
部署单元Pod:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。
作为优选,仿真实验实际运行过程基本如下:
第一步,依据不同的仿真实验实际,选取对应的基础Docker镜像,如ubuntu14.04,再安装依赖库,如QT,最后集成仿真实验程序和配置文件封装出一个通用的Docker镜像;
第二步,将做好的Docker镜像上传至仿真PaaS系统镜像仓库;
第三步,创建不同的账号和租户;
第四步,使用对应的账号登录后,通过仿真实验镜像创建出实际的应用(Pod),Kubernetes的Scheduler组件负责挑选运行该应用最合适的节点;
第五步,进入仿真实验环境开始仿真实验;
第六步,实验完成,实验结果数据收集。
作为优选,在仿真实验实际运行过程中,Docker组件负责镜像构建和上传,账号认证和应用运行由仿真PaaS平台完成,仿真实验则为实际运行的Pod;仿真实验入口格式为“Master节点IP:NodePort”,实际流量由Kubernetes根据Etcd注册信息,将流量通过Kube-proxy引流至ClusterIP,ClusterIP会自动将流量负载至实际运行的pod(仿真实验);从终端用户的角度看,一个仿真实验环境就是一个URL。
作为优选,用户登录仿真实验环境系统及仿真实验资源换件的流程包括如下步骤:
步骤1:终端用户使用浏览器登陆实验平台,进行账户身份的校检,实验平台返回给与用户身份相对应的功能及资源权限;
步骤2:用户在权限范围内选择仿真实验,并向实验平台请求开启仿真实验环境,实验品平台接受请求后,通过API请求Kubernetes;
步骤3:Kubernetes接收请求后,会校验请求是否正确授权。若确认是非法请求直接拒绝,是合法请求则将请求的Deployment,Service资源和状态全部写入Etcd;
步骤4:Kubernetes中的Controller组件会实时监听Etcd事件,当监听到有Deployment资源需要创建时,会解析需要创建的Pod资源及数量回写到Etcd;
步骤5:Kubernetes中的Scheduler组件会实时监听Etcd事件,当监听到有Pod资源需要创建时,会根据标签过滤和节点cpu,内存,磁盘等实际资源占用情况进行得分评估,挑选出最适合运行Pod的节点,并将对应信息回写至Etcd;
步骤6:Kubernetes中的Kublet组件会实时监听Etcd事件,当探测到本节点需要创建Pod,会调用同节点的Docker API来拉取镜像并创建Pod;
步骤7:Kubernetes中的Kube-proxy组件会实时监听Etcd事件,当监听到有Service资源需要创建,会根据Etcd中的注册信息创建相应的iptables规则,以暴露该服务的入口,实际表现为节点IP:NodePort。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤2中,各模块具体调用逻辑说明如下:
Docker基础环境模块:在操作系统层提供了统一标准的容器运行环境,实际指,虚拟机、物理机在安装完操作系统Centos7.5后,需要在该操作系统上安装稳定版本的Docker-CE软件包;Docker-CE是一个兼容OCI标准的主流容器运行时方案,是目前真实生产环境使用最广的容器运行时;Docker-CE软件包安装完成后,会在操作系统上启动一个dockerd的常驻内存服务,该服务是一个C/S架构;其它dockerd是服务端,docker命令行为客户端,除提供命令行外,还提供一套完整的RESTful API接口,以方便和其它环境对接;dockerd负责响应docker命令行或API接口传入指令,并通知docker-containerd进程进行容器的启动、停止、暂停、删除,镜像的上传、下载、导入、导出等操作;
Kubernetes与Docker集成模块:利用Kubernetes提供了跨节点容器调度编排能力。Kubernetes以其设计先进性著称,为容器运行时接口提供了统一的规范CRI,方便后续对接除Docker以外的运行时;为容器挂载存储卷提供了统一的规范CSI,本身也内建支持cephfs,nfs等常见存储,虚拟仿真系统使用的存储方式为HostPath;为容器跨节点通信提供了统一的网络接入规范CNI,虚拟仿真系统使用的是Calico网络解决方案;
仿真实验环境配置模块:是实际仿真实验应用管理系统,向上对接仿真实验Portal,负责接收门户网站下发的课程创建请求,向下对接Kubernetes与Docker集成模块,调用仿真实验PaaS接口创建相应资源,最终将课程访问URL返回给仿真实验Portal。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤3中,关于ubuntu14.04构建QT仿真程序具体说明如下:
以ubuntu14.04镜像为基础镜像,安装QT运行环境和Octave工程计算软件包,这样同时基于QT图形和Octave的仿真实验就可能共享同一份基础环境Docker镜像,相比于使用虚拟机占用空间更小,同时避免了因人为因素造成环境不一致。同类别的仿真实验,只需要将仿真实验二进制程序和配置文件拷贝至基础镜像,即可生成不同实验课程的稳定镜像,版本可控,上层仿真实验Portal可根据实验提供不同版本的课程。
作为优选,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤4中,关于身份认证和资源授权具体说明如下:
仿真实验PaaS平台,提供多种用户认证机制,主要体现为用户、团队、租户授权机制,其中用户支持平台本地用户的同时还支持WindowsAD,OpenLDAP等LDAP认证,还支持通过OpenID对接第三方认证系统;
租户的授权对象是团队,不能直接将租户授权给某个用户,租户可以授权给多个团队,用户也可以隶属于多个团队;
当用户登录时,仿真实验PaaS系统会先校验用户的密码是否正确,密码是否过期,再确认用户对分配的租户有何种权限,这直接影响到后续应用部署。
作为一种可能的实施方式,如图1所示的Kubernetes与Docker集成架构图,总体分为两部分:一部分为用户接入层,分为普通用户管理员视角,全部通过浏览器访问。另一部分为仿真实验PaaS核心架构,包括若干台主机组成的Master控制节点角色,通常需要3台或5台主机,主要负责Pod、Deploy等资源的调度和集群状态维护;还包括若干台主机组成的Minion计算节点角色,具体可达上千台规模,主要负责Pod创建、销毁等全生命周期管理;Master和Minion间的消息传递全部依赖分布式数据库Etcd。
作为一种可能的实施方式,如图2所示的仿真实验使用流程图,总体分为两个流程:一个流程是课程上架,由不同的课程方根据仿真实际要求创建好课程镜像,并上传至指定镜像仓库;一个流程是课程使用,终端用户登录实验平台后,通过一系列认证与鉴权后,选择需要实验的课程项目,发起实验环境创建请求,仿真实验PaaS平台接收请求后会以该课程对应的课程镜像自动创建出可用的实验环境,创建成功后将课程URL返回给终端用户,接下来便开始正式的仿真实验。
实施例2
河海大学虚拟仿真实验系统建成后,在河海大学计算机与信息学院首先使用,搭建的实验环境为:复杂信道条件下通信链路级仿真实验,虚拟仿真实验(WEB)平台一台独立的物理主机,kubernetes与Docker集成部署:一主二从,主服务器(Master)部署在一台Linux主机,操作系统为CentOS 7.4,CPU:28核,内存:48GB,硬盘:2TB,两张千兆网卡,一张网卡用于内网连接,一张用于公网访问,从服务器配置与主服务配置一致。
复杂信道条件下通信链路级仿真实验是运行在Ubuntu 14.04操作系统下,由QT开发环境开发的一款应用,在实际学生使用过程中,在136个实验环境并发情况下,环境生成的时间小于10秒;282个实验环境并发下,环境生成时间小于20秒;实验环境在425个并发时,Docker主服务器报创建失败,原因:内存不足。实际观测发现:kubernetes与Docker整体CPU占用小于10%,单个“复杂信道条件下通信链路级仿真实验”实验环境内存占用小于334MB,实验环境在424个并发时,主从服务器的CPU整体占用率平均在72.7%,由于实验环境软件条件及硬件环境资源未对多个实验进行CPU、内存的对比测试,但是,对比之前使用其他的操作系统级虚拟化软件,如:VMware、OpenStack,在资源充分利用方面有了较大的提升。
河海大学虚拟仿真实验系统已经投入使用,下一步计划开通“多尺度气陆耦合水文水资源预报预测预警专业模型”仿真实验环境,并对外界进行收费开发,此科研模型的名称为:WRF3.9.1.1气象预报模型,作用为:用于精细尺度的天气模拟与预报,真实天气的个案模拟,也可以用其包含的模块组作为基本物理过程探讨的理论根据。此科研模型服务要求从编译、发布、在线使用等统一实现,编译环境为:Linux操作系统,模型运行环境为:windows环境,通过EXE方式启动,数据量级:TB级,输出要求:气象要素空间分布图,需NetCDF数据处理工具,如NCL、CDO等。此科研模型服务对虚拟仿真实验系统提出了更高的要求,在后续的系统完善过程中需要完成一键式环境编译、发布、运行。
上述各实施例仅用于说明本发明,诊断模型各网络结构的输入的大小和参数都是可以有所变换,在本发明技术方案的基础上,凡根据本发明原理对个别部件进行改进和等同变换,均不应该排除在本发明的保护范围之外。
Claims (8)
1.一种基于Docker的虚拟仿真实验方法,其特征在于,包括虚拟实验环境部分、统一用户登录管理平台部分,所述虚拟实验环境部分兼容Windows、Linux及其分支操作系统的实验内容,同时实现对虚拟实验环境管理;所述统一用户登录管理平台部分采用B/S架构,最终使用者通过浏览器登录远程实验环境主机,系统根据用户登录账户授予系统功能权限及虚拟环境资源权限;
用户登录仿真实验环境系统及仿真实验资源换件的流程包括如下步骤:
步骤1:终端用户使用浏览器登陆实验平台,进行账户身份的校检,实验平台返回给与用户身份相对应的功能及资源权限;
步骤2:用户在权限范围内选择仿真实验,并向实验平台请求开启仿真实验环境,实验品平台接受请求后,通过API请求Kubernetes;
步骤3:Kubernetes 接收请求后,会校验请求是否正确授权;若确认是非法请求直接拒绝,是合法请求则将请求的Deployment, Service资源和状态全部写入Etcd;
步骤4:Kubernetes 中的Controller组件会实时监听Etcd事件,当监听到有Deployment资源需要创建时,会解析需要创建的Pod资源及数量回写到Etcd;
步骤5:Kubernetes 中的Scheduler组件会实时监听Etcd事件,当监听到有Pod资源需要创建时,会根据标签过滤和节点cpu, 内存,磁盘实际资源占用情况进行得分评估,挑选出最适合运行Pod的节点,并将对应信息回写至Etcd;
步骤6:Kubernetes中的Kublet组件会实时监听Etcd事件,当探测到本节点需要创建Pod,会调用同节点的Docker API来拉取镜像并创建Pod;
步骤7:Kubernetes中的Kube-proxy组件会实时监听Etcd事件,当监听到有Service资源需要创建,会根据Etcd中的注册信息创建相应的iptables 规则,以暴露该服务的入口,实际表现为节点IP:NodePort。
2.根据权利要求1所述的一种基于Docker的虚拟仿真实验方法,其特征在于,所述虚拟仿真实验系统包括Docker基础环境模块、Kubernetes与Docker集成模块、仿真实验环境配置模块;所述Docker基础环境模块在操作系统层提供了统一标准的容器运行环境,处在最底层,负责实际镜像拉取,容器启停操作;所述Kubernetes与Docker集成模块则提供了跨节点容器调度编排能力,负责实际运行pod网络、存储对接,通过调用Docker基础环境模块提供的API实现;所述仿真实验环境配置模块,是对实际仿真实验环境的应用层的管理抽象,包含应用管理、镜像管理、认证管理、资源管理其静态表现为实验运行环境的Docker镜像,其动态表现为实际运行pod。
3.根据权利要求1所述的一种基于Docker的虚拟仿真实验方法,其特征在于,Kubernetes与Docker整合用于仿真实验平台的网络架构如下:
控制口Apiserver:作为整个系统的控制入口,以REST API服务提供接口;
复制控制器ReplicationController(RC):RC用来管理Pod,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量;
服务器Service:定义了一个Pod逻辑集合的抽象资源,Pod集合中的容器提供相同的功能;集合根据定义的Label和selector完成,当创建一个Service后,会分配一个ClusterIP,这个IP与定义的端口提供这个集合一个统一的访问接口,并且实现负载均衡;
其他Etcd:负责节点间的服务发现和配置共享;
资源分配器 Scheduler:负责节点资源管理,接受来自Apiserver创建Pods任务,并分配到某个节点;
控制器Master:是中央控制点,它提供了一个统一的集群视图; 有一个主节点,控制多个下属Slave;
运行器Minion:是一个由主节点委托运行任务的worker; 它能运行一个或多个Pods;它在容器环境中提供了一个特定于应用程序的"虚拟主机";
库贝代理Kube-proxy:运行在每个计算节点上,负责Pod网络代理;定时从etcd获取到service信息来做相应的策略;
部署单元Pod:在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。
4.根据权利要求1所述的一种基于Docker的虚拟仿真实验方法,其特征在于,仿真实验实际运行过程基本如下:
第一步,依据不同的仿真实验实际,选取对应的基础Docker镜像,ubuntu14.04,再安装依赖库,QT,最后集成仿真实验程序和配置文件封装出一个通用的Docker镜像;
第二步,将做好的Docker镜像上传至仿真PaaS系统镜像仓库;
第三步,创建不同的账号和租户;
第四步,使用对应的账号登录后,通过仿真实验镜像创建出实际的应用Pod,Kubernetes的Scheduler组件负责挑选运行该应用最合适的节点;
第五步,进入仿真实验环境开始仿真实验;
第六步,实验完成,实验结果数据收集。
5.根据权利要求1-4中任意一项所述的一种基于Docker的虚拟仿真实验方法,其特征在于,在仿真实验实际运行过程中,Docker组件负责镜像构建和上传,账号认证和应用运行由仿真PaaS平台完成,仿真实验则为实际运行的Pod;仿真实验入口格式为“Master节点IP:NodePort”,实际流量由Kubernetes根据Etcd注册信息,将流量通过Kube-proxy 引流至ClusterIP,ClusterIP会自动将流量负载至实际运行的pod仿真实验;从终端用户的角度看,一个仿真实验环境就是一个URL。
6.根据权利要求1-4中任意一项所述的一种基于Docker的虚拟仿真实验方法,其特征在于,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤2中,各模块具体调用逻辑说明如下:
Docker基础环境模块:在操作系统层提供了统一标准的容器运行环境,实际指,虚拟机、物理机在安装完操作系统Centos7.5后,需要在该操作系统上安装稳定版本的Docker-CE软件包;Docker-CE是一个兼容OCI标准的主流容器运行时方案,是目前真实生产环境使用最广的容器运行时;Docker-CE软件包安装完成后,会在操作系统上启动一个dockerd的常驻内存服务,该服务是一个C/S架构;其它dockerd是服务端,docker命令行为客户端,除提供命令行外,还提供一套完整的RESTful API接口,以方便和其它环境对接;dockerd 负责响应docker命令行或API接口传入指令,并通知docker-containerd进程进行容器的启动、停止、暂停、删除,镜像的上传、下载、导入、导出操作;
Kubernetes与Docker集成模块:利用Kubernetes提供了跨节点容器调度编排能力;Kubernetes 以其设计先进性著称,为容器运行时接口提供了统一的规范CRI,方便后续对接除Docker以外的运行时;为容器挂载存储卷提供了统一的规范CSI,本身也内建支持cephfs, nfs常见存储,虚拟仿真系统使用的存储方式为HostPath;为容器跨节点通信提供了统一的网络接入规范CNI,虚拟仿真系统使用的是Calico网络解决方案;
仿真实验环境配置模块:是实际仿真实验应用管理系统,向上对接仿真实验Portal,负责接收门户网站下发的课程创建请求,向下对接Kubernetes与Docker集成模块,调用仿真实验PaaS接口创建相应资源,最终将课程访问URL返回给仿真实验Portal。
7.根据权利要求1-4中任意一项所述的一种基于Docker的虚拟仿真实验方法,其特征在于,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤3中,关于ubuntu14.04构建QT仿真程序具体说明如下:
以ubuntu14.04镜像为基础镜像,安装QT运行环境和Octave工程计算软件包,这样同时基于QT图形和Octave的仿真实验就共享同一份基础环境Docker镜像,相比于使用虚拟机占用空间更小,同时避免了因人为因素造成环境不一致;同类别的仿真实验,只需要将仿真实验二进制程序和配置文件拷贝至基础镜像,即可生成不同实验课程的稳定镜像,版本可控,上层仿真实验Portal可根据实验提供不同版本的课程。
8.根据权利要求1-4中任意一项所述的一种基于Docker的虚拟仿真实验方法,其特征在于,在所述用户登录仿真实验环境系统及仿真实验资源换件的流程的步骤4中,关于身份认证和资源授权具体说明如下:
仿真实验PaaS平台,提供多种用户认证机制,体现为用户、团队、租户授权机制,其中用户支持平台本地用户的同时还支持WindowsAD, OpenLDAP的LDAP认证,还支持通过OpenID对接第三方认证系统;
租户的授权对象是团队,不能直接将租户授权给某个用户,租户可以授权给多个团队,用户也可以隶属于多个团队;
当用户登录时,仿真实验PaaS系统会先校验用户的密码是否正确,密码是否过期,再确认用户对分配的租户有何种权限,这直接影响到后续应用部署。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420943.1A CN112560244B (zh) | 2020-12-08 | 2020-12-08 | 一种基于Docker的虚拟仿真实验系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011420943.1A CN112560244B (zh) | 2020-12-08 | 2020-12-08 | 一种基于Docker的虚拟仿真实验系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112560244A CN112560244A (zh) | 2021-03-26 |
CN112560244B true CN112560244B (zh) | 2021-12-10 |
Family
ID=75059477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011420943.1A Active CN112560244B (zh) | 2020-12-08 | 2020-12-08 | 一种基于Docker的虚拟仿真实验系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112560244B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113486333A (zh) * | 2021-04-12 | 2021-10-08 | 贵州电网有限责任公司 | 一种利用云迁移技术实现的脆弱性分析环境仿真方法及系统 |
CN113660133B (zh) * | 2021-07-01 | 2023-03-14 | 中国电子科技集团公司电子科学研究院 | 一种支持SaaS模式的仿真试验系统及方法 |
CN113626043B (zh) * | 2021-08-04 | 2024-04-05 | 武汉美和易思数字科技有限公司 | 一种基于Kubernetes的容器开发环境自动打包方法及系统 |
CN113676524A (zh) * | 2021-08-09 | 2021-11-19 | 浪潮云信息技术股份公司 | 一种实现多cpu架构容器网络代理的方法 |
CN113672207B (zh) * | 2021-09-02 | 2024-03-26 | 北京航空航天大学 | 一种x语言混合模型建模系统、方法及存储介质 |
CN113742083A (zh) * | 2021-09-13 | 2021-12-03 | 京东科技信息技术有限公司 | 调度仿真方法、装置、计算机设备及存储介质 |
CN113676363B (zh) * | 2021-10-22 | 2022-02-18 | 南京赛宁信息技术有限公司 | 一种网络靶场流量生成系统及方法 |
CN114124771B (zh) * | 2021-11-02 | 2023-07-21 | 中国电子科技集团公司第三十研究所 | 基于Docker的网络安全测试工具平台及构建方法 |
CN114255627A (zh) * | 2021-12-24 | 2022-03-29 | 郑州捷安高科股份有限公司 | 一种基于虚拟仿真软件的实训方法及系统 |
CN114296883B (zh) * | 2021-12-31 | 2023-10-31 | 中国人民解放军国防科技大学 | 一种轻载虚拟化网络实验行为仿真器构建和调度方法 |
CN114553874B (zh) * | 2022-02-28 | 2023-04-18 | 北京理工大学 | 一种混合仿真云平台及自动化部署方法 |
CN114924864A (zh) * | 2022-06-21 | 2022-08-19 | 北京联合伟世科技股份有限公司 | 实验资源的调度方法、装置、设备及存储介质 |
CN115277396B (zh) * | 2022-08-04 | 2024-03-26 | 北京智慧星光信息技术有限公司 | 一种用于模拟浏览器操作的消息驱动方法和系统 |
CN116501449B (zh) * | 2023-06-21 | 2023-12-08 | 江苏博云科技股份有限公司 | 云原生环境下对于容器文件的管理方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021428A (zh) * | 2017-12-05 | 2018-05-11 | 华迪计算机集团有限公司 | 一种基于Docker实现网络靶场的方法和系统 |
CN109961151A (zh) * | 2017-12-21 | 2019-07-02 | 同方威视科技江苏有限公司 | 用于机器学习的计算服务的系统及用于机器学习的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103152430B (zh) * | 2013-03-21 | 2016-06-08 | 河海大学 | 一种缩减数据占用空间的云存储方法 |
US10841226B2 (en) * | 2019-03-29 | 2020-11-17 | Juniper Networks, Inc. | Configuring service load balancers with specified backend virtual networks |
CN110166285B (zh) * | 2019-04-28 | 2021-08-03 | 北京航空航天大学 | 一种基于Docker的网络安全实验平台搭建方法 |
CN111124607A (zh) * | 2019-12-16 | 2020-05-08 | 上海大学 | Fpga虚拟化部署实现高速安全的服务器集群管理方法 |
-
2020
- 2020-12-08 CN CN202011420943.1A patent/CN112560244B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021428A (zh) * | 2017-12-05 | 2018-05-11 | 华迪计算机集团有限公司 | 一种基于Docker实现网络靶场的方法和系统 |
CN109961151A (zh) * | 2017-12-21 | 2019-07-02 | 同方威视科技江苏有限公司 | 用于机器学习的计算服务的系统及用于机器学习的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112560244A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112560244B (zh) | 一种基于Docker的虚拟仿真实验系统及方法 | |
CN105988878B (zh) | 用于动态地管理虚拟化环境中的工作负荷放置的方法及系统 | |
CN101946258B (zh) | 基于计算机的业务过程在专用硬件上的基于模型的部署 | |
Calheiros et al. | EMUSIM: an integrated emulation and simulation environment for modeling, evaluation, and validation of performance of cloud computing applications | |
CN102681899B (zh) | 云计算服务平台的虚拟计算资源动态管理方法 | |
CN103401917B (zh) | 一种基于云总线的混合云计算系统及其实现方法 | |
CN102447743B (zh) | 云企业服务的系统和方法 | |
CN104813614B (zh) | 用于iaas的管理的异步框架 | |
CN101946260A (zh) | 对基于计算机的业务过程进行建模以用于定制和递送 | |
CN107924340A (zh) | 资源配置系统、资源配置方法以及资源配置程序 | |
CN103220364A (zh) | 一种基于云的系统管理训练平台架构 | |
CN101946257A (zh) | 建模基于计算机的业务过程以及模拟操作 | |
Lovas et al. | Cloud agnostic Big Data platform focusing on scalability and cost-efficiency | |
CN102790788B (zh) | 一种网格资源管理系统 | |
Singh et al. | Comparative analysis of various simulation tools used in a cloud environment for task-resource mapping | |
CN108809715A (zh) | 一种部署管理平台的方法及装置 | |
Li et al. | College English Online Examination System Design Based on Cloud Computing Platform | |
CN113626798A (zh) | 一种应用系统管理平台、方法、设备及介质 | |
Juve | Resource management for scientific workflows | |
Caron | Contribution to the management of large scale platforms: the Diet experience | |
Peng et al. | Skyway: A Seamless Solution for Bursting Workloads from On-Premises HPC Clusters to Commercial Clouds | |
Cemim et al. | EduCloud: a private cloud tool for academic environments | |
Gaeta et al. | Development of mathematical models and methods of task distribution in distributed computing system | |
Groenda et al. | Model integration method and supporting tooling: project deliverable D5. 1 | |
Lee et al. | Software-defined storage-based data infrastructure supportive of hydroclimatology simulation containers: A survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |