CN114995841A - 一种实现数据库云服务极简升级的方法和系统 - Google Patents
一种实现数据库云服务极简升级的方法和系统 Download PDFInfo
- Publication number
- CN114995841A CN114995841A CN202210839514.0A CN202210839514A CN114995841A CN 114995841 A CN114995841 A CN 114995841A CN 202210839514 A CN202210839514 A CN 202210839514A CN 114995841 A CN114995841 A CN 114995841A
- Authority
- CN
- China
- Prior art keywords
- container
- cloud service
- database cloud
- mirror image
- interface
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实现数据库云服务极简升级的方法和系统,该方法包括:在数据库云服务环境的每个节点上部署容器管理工具;标注升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;调用容器管理工具对指定容器进行升级操作。本发明采用的局部精准升级替代整体重建升级的策略,能够严格控制着数据库云服务环境的变动范围,同时能够有效保障数据库云服务的可用性,极大提高用户的使用体验。
Description
技术领域
本发明涉及数据库云服务领域,具体来说,涉及一种实现数据库云服务极简升级的方法和系统。
背景技术
1、Kubernetes中Pod的创建过程:
如图1所示,用户发起创建云应用的请求后,Kubernetes会通过以下几个过程来创建应用环境:
(1)选择部署节点:Kubernetes的调度器会经过预选过滤和优选打分步骤来选择最优的部署节点;
(2)创建沙箱容器:在启动Pod容器之前,首先会为其创建一个沙箱容器,沙箱容器对应1个命名空间,并和同一Pod中的其它容器共享该命名空间的资源;
(3)启动Pod容器:根据请求的容器列表,调用容器运行时接口拉取镜像容器,并根据容器配置(如逻辑卷、环境变量、端口映射等)来启动容器。
2、Kubernetes中的容器运行时:
Kubernetes中的最小调度单元是Pod,一个Pod中可以包含一个或多个容器,同一Pod中的所有容器共享同一命名空间的资源。Kubernetes的API接口只提供了针对Pod的操作接口,如创建Pod和删除Pod,并没有提供对容器运行时的操作接口,这就导致用户无法直接对Pod中的容器进行拉取镜像、启动容器、停止容器、删除容器等操作。
3、镜像分层与镜像拉取:
docker镜像由一些松耦合的只读镜像层组成,镜像层ID作为唯一标识。docker引擎负责堆叠这些镜像层,并且将它们表示为一个统一的镜像对象。多个镜像可以共用相同的镜像层。
如图2所示,镜像A有4个镜像层,ID分别为cf338e77d26e、65d3299f7bd2、a87f4563ad8d、32e0981a7c8d。镜像B也有4个镜像层,其中有3个镜像层和镜像A相同,第4个镜像层ID为88a1809d9e2f。如果在某机器上已经拉取了镜像A,当再拉取镜像B时,只需要拉取镜像B的第4个镜像层即可完成镜像B的拉取。
4、云服务的升级策略:
目前常用的云服务升级策略有:停机升级、蓝绿部署、滚动升级、灰度发布等。
(1)停机部署是最简单粗暴的方式,直接把现有版本的云服务停机,然后部署新的版本,这会影响云服务的可用性。
(2)蓝绿部署是在生产线上部署相同数量的新版本的云服务,然后当新服务部署完成之后,再把流量从原服务切到新服务。蓝绿部署无需停机,但在升级过程中需要耗费双倍的云资源。
(3)滚动升级是指通过逐个替换应用的所有实例,来缓慢发布应用的一个新版本。在服务升级过程中,会出现新老两个版本同时在线的情况,同一用户的请求可能在新老版中切换而导致问题。并且在运维排查时,首先需要区分节点上的服务版本,也是一大痛点。
(4)灰度发布是指按比例将流量逐渐将生产环境从老版本切换到新版本。灰度升级策略大多数用于缺少足够测试,对新版本的稳定性缺乏信心的情况。并且不适用于单个副本的云服务。
5、数据库云服务:
数据库云服务,是通过云平台构建、部署和交付的一种数据库服务。数据库云服务和其他云服务一样,能够降低基础设施投入、提高资源利用效率,满足用户按需获取、即申即用,增加业务敏捷性。
如图3所示,数据库云服务的一般包括数据库(如mysql)、控制台、数据备份与恢复、性能监控、心跳服务等功能。在Kubernetes中采用Sidecar(边车模式)将多个功能以多个容器形式部署在同一个Pod中。
与传统的数据库服务不同,数据库云服务可以在运行时进行升级,但升级过程是非常复杂的,并且需要对整个云服务环境进行删除重建,这对于单点的数据库云服务而言,会因为升级而造成服务短暂不可用。需要解决两大问题:数据库服务的小部分功能需要升级,就需要对整个数据库云服务进行重建,从而影响整个数据库云服务;数据库云服务在升级过程中会重建其Pod,而Pod在Kubernetes调度过程中的节点选择上和网络配置上存在不确定性,从而造成整个数据库云环境的不确定性和不稳定性。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出一种实现数据库云服务极简升级的方法和系统,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
根据本发明的一方面,提供了一种实现数据库云服务极简升级的方法,该方法包括以下步骤:
S1、在数据库云服务环境的每个节点上部署容器管理工具;
S2、标注数据库云服务的升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
S3、通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;
S4、调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级。
进一步的,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务;
所述数据库云服务采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务。
进一步的,所述容器管理工具在提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口。
进一步的,所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
S31、根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
S32、比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像。
进一步的,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
S41、删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器;
S42、查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
S43、拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present;
S44、启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
S45、查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行S4的步骤。
根据本发明的另一方面,提供了一种实现数据库云服务极简升级的系统,该系统包括:部署模块、解析模块、差异比较模块及升级模块;
所述部署模块,用于在数据库云服务环境的每个节点上部署容器管理工具;
所述解析模块,用于标注数据库云服务的升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
所述差异比较模块,用于通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;
所述升级模块,用于调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级。
进一步的,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务,采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务。
进一步的,所述容器管理工具在提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口。
进一步的,所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像。
进一步的,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器;
查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present;
启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行上述步骤。
本发明的有益效果为:
1、本发明采用的局部精准升级替代整体重建升级的策略,能够严格控制着数据库云服务环境的变动范围,风险可控;同时能够有效保障数据库云服务的可用性,极大提高用户的使用体验。
2、本发明采用的Pod稳定性控制方法,避免了数据库云服务Pod的重建,不仅节省了调度节点、分配网络和挂载逻辑卷的时间消耗,也完美维护了整个数据库云服务环境的稳定性和确定性。
3、本发明采用的容器镜像拉取策略,在控制了部署节点不变的情况下,只需要拉取很少的镜像层,即可实现新功能镜像的完整拉取,从而有效控制了整个数据库云服务的升级时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1表示现有技术中Kubernetes中Pod创建过程的流程图;
图2表示现有技术中镜像分层结构的示意图;
图3表示现有技术中数据库云服务的功能示意图;
图4表示本实施例实现数据库云服务极简升级的方法中数据库云服务极简升级的步骤示意图;
图5表示本实施例实现数据库云服务极简升级的方法中数据库云服务极简升级的效果示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种实现数据库云服务极简升级的方法和系统。
现结合附图和具体实施方式对本发明进一步说明,如图4所示,根据本发明的一个实施例,提供了一种实现数据库云服务极简升级的方法,该方法包括以下步骤:
S1、在数据库云服务环境的每个节点上部署容器管理工具;提供容器运行时操作服务;
其中,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务,采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;相互之间没有强依赖性,保证功能的低耦合,保证功能独立升级的可行性;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务;保证数据库云服务中微服务间的访问连通性;
S2、标注数据库云服务的升级信息,即最新的期望规格,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
具体的,所述在数据库云服务环境的每个节点上部署容器管理工具,提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口;
其中,以字典和数组的组合形式具体表示为:
{“name”:<workload-name>,“namespace”:<namespace>,“initContainers”:{“image”:[{<initContainer0-name>:<initContainer0-image>},…],“config”:[{<initContainer0-name>:<initContainer0-config>},…]},“containers”:{“image”:[{<container0-name>:<container0-image>},…],“config”:[{<container0-name>:<container0-config>},…]}}。
其中,workload-name为数据库云服务的应用名称;
namespace为该应用所在的命名空间;
initContainer0-name为初始化容器的名称;
initContainer0-image为初始化容器的镜像;
initContainer0-config为初始化容器的配置;
container0-name为数据库云服务的容器名称;
container0-image为数据库云服务的容器镜像;
container0-config为数据库云服务的容器配置信息。
S3、通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;即需要升级的具体容器;
所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
S31、根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
S32、比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像;
具体的,分析出需要升级的容器及期望版本的镜像的分析方法如下算法1所示:
算法1:分析云环境升级内容
Input:实际环境的应用规格Specnow,期望的应用规格Specnew
Output:待升级的容器列表Containertodo
1. if Specnow==Specnew:
2. return null
3. else:
4. for name,image in Specnew.initContainers.image:
5. if Specnow.initContainers[name]!=image
6. Containertodo.initContainers[name]=image
7. for name,image in Specnew.containers.image:
8. if Specnow.containers[name]!=image
9. Containertodo.containers[name]=image
10. return Containertodo
若实际规格和期望规格一致,则待升级的容器列表为空;若实际规格和期望规格不一致,则需要以容器名称作为key关键值比较value镜像名称,相同则表示无需升级,不相同则加入待升级容器列表。
S4、调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级;
具体的,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
S41、删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器,此时容器管理工具的服务端会进入Pod删除原容器;
S42、查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
S43、拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present,表示只有当镜像在本地不存在时才会拉取。由于数据库云服务的升级过程中,部署节点并没有发生变化,原版本镜像和新版本镜像存在很多相同的镜像层,所以新版本的功能镜像只需要拉取少数镜像层即可;
S44、启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
S45、查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行S4的步骤。
为了更好地理解本发明的上述技术方案,以下就本发明的具体实施例进行举例详细说明:
一种实现数据库云服务极简升级的方法,包括以下步骤:
步骤一:以DaemonSet方式在Kubernetes环境的所有节点上部署容器管理工具,Kubernetes环境信息如下表1所示:
表1
步骤二:创建数据库云服务环境;提交清单文件创建数据库云服务环境,应用工作负载的名称为mysqlsvc,被调度部署到节点worker-01上,创建的Pod名称为mysqlsvc-0,IP地址为192.168.0.101;数据库云服务环境中多个容器以Sidecar边车模式均存在于mysqlsvc-0中,如下表2所示:
表2
步骤三:提交数据库云服务的升级请求,提交清单文件,请求升级数据库云服务的性能监控功能,对应的容器为metrics,升级清单文件的内容如下表3所示:
表3
步骤四:解析出工作负载的名称为mysqlsvc,并查询出当前云原生环境中的实际环境信息,以字典和数组的组合形式具体表示为:{"name":"mysqlsvc","namespace":"default","initContainers":{"image":[],"config":[]},"containers":{"image":[{"mysql":"mysql:5.7"},{"console":"console:1.0"},{"backup":"backup:1.0"},{"metrics":"metrics:1.0"},{"heartbeat":"heartbeat:v1.0"}],"config":[]}}。
步骤五:分析待升级容器及期望规格,对比数据库云服务的升级期望规格和实际环境状态,根据容器规格差异分析算法找出需要升级的容器为metrics,新镜像为metrics:2.0,如下表4所示:
表4
步骤六:调用容器管理服务,升级容器metrics,当前数据库云服务所在的节点为worker-01,其IP地址为10.45.10.101,具体步骤如下:
调用服务接口10.45.10.101:2001/containerDelete删除metrics容器;
调用服务接口10.45.10.101:2001/imageList查询新镜像metrics:2.0是否存在,初次尝试升级时新镜像是不存在的;
调用服务接口10.45.10.101:2001/imagePull来拉取新镜像metrics:2.0;
调用服务接口10.45.10.101:2001/containerRun来启动新容器;
调用服务接口10.45.10.101:2001/containerStatus查询到容器状态为running运行状态。
如图5所示,此时可以发现,数据库云服务Pod中的所有容器均为running运行状态,且mysql、console、backup、heartbeat一直正常运行,Pod的网络环境和存储卷均未发生变化,相较常用的整体重建升级方式,升级效率有了极大提高,服务可用性和云服务环境具备很高的稳定性和确定性。
根据本发明的另一个实施例,提供了一种实现数据库云服务极简升级的系统,该系统包括:部署模块、解析模块、差异比较模块及升级模块;
所述部署模块,用于在数据库云服务环境的每个节点上部署容器管理工具;
所述解析模块,用于标注数据库云服务的升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
所述差异比较模块,用于通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;
所述升级模块,用于调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级。
在一个实施例中,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务,采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务。
在一个实施例中,所述在数据库云服务环境的每个节点上部署容器管理工具,提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口。
在一个实施例中,所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像。
在一个实施例中,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器;
查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present;
启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行上述步骤。
综上所述,借助于本发明的上述技术方案,本发明采用的局部精准升级替代整体重建升级的策略,能够严格控制着数据库云服务环境的变动范围,风险可控;同时能够有效保障数据库云服务的可用性,极大提高用户的使用体验;本发明采用的Pod稳定性控制方法,避免了数据库云服务Pod的重建,不仅节省了调度节点、分配网络和挂载逻辑卷的时间消耗,也完美维护了整个数据库云服务环境的稳定性和确定性;本发明采用的容器镜像拉取策略,在控制了部署节点不变的情况下,只需要拉取很少的镜像层,即可实现新功能镜像的完整拉取,从而有效控制了整个数据库云服务的升级时间。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种实现数据库云服务极简升级的方法,其特征在于,该方法包括以下步骤:
S1、在数据库云服务环境的每个节点上部署容器管理工具;
S2、标注数据库云服务的升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
S3、通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;
S4、调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级。
2.根据权利要求1所述的一种实现数据库云服务极简升级的方法,其特征在于,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务;
所述数据库云服务采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务。
3.根据权利要求1所述的一种实现数据库云服务极简升级的方法,其特征在于,所述容器管理工具在提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口。
4.根据权利要求1所述的一种实现数据库云服务极简升级的方法,其特征在于,所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
S31、根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
S32、比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像。
5.根据权利要求1所述的一种实现数据库云服务极简升级的方法,其特征在于,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
S41、删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器;
S42、查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
S43、拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present;
S44、启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
S45、查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行S4的步骤。
6.一种实现数据库云服务极简升级的系统,用于实现权利要求1-5中任意一项所述实现数据库云服务极简升级的方法,其特征在于,该系统包括:部署模块、解析模块、差异比较模块及升级模块;
所述部署模块,用于在数据库云服务环境的每个节点上部署容器管理工具;
所述解析模块,用于标注数据库云服务的升级信息,解析出需要升级的工作负载名称及命名空间和各功能的容器名称、容器镜像及容器配置,并以字典和数组的组合形式进行表示;
所述差异比较模块,用于通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容;
所述升级模块,用于调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级。
7.根据权利要求6所述的一种实现数据库云服务极简升级的系统,其特征在于,所述在数据库云服务环境的每个节点上部署容器管理工具中所述数据库云服务包括数据库、控制台、数据备份与恢复、性能监控及心跳服务;
所述数据库云服务采用Sidecar边车模式部署,以独立容器部署在同一Pod中;
所述数据库云服务的各功能镜像均可单独进行编译制作;
所述数据库云服务中的多个功能模块之间设置不同的服务端口,并以127.0.0.1:port的形式访问功能服务。
8.根据权利要求6所述的一种实现数据库云服务极简升级的系统,其特征在于,所述容器管理工具在提供容器运行时的操作服务中所需要用到接口包括:查询镜像列表接口、本地拉取镜像接口、查询容器列表接口、查询容器状态接口、创建容器接口、启动容器接口、停止容器接口及删除容器接口。
9.根据权利要求6所述的一种实现数据库云服务极简升级的系统,其特征在于,所述通过API接口获取当前数据库云服务环境中所述工作负载的实际规格,通过比较期望规格和实际规格的差异,分析得出需要升级的内容包括以下步骤:
根据工作负载的名称和命名空间,通过API Server查询云原生环境中工作负载的实际规格及各功能的容器镜像,同样以字典和数组的组合形式进行表示;同时需要记录当前工作负载的部署节点;
比较最新期望的版本规格和当前实际的版本规格,若相等,则无需升级操作;若不相等,则分析出需要升级的容器及期望版本的镜像。
10.根据权利要求6所述的一种实现数据库云服务极简升级的系统,其特征在于,所述调用容器管理工具对指定容器进行升级操作,实现数据库云服务的局部极简升级包括以下步骤:
删除原容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来删除原容器;
查询新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务,查询知道容器的新镜像是否存在;若存在,则不删除也不重复拉取镜像;若不存在,则通过docker pull <new Image> 命令拉取新镜像;
拉取新镜像:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来拉取新镜像,镜像的拉取策略采用If Not Present;
启动新容器:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来启动新容器;
查询容器状态:调用gRPC接口访问数据库云服务的待升级容器所在节点的容器管理服务来查询容器状态,若容器正常运行,则表示数据库云服务升级成功;否则将重复执行上述步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210839514.0A CN114995841B (zh) | 2022-07-18 | 2022-07-18 | 一种实现数据库云服务升级的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210839514.0A CN114995841B (zh) | 2022-07-18 | 2022-07-18 | 一种实现数据库云服务升级的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114995841A true CN114995841A (zh) | 2022-09-02 |
CN114995841B CN114995841B (zh) | 2022-11-08 |
Family
ID=83021914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210839514.0A Active CN114995841B (zh) | 2022-07-18 | 2022-07-18 | 一种实现数据库云服务升级的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114995841B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562813A (zh) * | 2022-10-27 | 2023-01-03 | 北京同创永益科技发展有限公司 | 一种云原生环境动态构建工作负载的方法及系统 |
CN115964070A (zh) * | 2022-12-02 | 2023-04-14 | 北京凌云雀科技有限公司 | 一种云原生在线增量升级方法、装置和云原生平台 |
CN115982211A (zh) * | 2022-12-02 | 2023-04-18 | 北京凌云雀科技有限公司 | 基于云原生的MySQL数据查询分析方法及装置 |
CN117170804A (zh) * | 2023-08-29 | 2023-12-05 | 北京五一嘉峪科技有限公司 | 一种虚拟化容器管理平台和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021227564A1 (zh) * | 2020-05-13 | 2021-11-18 | 国云科技股份有限公司 | 一种基于容器环境的应用自动交付系统 |
CN113900676A (zh) * | 2021-09-24 | 2022-01-07 | 浪潮云信息技术股份公司 | 一种自动升级容器化云平台的方法 |
CN114745275A (zh) * | 2020-12-24 | 2022-07-12 | 顺丰科技有限公司 | 云服务环境中的节点更新方法、装置和计算机设备 |
-
2022
- 2022-07-18 CN CN202210839514.0A patent/CN114995841B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021227564A1 (zh) * | 2020-05-13 | 2021-11-18 | 国云科技股份有限公司 | 一种基于容器环境的应用自动交付系统 |
CN114745275A (zh) * | 2020-12-24 | 2022-07-12 | 顺丰科技有限公司 | 云服务环境中的节点更新方法、装置和计算机设备 |
CN113900676A (zh) * | 2021-09-24 | 2022-01-07 | 浪潮云信息技术股份公司 | 一种自动升级容器化云平台的方法 |
Non-Patent Citations (2)
Title |
---|
FEKADU WORKNEH: "Understanding Cloud Based Health Care Service with Its Benefits", 《PROCEEDINGS OF THE 2ND INTERNATIONAL CONFERENCE ON INVENTIVE COMMUNICATION AND COMPUTATIONAL TECHNOLOGIES (ICICCT 2018)》 * |
罗育林: "智慧配用电全产业链生态系统云平台设计研究", 《自动化技术与应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562813A (zh) * | 2022-10-27 | 2023-01-03 | 北京同创永益科技发展有限公司 | 一种云原生环境动态构建工作负载的方法及系统 |
CN115964070A (zh) * | 2022-12-02 | 2023-04-14 | 北京凌云雀科技有限公司 | 一种云原生在线增量升级方法、装置和云原生平台 |
CN115982211A (zh) * | 2022-12-02 | 2023-04-18 | 北京凌云雀科技有限公司 | 基于云原生的MySQL数据查询分析方法及装置 |
CN115982211B (zh) * | 2022-12-02 | 2023-09-26 | 北京凌云雀科技有限公司 | 基于云原生的MySQL数据查询分析方法及装置 |
CN117170804A (zh) * | 2023-08-29 | 2023-12-05 | 北京五一嘉峪科技有限公司 | 一种虚拟化容器管理平台和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114995841B (zh) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114995841B (zh) | 一种实现数据库云服务升级的方法和系统 | |
CN112424751A (zh) | 云平台上的集群资源分配与管理方法 | |
CN111522628A (zh) | 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质 | |
US6760733B1 (en) | Object management system and data processing system with centralized mechanism for managing containment relationships among objects | |
US5854895A (en) | Network distribution information management system | |
CN112269640B (zh) | 一种实现容器云组件的生命周期管理的方法 | |
JP2000503785A (ja) | ネットワークディレクトリを更新または変更するための方法ならびにその装置 | |
JP2003520363A (ja) | 部分的に複製されるデータベースシステムのネットワークにおけるデータメンテナンス方法 | |
JPH11252209A (ja) | ネットワーク管理システム | |
CN107797767A (zh) | 一种基于容器技术部署分布式存储系统及其存储方法 | |
CN111736826B (zh) | 多源遥感数据工程工具集系统及集成方法 | |
CN114416200A (zh) | 声明式云平台监控采集配置动态管理和加载的系统及方法 | |
CN112948050A (zh) | 一种部署pod的方法及装置 | |
CN111831362B (zh) | 一种K8s环境监控自动发现分类部署管理的方法 | |
CN107483222B (zh) | 一种基于微服务化的虚拟网络功能的管理方法及网管系统 | |
CN113296805A (zh) | 一种辅助容器实现热升级的方法及装置 | |
CN111371891B (zh) | 业务处理方法、装置、设备及存储介质 | |
CN104429048A (zh) | 对象版本管理 | |
CN112559138B (zh) | 一种资源调度系统及方法 | |
CN114615268A (zh) | 基于Kubernetes集群的服务网络、监控节点、容器节点及设备 | |
CN116760913B (zh) | k8s集群协议转换平台配置下发方法及系统 | |
CN114510464A (zh) | 一种高可用数据库的管理方法和管理系统 | |
CN117453272A (zh) | 汽车软件版本管理系统 | |
CN114443059A (zh) | Kubernetes集群的部署方法、装置及设备 | |
CN114640569A (zh) | 动态消息管理装置、设备、系统、方法及存储介质 |
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 |