CN117354308A - 基于云计算和K8s集群部署的考试***和考试部署方法 - Google Patents

基于云计算和K8s集群部署的考试***和考试部署方法 Download PDF

Info

Publication number
CN117354308A
CN117354308A CN202311347173.6A CN202311347173A CN117354308A CN 117354308 A CN117354308 A CN 117354308A CN 202311347173 A CN202311347173 A CN 202311347173A CN 117354308 A CN117354308 A CN 117354308A
Authority
CN
China
Prior art keywords
pod
svc
concerto
cluster
examination
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.)
Pending
Application number
CN202311347173.6A
Other languages
English (en)
Inventor
王洋
杨宝玲
常玮琪
陈明君
黄山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yaotong Network Software Shanghai Co ltd
Original Assignee
Yaotong Network Software Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yaotong Network Software Shanghai Co ltd filed Critical Yaotong Network Software Shanghai Co ltd
Priority to CN202311347173.6A priority Critical patent/CN117354308A/zh
Publication of CN117354308A publication Critical patent/CN117354308A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1021Server selection for load balancing based on client or server locations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于云计算和K8s集群部署的考试***和考试部署方法,包括:内容交付网络CDN:将考试***中的静态资源缓存到CDN的全球节点服务器中,用户在考试时就近访问和加载静态资源;访问控制列表ACL:对请求来源进行控制;网站应用防火墙WAF:扫描用户请求,与云计算平台的行为特征库进行匹配,若匹配到异常或威胁行为,则拦截用户请求;否则放行用户请求;负载均衡SLB:将用户请求转发到K8s集群,进行区分后转发到对应的服务。本发明通过云计算平台以及K8s集群部署考试***,极大提升了考试***的负载能力、可观测性以及安全性。

Description

基于云计算和K8s集群部署的考试***和考试部署方法
技术领域
本发明涉及云计算和K8s集群技术领域,具体地,涉及一种基于云计算和K8s集群部署的考试***和考试部署方法。
背景技术
传统的考试***大多部署在本地机房,仅供内部访问使用,无法对外提供服务;传统的考试***大多是裸部署,运维、升级等操作比较麻烦;传统的考试***在监控层面做的不够完善,无法提供较完善的底层***监控数据;传统的考试***无法使用相对较低的成本来使用云计算提供的新技术产品,比如k8s集群、统一档存储服务等。
在使用云计算服务时,通常服务是对外暴露,存在一定的安全风险。由于考试***均供学校使用,不对外部用户提供访问,因此需要限制特定学校才可以访问云计算上的服务。通常做法是使用VPN或者专线来实现,但是这样的成本较高,且维护起来比较麻烦,而基于ACL访问控制的方式可零成本实现该需求,即收集各校区的公网IP位址并添加到ACL访问控制的白名单中,则仅有白名单中的学校可访问云计算上的服务。
专利文献CN115499310A(申请号:CN202211038600.8)公开了一种基于云计算平台容器服务的业务应用上云方法及***,属于云计算平台领域;所述的方法具体步骤如下:S1创建k8s容器服务,制作程序应用包和docker镜像;S2根据业务场景选择K8S集群服务提出申请;S3利用Kustomize包、Docker镜像、Chart包的部署方式来满足业务应用的容器化上云;S4对已经部署发布的应用进行全生命周期管理。然而该专利无法解决目前存在的技术问题,也无法满足本发明的需求。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于云计算和K8s集群部署的考试***和考试部署方法。
根据本发明提供的基于云计算和K8s集群部署的考试***,包括:
内容交付网络CDN:将考试***中的静态资源缓存到CDN的全球节点服务器中,用户在考试时就近访问和加载静态资源;
访问控制列表ACL:对请求来源进行控制;
网站应用防火墙WAF:扫描用户请求,与云计算平台的行为特征库进行匹配,若匹配到异常或威胁行为,则拦截用户请求;否则放行用户请求;
负载均衡SLB:将用户请求转发到K8s集群,进行区分后转发到对应的服务。
优选的,所述K8s集群包括:Concerto SVC、rStudio SVC和Shiny SVC;
Concerto SVC提供考试试题并保存考试结果,rStudio SVC通过编写好的程序获取Concerto SVC的考试结果并提供查询方式,最终在Shiny SVC中运行编写好的程序以供成绩查询;
所述Concerto SVC包括:通过开源软件Concerto搭建考题***,在K8s集群上部署Concerto SVC,用于暴露Concerto Pod的服务,并将用户请求均衡转发到后端对应的Concerto Pod中;当后端的Concerto Pod出现异常时,Concerto SVC将异常的ConcertoPod从SVC中移除;当后端的Concerto Pod恢复正常后,Concerto SVC将正常的ConcertoPod重新加入到SVC中,继续处理用户请求;
所述Concerto Pod为运行Concerto开源软件的最小化个体,Pod可多副本运行,副本数越多,Concerto SVC的性能越好。
优选的,当学生用户访问考试***进行考试时,Concerto SVC将学生用户的请求转发到Concerto Pod以进行负载均衡,Concerto Pod将学生用户的数据存储在关系型数据库模块RDS中,将考试的资源文件存储在网络附加存储模块NAS中,NAS模块中的数据供所有Concerto Pod读取和使用,Concerto Pod在ECS集群上运行,由ECS集群提供资源给Concerto Pod,其中,ECS为K8s集群的底层物理资源池,K8s抽象出ECS集群的CPU、内存和存储空间,化为一个资源池,当需要创建Pod时,从资源池中抽取资源来运行Pod。
优选的,在考试后将所有数据均以元数据的形式存储在RDS数据库中,开发人员查询数据时,先访问到K8s集群的rStudio SVC服务,该服务将请求转发给rStudio Pod进行处理,基于rStudio Pod编写R语言程序代码,将程序代码存储在NAS中,通过R语言程序代码实现从RDS数据库读取数据并以GUI的形式展示在网页中以供数据查询。
优选的,R语言程序代码通过rStudio Pod开发完成后存储在NAS中,在Shiny Pod共享读取到rStudio Pod编写的R语言程序代码并运行;
老师侧通过访问Shiny SVC以查阅学生考试成绩,Shiny SVC将请求转发到ShinyPod进行处理,Shiny Pod提供R语言的Web运行环境,同时基于ECS集群提供的资源访问NAS、数据库和Web页面。
根据本发明提供的基于云计算和K8s集群的考试部署方法,包括:
步骤1:通过内容交付网络CDN将考试***中的静态资源缓存到CDN的全球节点服务器中,用户在考试时就近访问和加载静态资源;
步骤2:通过访问控制列表ACL对请求来源进行控制;
步骤3:通过网站应用防火墙WAF扫描用户请求,与云计算平台的行为特征库进行匹配,若匹配到异常或威胁行为,则拦截用户请求;否则放行用户请求;
步骤4:通过负载均衡SLB将用户请求转发到K8s集群,进行区分后转发到对应的服务。
优选的,所述K8s集群包括:Concerto SVC、rStudio SVC和Shiny SVC;
Concerto SVC提供考试试题并保存考试结果,rStudio SVC通过编写好的程序获取Concerto SVC的考试结果并提供查询方式,最终在Shiny SVC中运行编写好的程序以供成绩查询;
所述Concerto SVC包括:通过开源软件Concerto搭建考题***,在K8s集群上部署Concerto SVC,用于暴露Concerto Pod的服务,并将用户请求均衡转发到后端对应的Concerto Pod中;当后端的Concerto Pod出现异常时,Concerto SVC将异常的ConcertoPod从SVC中移除;当后端的Concerto Pod恢复正常后,Concerto SVC将正常的ConcertoPod重新加入到SVC中,继续处理用户请求;
所述Concerto Pod为运行Concerto开源软件的最小化个体,Pod可多副本运行,副本数越多,Concerto SVC的性能越好。
优选的,当学生用户访问考试***进行考试时,Concerto SVC将学生用户的请求转发到Concerto Pod以进行负载均衡,Concerto Pod将学生用户的数据存储在关系型数据库模块RDS中,将考试的资源文件存储在网络附加存储模块NAS中,NAS模块中的数据供所有Concerto Pod读取和使用,Concerto Pod在ECS集群上运行,由ECS集群提供资源给Concerto Pod,其中,ECS为K8s集群的底层物理资源池,K8s抽象出ECS集群的CPU、内存和存储空间,化为一个资源池,当需要创建Pod时,从资源池中抽取资源来运行Pod。
优选的,在考试后将所有数据均以元数据的形式存储在RDS数据库中,开发人员查询数据时,先访问到K8s集群的rStudio SVC服务,该服务将请求转发给rStudio Pod进行处理,基于rStudio Pod编写R语言程序代码,将程序代码存储在NAS中,通过R语言程序代码实现从RDS数据库读取数据并以GUI的形式展示在网页中以供数据查询。
优选的,R语言程序代码通过rStudio Pod开发完成后存储在NAS中,在Shiny Pod共享读取到rStudio Pod编写的R语言程序代码并运行;
老师侧通过访问Shiny SVC以查阅学生考试成绩,Shiny SVC将请求转发到ShinyPod进行处理,Shiny Pod提供R语言的Web运行环境,同时基于ECS集群提供的资源访问NAS、数据库和Web页面。
与现有技术相比,本发明具有如下的有益效果:
(1)通过云计算平台以及Kubernetes集群部署考试***,极大提升了考试***的负载能力、可观测性以及安全性;
(2)通过使用云计算平台部署考试***,相对于自建机房的传统部署方式,以极低的成本就可以使用到主流的技术,比如CDN、WAF,同时也加快了网站访问速度,加强了网站安全性;
(3)通过Kubernetes集群部署考试***,相对于传统的物理机部署方式,以极低的成本就可以集群化管理考试***的各个服务,弹性伸缩副本数,查看到各个服务的实时负载状态等。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明考试***框架图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
通过K8s部署Concerto并测试时,发现当concerto存在多个Pod副本时,并且使用负载均衡的轮询策略时,当某个用户登录后,再刷新页面,该用户的请求就会被转发到另外一个Pod副本上,而该Pod副本上没有该用户登录后的Session数据,因此页面会跳转到用户登录页面,而非已登录的页面,这个问题通常被称为“Session状态未共享”,当然这个问题也是由于concerto使用了含有状态的Session,而非无状态的Token所致。为解决该问题,只需在负载均衡上增加一个策略,即基于客户端Cookie的识别与转发,简单来说,就是负载均衡会给客户端打上一个Cookie标记,并且记录该Cookie转发给某个后端的Pod副本,形成一个1对1的关系,当再有客户端请求时,根据客户端的Cookie来判断将请求转发给哪个Pod副本。如果客户端没有Cookie,则标记新的Cookie,并继续采用轮询策略转发给下一个Pod副本;如果客户端有Cookie,根据Cookie和Pod副本的关系表查找到对应的Pod副本,转发给对应的Pod副本,这样用户的登录状态就不会丢失了,并且仍然保持负载均衡的轮询策略。
解决“Session状态未共享”问题的配置方法为:增加一个nginx.ingress.kubernetes.io/affinity:Cookie的配置即可。
rStudio和Shiny在传统的部署方式中,通常是部署在同一个服务器上,可以比较简单的实现文件共享,即rStudio和Shiny配置使用相同的文件目录,则rStudio开发出来的R语言文件可以直接共享给Shiny进行Web展示。但在K8s架构中,rStudio和Shiny是运行在不同的Docker容器中,资源是隔离的。虽然可以通过共享宿主机上的某个目录来使宿主机ECS上的Pod副本可以共享数据,但是当存在多个Pod副本时,rStudio和Shiny很可能不在同一个宿主机ECS上,因此rStudio开发出来的R语言文件无法共享给Shiny。为解决该问题,我们引入了一个“第三方”角色,即NAS文件存储,通过NAS文件存储,将某个目录共享给rStudio和Shiny,这样对于rStudio和Shiny来说,他们就有了一个可以共同使用的目录,并且不管Pod副本数有多少,都可以同时读写。
具体的配置步骤为:
(1)创建一个基于Nas的数据卷,名为rstudio-data。
(2)将该数据卷挂载到rStudio的/home/rstudio路径下,挂载后,rStudio将数据文件存储到该路径下,也就等于存储到了Nas中。
(3)将同样的数据卷挂载到Shiny的/src/shiny-server路径下,挂载后,Shiny读取/src/shiny-server路径下的文件,也就等于读取到了Nas中的文件。
也就实现了基于Nas这个第三方角色,rStudio和Shiny2个原本相互独立的容器,可以共享文件目录,并且是可以跨宿主机的,比如rStudio在宿主机A上,而Shiny在宿主机B上,但是仍然可以通过Nas来共享文件。
如图1,通过云计算平台以及Kubernetes集群部署的考试***主要包括:
内容交付网络CDN:全称Content Deliver Network,可将考试***中的静态资源,比如css、js、jpg等资源缓存到CDN的全球节点服务器中,考试***的用户可就近访问,以更快的方式加载静态资源,避免所有请求都需要考试***源站处理,因此也降低了考试***源站的压力。
访问控制列表ACL:全称Access Control List,可对请求来源进行控制,比如禁止某个公网IP的请求,或者仅允许特定公网IP的请求。另外,CDN支持ACL,CDN还提供完整的请求统计图等数据,便于查询和评估考试***的负载情况等。
网站应用防火墙WAF:全称Web Application Firewall,将扫描用户请求,与云计算平台自有的行为特征库进行匹配,若匹配到异常或威胁行为,将拦截用户请求,避免用户请求到考试***源站;若未检测到任何异常,则放行用户请求。该模块的核心是行为特征库,而行为特征库的核心是海量的、准确的、实时更新的特征行为,这正是云计算平台的优势,是自建防火墙远不能匹敌的。因此,该模块极大提升了考试***的安全性。
负载均衡SLB:全称Server Load Balancer,将用户请求转发到Kubernetes集群。由于Kubernetes集群中包含很多不同的服务,需要SLB对用户的请求进行区分并转发到对应的服务。区分的方式包括不同服务的域名地址不同,比如:Concerto SVC对应的域名为concerto.example.com,而rStudio SVC对应的域名为rstudio.example.com,负载均衡会根据域名转发给不同的服务。
用户请求的路径为:用户端→CDN→ACL→WAF→SLB。
Kubernetes集群:新一代虚拟化解决方案,以集群的方式运行,可承载海量业务***,同时提供完整的服务生命周期管理以及可观测性。考试***的子***运行在Kubernetes集群中,包括:Concerto SVC、rStudio SVC、Shiny SVC、各SVC对应的Pod等。
Concerto SVC:全称Concerto Service,即Concerto服务。Concerto为开源软件,主要用于搭建考题***。Concerto的传统部署方式是在物理服务器上直接部署Concerto,虽然部署方式简单,但在面对高弹性的压力时,维护成本较高。相对的,在Kubernetes集群上部署Concerto SVC,虽然部署门槛相对较高,但部署完成后,可长期自动化的运行,减少很多维护成本。Concerto SVC的主要作用是暴露Concerto Pod的服务,并将用户请求均衡转发到后端的Concerto Pod中;当后端的Concerto Pod出现异常时,Concerto SVC会将异常的Concerto Pod从SVC中移除,避免用户继续请求到异常的Pod;当后端的Concerto Pod恢复正常后,Concerto SVC会将正常的Concerto Pod重新加入到SVC中,继续处理用户请求。
rStudio SVC:全称rStudio Service,即rStudio服务。
rStudio为开源软件,开发人员通过编写r语言程序,从数据库中读取Concerto的数据,并进行展示和查询。其SVC和Pod的原理,和上述Concerto SVC以及Concerto Pod一致。
Shiny SVC:全称Shiny Service,即Shiny服务。
Shiny为开源软件,为r程序包提供Web运行环境。在rStudio SVC中编写好的r程序包通过NAS共享给Shiny SVC,Shiny SVC再以Web的方式运行r程序包。Concerto SVC、rStudio SVC、Shiny SVC以该方式进行协作:Concerto SVC提供考试试题并保存考试结果,rStudio SVC编写程序,程序的主要作用是获取Concerto SVC的考试结果,提供多种查询方式,最终在Shiny SVC中运行编写好的程序,供老师们查询成绩。其SVC和Pod的原理,和上述Concerto SVC以及Concerto Pod一致。
学生侧:
当学生用户访问考试***进行考试时,Concerto SVC会将学生用户的请求转发到Concerto Pod(Concerto1、Concerto2、....、ConcertoX)以进行负载均衡,由Concerto Pod最终处理学生用户的请求,Concerto Pod会将学生用户的数据(行为数据、个人信息、考试数据)存储在RDS数据库模块中,而考试中的一些图片、音视频等资源文件会存储在NAS模块中,NAS模块中的数据供所有Concerto Pod读取和使用,避免了多个Concerto Pod之间数据不一致的问题。而Concerto Pod(所有的Pod都是同理)实际是运行在ECS集群上,由ECS集群提供CPU、内存、网络等资源给Concerto Pod。
开发人员:
学生参加考试后,所有数据均以元数据的形式存储在RDS数据库中,不便于校方查阅,为可视化的查询考试数据,开发人员会访问到K8s集群的rStudio SVC服务,该服务再将请求转发给rStudio Pod(基于网页的R语言代码开发工具,是一种Web IDE)进行最终的处理,开发人员会基于rStudio Pod编写R语言程序代码,程序代码存储在NAS中,R语言程序代码主要实现从RDS数据库读取数据并以GUI的形式展示在网页中,可通过查询学生学号、老师姓名等方式查询数据。
老师侧:
R语言程序代码通过rStudio Pod开发完成后,会存储在NAS中,由于都在一个K8s集群内,并且使用同一个NAS,因此Shiny Pod(可运行R语言的环境)可以共享读取到rStudio Pod编写的R语言程序代码并运行。
因此,老师侧访问Shiny SVC以查阅学生考试成绩,而Shiny SVC将请求转发到Shiny Pod进行最终的处理,Shiny Pod提供R语言的Web运行环境,同时基于ECS集群提供的CPU、内存、网络等资源访问NAS、访问数据库、展示Web页面等。
Concerto Pod:运行Concerto开源软件的最小化个体,也是实际处理用户请求的最终端。Pod底层是Docker容器,Docker容器中封装Concerto所需的运行环境。Pod可以运行多份,也叫多副本。副本数越多,Concerto SVC的性能越好。
rStudio Pod:与上述Concerto Pod的原理一致。
Shiny Pod:与上述Concerto Pod的原理一致。
ECS:全称Elastic Compute Service,即弹性计算服务,是云计算平台提供的一种虚拟化计算服务器,可以类比为传统物理服务器。虽然相对传统物理服务器有一些改进,但ECS服务器仍然相对独立,集群化的管理和调度难度高。在架构中,ECS作为Kubernetes集群的底层物理资源池,即使用Kubernetes来管理多个ECS,这种方式下,多个ECS被称为ECS集群,而上面的Kubernetes被称为Kubernetes集群。Kubernetes会抽象出ECS集群的CPU、内存和存储空间,化为一个资源池,当需要创建Pod时,从资源池中抽取一部分资源用来运行Pod。
RDS:全称Relationship Database Service,即关系型数据库服务。该模块主要用于存储考试***的相关元数据,比如考题数据、成绩数据等。
NAS:全称Network Attached Storage,即网络附加存储。该模块主要用于为考试***的3个SVC提供共享存储,比如rStudio SVC创建的文件,在Shiny SVC中可以直接读取到。
考试***通常是考生集中参加,所以容量(也叫负载能力)是其重要的性能指标,而不可知或难以预期的负载量是现代应用服务的挑战之一,常见的处理方式为:1.为降低成本而提供峰值容量的1-2倍容量;2.为确保可用性而提供峰值容量的2-N倍容量,忽略成本。而考试正好符合这种情况,存在集中请求并且难以预知负载量,未来可能公开考试***给校外人员参加。为应对未知的***容量,同时兼顾成本,再同时减少人为配置工作,在最初部署Concerto***前,就考虑采用K8s集群来承载Concerto考试***,这样就可以利用K8s的弹性伸缩副本功能。该功能由K8s***提供,实现方式为:1.指定Concerto Pod的CPU和内存使用量;2.启用Concerto Pod弹性伸缩功能并配置最多可伸缩的副本数以及伸缩指标,该伸缩指标为内存或CPU使用率,比如当CPU使用率超过80%就增加1个副本,或者内存使用率达到100%就增加1个副本数。K8s***会监控Concerto Pod的资源使用率数据,如果使用率达到触发伸缩指标,则触发伸缩行为。配置完成后,这一切都将由K8s***自动完成,无需人为参与。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于云计算和K8s集群部署的考试***,其特征在于,包括:
内容交付网络CDN:将考试***中的静态资源缓存到CDN的全球节点服务器中,用户在考试时就近访问和加载静态资源;
访问控制列表ACL:对请求来源进行控制;
网站应用防火墙WAF:扫描用户请求,与云计算平台的行为特征库进行匹配,若匹配到异常或威胁行为,则拦截用户请求;否则放行用户请求;
负载均衡SLB:将用户请求转发到K8s集群,进行区分后转发到对应的服务。
2.根据权利要求1所述的基于云计算和K8s集群部署的考试***,其特征在于,所述K8s集群包括:Concerto SVC、rStudio SVC和Shiny SVC;
Concerto SVC提供考试试题并保存考试结果,rStudio SVC通过编写好的程序获取Concerto SVC的考试结果并提供查询方式,最终在Shiny SVC中运行编写好的程序以供成绩查询;
所述Concerto SVC包括:通过开源软件Concerto搭建考题***,在K8s集群上部署Concerto SVC,用于暴露Concerto Pod的服务,并将用户请求均衡转发到后端对应的Concerto Pod中;当后端的Concerto Pod出现异常时,Concerto SVC将异常的ConcertoPod从SVC中移除;当后端的Concerto Pod恢复正常后,Concerto SVC将正常的ConcertoPod重新加入到SVC中,继续处理用户请求;
所述Concerto Pod为运行Concerto开源软件的最小化个体,Pod可多副本运行,副本数越多,Concerto SVC的性能越好。
3.根据权利要求2所述的基于云计算和K8s集群部署的考试***,其特征在于,当学生用户访问考试***进行考试时,Concerto SVC将学生用户的请求转发到Concerto Pod以进行负载均衡,Concerto Pod将学生用户的数据存储在关系型数据库模块RDS中,将考试的资源文件存储在网络附加存储模块NAS中,NAS模块中的数据供所有Concerto Pod读取和使用,Concerto Pod在ECS集群上运行,由ECS集群提供资源给Concerto Pod,其中,ECS为K8s集群的底层物理资源池,K8s抽象出ECS集群的CPU、内存和存储空间,化为一个资源池,当需要创建Pod时,从资源池中抽取资源来运行Pod。
4.根据权利要求2所述的基于云计算和K8s集群部署的考试***,其特征在于,在考试后将所有数据均以元数据的形式存储在RDS数据库中,开发人员查询数据时,先访问到K8s集群的rStudio SVC服务,该服务将请求转发给rStudio Pod进行处理,基于rStudio Pod编写R语言程序代码,将程序代码存储在NAS中,通过R语言程序代码实现从RDS数据库读取数据并以GUI的形式展示在网页中以供数据查询。
5.根据权利要求2所述的基于云计算和K8s集群部署的考试***,其特征在于,R语言程序代码通过rStudio Pod开发完成后存储在NAS中,在Shiny Pod共享读取到rStudio Pod编写的R语言程序代码并运行;
老师侧通过访问Shiny SVC以查阅学生考试成绩,Shiny SVC将请求转发到Shiny Pod进行处理,Shiny Pod提供R语言的Web运行环境,同时基于ECS集群提供的资源访问NAS、数据库和Web页面。
6.一种基于云计算和K8s集群的考试部署方法,其特征在于,包括:
步骤1:通过内容交付网络CDN将考试***中的静态资源缓存到CDN的全球节点服务器中,用户在考试时就近访问和加载静态资源;
步骤2:通过访问控制列表ACL对请求来源进行控制;
步骤3:通过网站应用防火墙WAF扫描用户请求,与云计算平台的行为特征库进行匹配,若匹配到异常或威胁行为,则拦截用户请求;否则放行用户请求;
步骤4:通过负载均衡SLB将用户请求转发到K8s集群,进行区分后转发到对应的服务。
7.根据权利要求6所述的基于云计算和K8s集群的考试部署方法,其特征在于,所述K8s集群包括:Concerto SVC、rStudio SVC和Shiny SVC;
Concerto SVC提供考试试题并保存考试结果,rStudio SVC通过编写好的程序获取Concerto SVC的考试结果并提供查询方式,最终在Shiny SVC中运行编写好的程序以供成绩查询;
所述Concerto SVC包括:通过开源软件Concerto搭建考题***,在K8s集群上部署Concerto SVC,用于暴露Concerto Pod的服务,并将用户请求均衡转发到后端对应的Concerto Pod中;当后端的Concerto Pod出现异常时,Concerto SVC将异常的ConcertoPod从SVC中移除;当后端的Concerto Pod恢复正常后,Concerto SVC将正常的ConcertoPod重新加入到SVC中,继续处理用户请求;
所述Concerto Pod为运行Concerto开源软件的最小化个体,Pod可多副本运行,副本数越多,Concerto SVC的性能越好。
8.根据权利要求7所述的基于云计算和K8s集群的考试部署方法,其特征在于,当学生用户访问考试***进行考试时,Concerto SVC将学生用户的请求转发到Concerto Pod以进行负载均衡,Concerto Pod将学生用户的数据存储在关系型数据库模块RDS中,将考试的资源文件存储在网络附加存储模块NAS中,NAS模块中的数据供所有Concerto Pod读取和使用,Concerto Pod在ECS集群上运行,由ECS集群提供资源给Concerto Pod,其中,ECS为K8s集群的底层物理资源池,K8s抽象出ECS集群的CPU、内存和存储空间,化为一个资源池,当需要创建Pod时,从资源池中抽取资源来运行Pod。
9.根据权利要求7所述的基于云计算和K8s集群的考试部署方法,其特征在于,在考试后将所有数据均以元数据的形式存储在RDS数据库中,开发人员查询数据时,先访问到K8s集群的rStudio SVC服务,该服务将请求转发给rStudio Pod进行处理,基于rStudio Pod编写R语言程序代码,将程序代码存储在NAS中,通过R语言程序代码实现从RDS数据库读取数据并以GUI的形式展示在网页中以供数据查询。
10.根据权利要求7所述的基于云计算和K8s集群的考试部署方法,其特征在于,R语言程序代码通过rStudio Pod开发完成后存储在NAS中,在Shiny Pod共享读取到rStudio Pod编写的R语言程序代码并运行;
老师侧通过访问Shiny SVC以查阅学生考试成绩,Shiny SVC将请求转发到Shiny Pod进行处理,Shiny Pod提供R语言的Web运行环境,同时基于ECS集群提供的资源访问NAS、数据库和Web页面。
CN202311347173.6A 2023-10-17 2023-10-17 基于云计算和K8s集群部署的考试***和考试部署方法 Pending CN117354308A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311347173.6A CN117354308A (zh) 2023-10-17 2023-10-17 基于云计算和K8s集群部署的考试***和考试部署方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311347173.6A CN117354308A (zh) 2023-10-17 2023-10-17 基于云计算和K8s集群部署的考试***和考试部署方法

Publications (1)

Publication Number Publication Date
CN117354308A true CN117354308A (zh) 2024-01-05

Family

ID=89368791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311347173.6A Pending CN117354308A (zh) 2023-10-17 2023-10-17 基于云计算和K8s集群部署的考试***和考试部署方法

Country Status (1)

Country Link
CN (1) CN117354308A (zh)

Similar Documents

Publication Publication Date Title
US10691716B2 (en) Dynamic partitioning techniques for data streams
LU102666B1 (en) Small-file storage optimization system based on virtual file system in kubernetes user-mode application
US9304815B1 (en) Dynamic replica failure detection and healing
US9858322B2 (en) Data stream ingestion and persistence techniques
US9276959B2 (en) Client-configurable security options for data streams
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习***
Li Alluxio: A virtual distributed file system
RU2638726C1 (ru) Оптимизированный процесс воспроизведения браузера
CN111338762A (zh) 请求处理技术
US10803166B1 (en) Automated determination of application privileges
US11409711B2 (en) Barriers for dependent operations among sharded data stores
Kochut et al. Leveraging local image redundancy for efficient virtual machine provisioning
CN110008197A (zh) 一种数据处理方法、***及电子设备和存储介质
CN103150225B (zh) 基于应用级代理的对象并行存储***磁盘满异常容错方法
US20120209584A1 (en) Advanced Metering Infrastructure Simulation
CN107844542A (zh) 一种分布式文件存储方法及装置
JP5011927B2 (ja) アプリケーション実行システム、コンピュータ、アプリケーション実行システムのアプリケーション実行方法およびプログラム
Raharjo et al. Reliability Evaluation of Microservices and Monolithic Architectures
Lim et al. Androtrace: framework for tracing and analyzing IOs on Android
CN115174158B (zh) 基于多云管理平台的云产品配置检查方法
Daoud et al. Performance analysis of distributed storage clusters based on kernel and userspace traces
US9092397B1 (en) Development server with hot standby capabilities
US9256648B2 (en) Data handling in a cloud computing environment
US9378230B1 (en) Ensuring availability of data in a set being uncorrelated over time
CN117354308A (zh) 基于云计算和K8s集群部署的考试***和考试部署方法

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