CN113934711B - 一种自动化部署gbase8s集群的方法 - Google Patents
一种自动化部署gbase8s集群的方法 Download PDFInfo
- Publication number
- CN113934711B CN113934711B CN202111537733.5A CN202111537733A CN113934711B CN 113934711 B CN113934711 B CN 113934711B CN 202111537733 A CN202111537733 A CN 202111537733A CN 113934711 B CN113934711 B CN 113934711B
- Authority
- CN
- China
- Prior art keywords
- gbase8s
- cluster
- message
- controller
- pod
- 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
- 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/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种自动化部署gbase8s集群的方法,包括以下步骤:S1、部署gbase8s‑controller和gbase8s pod,并通过CRD把gbase8s集群资源注册为kubernetes管理的资源;S2、在步骤S1部署gbase8s‑controller后,gbase8s‑controller初始化时向api‑server订阅gbase8s‑cluster消息,gbase8s‑cluster消息为gbase8s集群资源的消息。本发明有益效果:一种自动化部署gbase8s集群的方法,只要简单的写一下配置文件,集群名称、节点个数,就能在kubernetes中快速部署gbase8s集群,省去人工部署的麻烦。
Description
技术领域
本发明属于云计算领域,尤其是涉及一种自动化部署gbase8s集群的方法。
背景技术
随着信息技术的广泛应用和快速发展,云计算作为一种新兴的计算模型日益受到人们的广泛关注,科研、生产、商业、政府工作职能等多个领域开始越来越多地应用云计算技术,云计算技术日渐成熟,不断完善,不管是云平台自身的支持平台运行的服务组件还是云计算平台上面向用户部署的服务组件数量与日俱增。
现有的gbase8s集群的部署需要手动建立互信、填充sqlhost及使用命令完成主辅节点角色的转换,这种方式对运维人员来说非常麻烦,尤其在kubernetes中使用手动部署要写很多复杂的资源配置文件,还需要使用kubernetes命令登录到gbase8s pod去执行集群建立的命令。
发明内容
有鉴于此,本发明旨在提出一种自动化部署gbase8s集群的方法,提供一种简单高效的在kubernetes上自动部署及建立gbase8s集群的系统及方法,并实现当主节点发生故障时,从节点能自动变为主节点继续工作。
为达到上述目的,本发明的技术方案是这样实现的:
一种自动化部署gbase8s集群的方法,包括以下步骤:
S1、部署gbase8s-controller和gbase8s pod,并通过CRD把gbase8s集群资源注册为kubernetes管理的资源;
其中,
gbase8s集群是一个高可用关系型数据库集群;
gbase8s-controller为控制器,是kubernetes的组件,用于对CRD事件作出处理,每种kubernetes资源都有对应的controller,gbase8s-controller用于对gbase8s集群资源的事件做出处理;
gbase8s pod是容纳了gbase8s 容器的pod,pod是kubernetes调度的最小资源单位,pod里容纳一个或多个容器;
S2、在步骤S1部署gbase8s-controller后,gbase8s-controller初始化时向api-server订阅gbase8s-cluster消息,gbase8s-cluster消息为gbase8s集群资源的消息;
S3、用户编写步骤S1中所述的gbase8s集群资源的配置文件,配置文件中包含集群名称和集群节点个数,使用kubectl命令通知kubernetes创建用户编写好的gbase8s集群资源;
gbase8s-controller收到api-server发送的创建gbase8s集群资源的消息,启动gbase8s pod,然后gbase8s-controller发送消息通知gbase8s pod的agent建立集群;
S4、在步骤S3中的gbase8s-controller给gbase8s pod发送建立集群消息后,等待集群建立成功后,gbase8s-controller启动故障检测功能,定时检测集群的状态,如集群发生故障,进行故障恢复工作。
进一步的,在步骤S2至步骤S4中,gbase8s-controller的工作流程为:
A1、由gbase8s-controller向api-server发起订阅请求,订阅资源及其子资源的新增、修改、删除事件;
A2、当api-server监控到资源及其子资源的事件后,把事件推送给gbase8s-controller;
A3、gbase8s-controller收到事件后,启动gbase8s pod后,进入集群协调模块;
A4、通过gbase8s-controller集群协调模块建立或更新集群,之后启动故障检测模块。
进一步的,在步骤A3中,gbase8s-controller收到事件后,由资源管理模块启动gbase8s pod,启动流程如下:
B1、gbase8s-controller收到事件后,获取事件里携带的集群名称,为cluster1,以及期望的集群数量信息;
B2、根据集群名称cluster1判断资源是否已经创建,如果已经创建跳到步骤B3,如果没有创建跳到步骤B7;
B3、拼接gbase8s statefulset资源名称,命名为gc-cluster1,
B4、根据集群名称cluster1和集群数量n生成gbase8s statefulset信息,并把以gc-cluster1名称生成的gbase8s statefulset标记为gc-cluster1的子资源;
B5、根据gbase8s statefulset信息判断statefulset是否已经存在,如果存在跳到步骤B8,如果不存在跳到步骤B6;
B6、把步骤B4中gbase8s statefulset信息通知给api-server,让api-server创建gbase8s statefulset,创建后kubernetes启动n个gbase8s pod,跳到步骤B9;
B7、表示cluster1资源已经被删除,通知api-server删除cluster1的子资源,跳到步骤B9;
B8、把步骤B4中gbase8s statefulset信息通知给api-server,让api-server更新gbase8s statefulset,更新后保持n个gbase8s pod,跳到步骤B9;
B9、结束。
进一步的,在步骤A4中,通过gbase8s-controller集群协调模块建立或更新集群,流程如下:
C1、进入集群协调模块入口;
C2、判断集群协调线程是否启动,如果已经启动跳到步骤C3,如果没有启动跳到步骤C14;
C3、发送开始协调集群的消息给集群协调线程队列;
C4、发送停止故障检测消息给故障检测模块;
C5、集群协调线程收到步骤C3的消息后,获取消息中的集群名称,并根据集群名称从api-server获取gbase8s pod信息和对应的hostname;
C6、根据步骤C5中的hostname,向每个gbase8s pod发送建立互信和sqlhost的消息;
C7、根据步骤C5中的hostname,向每个gbase8s pod获取当前在集群中的角色;
C8、根据步骤C7中的角色信息,判断集群是否有主节点,如果没有跳到步骤C9,如果有跳到步骤C16;
C9、根据步骤C7中的角色信息,判断集群是否有辅节点,如果没有跳到步骤C10,如果有跳到步骤C17;
C10、随机选择一个gbase8s pod作为主节点,其他节点作为辅节点;
C11、向选出的主节点发送成为主节点的消息;
C12、向选出的辅节点发送成为辅节点的消息;
C13、发送恢复故障检测消息给故障检测模块,跳到步骤C18;
C14、启动集群协调线程,并把集群名绑定到此线程;
C15、创建线程消息队列,监听协调集群消息,跳到步骤C3;
C16、向没有加入集群的节点发送成为辅节点的消息,跳到步骤C13;
C17、随机选择1个辅节点升级为主节点,并向被选中的辅节点发送升级的消息,跳到步骤C16;
C18、结束。
进一步的,在步骤A4中,gbase8s-controller故障检测模块启动后,进行故障检测的处理流程如下:
D1、gbase8s-controller故障检测模块收到步骤A4中的集群协调模块发出的开始故障检测消息后,启动故障检测定时器;
D2、定时从api-server获取集群中gbase8s pod信息;
D3、根据获取的gbase8s pod信息从gbase8s pod获取集群状态;
D4、根据步骤D3中的集群状态,进行集群故障判断,如果存在故障则发送故障消息给集群协调模块,不存在故障则结束。
进一步的,在步骤S3中,gbase8s-controller发送消息通知gbase8s pod的agent建立集群的工作流程包括:
当收到gbase8s-controller发来的建立互信的消息,消息内容包括集群内其他pod的hostname,提取消息中的内容写入/etc/hosts.equiv;
当收到gbase8s-controller发来的生成sqlhost的消息,消息内容包括集群内其他pod的hostname,提取消息的内容写入$(GBASEDBTDIR)/etc/sqlhost;
当被选中的即将成为主节点的gbase8s pod在收到gbase8s-controller发来的成为主节点的消息,调用命令onmode–d add rss变为主节点,调用ontape–s–L 0生成备份文件;
当收到gbase8s-controller发来的成为辅节点的消息,消息内容包括主节点的网络标识,通过主节点的网络标识跟主节点建立http连接,并从主节点获取备份文件,然后调用命令ontape–p–t恢复主节点备份文件,再调用命令onmode–d RSS加入集群成为辅节点;
当收到gbase8s-controller发来的获取集群状态消息,调用命令onstat–g rss获取集群状态并回复给gbase8s-controller。
第二方面本方案公开了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行第一方面所述的一种自动化部署gbase8s集群的方法。
第三方面本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行第一方面所述的一种自动化部署gbase8s集群的方法。
第四方面本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的一种自动化部署gbase8s集群的方法。
相对于现有技术,本发明所述的一种自动化部署gbase8s集群的方法具有以下有益效果:
(1)本发明所述的一种自动化部署gbase8s集群的方法,只要简单的写一下配置文件,集群名称、节点个数,就能在kubernetes中快速部署gbase8s集群,省去人工部署的麻烦;
(2)本发明所述的一种自动化部署gbase8s集群的方法,只要集群名称不同,就可以快速部署多个不同的集群,给不同的应用使用;
(3)本发明所述的一种自动化部署gbase8s集群的方法,在集群辅节点不够用的情况,只要加大一下配置文件中节点个数,就能自动增加辅节点个数,省去人工加节点的麻烦;
(4)本发明所述的一种自动化部署gbase8s集群的方法,在集群发生故障时,如主节点或辅节点掉线等,可以快速恢复集群状态,不需要人为干预,能在短时间内恢复应用的业务正常运行。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种自动化部署gbase8s集群的方法系统框架示意图;
图2为本发明实施例所述的资源管理模块启动gbase8s pod流程示意图;
图3为本发明实施例所述的集群协调模块建立或更新集群流程上半部分示意图(图3与图4共同组成完成的集群协调模块建立或更新集群流程示意图);
图4为本发明实施例所述的集群协调模块建立或更新集群流程下半部分示意图(图3与图4共同组成完成的集群协调模块建立或更新集群流程示意图);
图5为本发明实施例所述的故障检测模块启动后的处理流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
在本方案中,kubernetes是容器集群管理系统,是云计算时代新型的技术和产物,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。具体来说,通过Kubernetes可以快速部署应用、快速扩展应用、节省资源并优化硬件资源的使用。在kubernetes中一切都是资源。
Kubectl是一个命令行工具,用来管理kubernetes的客户端,对资源的操作可以用Kubectl命令发出。
CRD(自定义资源)是kubernetes的对象资源,kubernetes可以监控CRD的创建、更新、删除事件。
Controller(控制器)对CRD事件做出处理,gbase8s-controller是本发明中实现的一种controller。
Statefulset是kubernetes的一种对象资源,用它启动的pod具有稳定的唯一的网络标识,有序的启动pod。
Pod是kubernetes的一种对象资源,里面可以一个或多个容纳容器,gbase8s pod是打包了gbase8s数据库和其代理程序的一种pod。
Gbase8s集群是一个高可用关系型数据库集群,结构为一主多从,主节点可以读写数据,从节点只能读取数据,至少要保证主节点可用才能保证业务可用。
现有的gbase8s集群的部署需要手动建立互信、填充sqlhost及使用命令完成主辅节点角色的转换,这种方式对运维人员来说非常麻烦,尤其在kubernetes中使用手动部署要写很多复杂的资源配置文件,还需要使用kubernetes命令登录到gbase8s pod去执行集群建立的命令,所以为了解决上述问题,本发明提供一种简单高效的在kubernetes上自动部署及建立gbase8s集群的系统及方法,并实现当主节点发生故障时,从节点能自动变为主节点继续工作。
本方案的系统框图如图1所示,在整个系统中,主要由gbase8s-controller和gbase8s pod的agent(代理程序)两个组件完成gbase8s集群的建立及故障恢复功能。
gbase8s-controller主要是控制和协调gbase8s-cluster的建立,由资源管理、集群协调、故障检测三个模块组成;资源管理模块通过调用kubernetes提供的接口启动gbase8s pod;集群协调模块负责gbase8s-cluster的建立和故障恢复,消息内容有建立互信、生成sqlhost、把gbase8s集群中的节点变为主节点或辅节点;故障检测模块负责定时检测集群是否出现故障。
gbase8s-cluster是gbase8s的集群,集群内的pod都有一个代理程序,代理程序接收到gbase8s-controller的消息会跟其他pod交互,完成gbase8s-controller下发的消息指令来建立集群或实现集群的故障恢复。
本方案的工作流程如下:
步骤E1、部署gbase8s-controller和gbase8s pod,并通过CRD把gbase8s集群注册为kubernetes管理的资源,资源名称为gbase8s-cluster。
步骤E2、用户写好gbase8s-cluster的配置文件,内容主要有集群名称和集群节点个数,使用kubernetes命令创建这个集群。
步骤E3、gbase8s-controller收到api-server创建集群的订阅消息,调用api-server的接口启动相应节点个数的gbase8s pod,之后发送消息通知gbase8s pod的agent建立集群。
步骤E4、gbase8s-controller启动故障检测功能,定时检测集群的状态,如集群发生故障,会进行故障恢复工作。
具体的实施方式如下:
步骤F1、由gbase8s-controller向api-server发起订阅请求,订阅gbase8s-cluster及其子资源的新增、修改、删除事件。
步骤F2、当api-server监控到gbase8s-cluster及其子资源的事件后,把事件推送给gbase8s-controller。
步骤F3、gbase8s-controller收到事件后,由资源管理模块启动gbase8s pod,启动完成后,调用集群协调模块入口。
步骤F4、gbase8s-controller集群协调模块会建立或更新集群,流程如下,之后会启动故障检测模块。
在步骤F3中,启动流程如图2所示,具体步骤包括:
步骤G1: gbase8s-controller收到事件后,获取事件里携带的gbase8s-cluster名称(cluster1)和期望的集群数量(n)等信息。
步骤G2:根据集群名称cluster1判断资源是否已经创建,如果已经创建跳到步骤G3,如果没有创建跳到步骤G7。
步骤G3:拼接gbase8s statefulset资源名称,格式为gc-$(gbase8s-cluster-name),此例为gc-cluster1。
步骤G4:根据集群名称gc-cluster1和集群数量n生成gbase8s statefulset信息,并把这个statefulset标记为gc-cluster1的子资源。
步骤G5:根据gbase8s statefulset信息判断statefulset是否已经存在,如果存在跳到步骤G8,如果不存在跳到步骤G6。
步骤G6:把步骤G4中gbase8s statefulset信息通知给api-server,使其创建statefulset,创建后kubernetes会启动n个gbase8s pod,跳到步骤G9。
步骤G7:表示gbase8s-cluster(cluster1)资源已经被删除,通知api-server删除cluster1的子资源,跳到步骤G9。
步骤G8:把步骤G4中gbase8s statefulset信息通知给api-server,使其更新statefulset,更新后会保持n个gbase8s pod,跳到步骤G9。
步骤G9:结束。
如图3和图4所示,在步骤F4中,gbase8s-controller集群协调模块会建立或更新集群,流程如下:
步骤H1:进入集群协调模块入口。
步骤H2:判断集群协调线程是否启动,如果已经启动跳到步骤H3,如果没有启动跳到步骤H14。
步骤H3:发送开始协调集群的消息给集群协调线程队列。
步骤H4:发送停止故障检测消息给故障检测模块。
步骤H5:集群协调线程收到步骤H3的消息后,获取消息中的集群名称,并根据集群名称从api-server获取gbase8s pod信息和对应的hostname。
步骤H6:根据步骤H5中的hostname,向每个gbase8s pod发送建立互信和sqlhost的消息。
步骤H7:根据步骤H5中的hostname,向每个gbase8s pod获取当前在集群中的角色。
步骤H8:根据步骤H7中的角色信息,判断集群是否有主节点,如果没有跳到步骤H9,如果有跳到步骤H16。
步骤H9:根据步骤H7中的角色信息,判断集群是否有辅节点,如果没有跳到步骤H10,如果有跳到步骤H17。
步骤H10:随机选择一个gbase8s pod作为主节点,其他作为辅节点。
步骤H11:向选出的主节点发送成为主节点的消息。
步骤H12:向选出的辅节点发送成为辅节点的消息。
步骤H13:发送恢复故障检测消息给故障检测模块,跳到步骤H18。
步骤H14:启动集群协调线程,并把集群名绑定到此线程。
步骤H15:创建线程消息队列,监听协调集群消息,跳到步骤H3。
步骤H16:向没有加入集群的节点发送成为辅节点的消息,跳到步骤H13。
步骤H17:随机选择1个辅节点升级为主节点,并发送升级的消息,跳到步骤H16。
步骤H18:结束。
如图5所示,在步骤F4中,gbase8s-controller故障检测模块启动后的处理流程如下:
步骤I1:收到开始故障检测的消息。
步骤I2:启动故障检测定时器。
步骤I3:定时从api-server获取集群中gbase8s pod信息。
步骤I4:根据步骤I3的信息提取gbase8s pod集群状态信息。
步骤I5:根据步骤I4中集群状态信息判断是否发生集群故障,如果是跳到步骤I6,如果否跳到步骤I7。
步骤I6:发送故障消息给集群协调模块。
步骤I7:结束。
gbase8s pod agent工作流程如下:
步骤J1、收到gbase8s-controller发来的建立互信的消息,提取消息中的内容写入/etc/hosts.equiv。内容有集群内其他pod的hostname。
步骤J2、收到gbase8s-controller发来的生成sqlhost的消息,提取消息的内容写入$(GBASEDBTDIR)/etc/sqlhost。消息内容有集群内其他pod的hostname。
步骤J3、收到gbase8s-controller发来的成为主节点的消息,调用命令onmode–dadd rss变为主节点,调用ontape–s –L 0生成备份文件。
步骤J4、收到gbase8s-controller发来的成为辅节点的消息,消息内容有主节点信息,使用主节点信息跟主节点建立http连接,并从主节点获取备份文件,然后调用命令ontape–p–t恢复主节点备份文件,再调用命令onmode–d RSS加入集群成为辅节点。
步骤J5、收到gbase8s-controller发来的获取集群状态消息,调用命令onstat–grss获取集群状态并返回gbase8s-controller。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种自动化部署gbase8s集群的方法,其特征在于,包括以下步骤:
S1、部署gbase8s-controller和gbase8s pod,并通过CRD把gbase8s集群资源注册为kubernetes管理的资源;
其中,
gbase8s集群是一个高可用关系型数据库集群;
gbase8s-controller为控制器,是kubernetes的组件,用于对CRD事件作出处理,每种kubernetes资源都有对应的controller,gbase8s-controller用于对gbase8s集群资源的事件做出处理;
gbase8s pod是容纳了gbase8s 容器的pod,pod是kubernetes调度的最小资源单位,pod里容纳一个或多个容器;
S2、在步骤S1部署gbase8s-controller后,gbase8s-controller初始化时向api-server订阅gbase8s-cluster消息,gbase8s-cluster消息为gbase8s集群资源的消息;
S3、用户编写步骤S1中所述的gbase8s集群资源的配置文件,配置文件中包含集群名称和集群节点个数,使用kubectl命令通知kubernetes创建用户编写好的gbase8s集群资源;
gbase8s-controller收到api-server发送的创建gbase8s集群资源的消息,启动gbase8s pod,然后gbase8s-controller发送消息通知gbase8s pod的agent建立集群;
S4、在步骤S3中的gbase8s-controller给gbase8s pod发送建立集群消息后,等待集群建立成功后,gbase8s-controller启动故障检测功能,定时检测集群的状态,如集群发生故障,进行故障恢复工作。
2.根据权利要求1所述的一种自动化部署gbase8s集群的方法,其特征在于,在步骤S2至步骤S4中,gbase8s-controller的工作流程为:
A1、由gbase8s-controller向api-server发起订阅请求,订阅资源及其子资源的新增、修改、删除事件;
A2、当api-server监控到资源及其子资源的事件后,把事件推送给gbase8s-controller;
A3、gbase8s-controller收到事件后,启动gbase8s pod后,进入集群协调模块;
A4、通过gbase8s-controller集群协调模块建立或更新集群,之后启动故障检测模块。
3.根据权利要求2所述的一种自动化部署gbase8s集群的方法,其特征在于,在步骤A3中,gbase8s-controller收到事件后,由资源管理模块启动gbase8s pod,启动流程如下:
B1、gbase8s-controller收到事件后,获取事件里携带的集群名称,为cluster1,以及期望的集群数量信息;
B2、根据集群名称cluster1判断资源是否已经创建,如果已经创建跳到步骤B3,如果没有创建跳到步骤B7;
B3、拼接gbase8s statefulset资源名称,命名为gc-cluster1,
B4、根据集群名称cluster1和集群数量n生成gbase8s statefulset信息,并把以gc-cluster1名称生成的gbase8s statefulset标记为gc-cluster1的子资源;
B5、根据gbase8s statefulset信息判断statefulset是否已经存在,如果存在跳到步骤B8,如果不存在跳到步骤B6;
B6、把步骤B4中gbase8s statefulset信息通知给api-server,让api-server创建gbase8s statefulset,创建后kubernetes启动n个gbase8s pod,跳到步骤B9;
B7、表示cluster1资源已经被删除,通知api-server删除cluster1的子资源,跳到步骤B9;
B8、把步骤B4中gbase8s statefulset信息通知给api-server,让api-server更新gbase8s statefulset,更新后保持n个gbase8s pod,跳到步骤B9;
B9、结束。
4.根据权利要求2所述的一种自动化部署gbase8s集群的方法,其特征在于:在步骤A4中,通过gbase8s-controller集群协调模块建立或更新集群,流程如下:
C1、进入集群协调模块入口;
C2、判断集群协调线程是否启动,如果已经启动跳到步骤C3,如果没有启动跳到步骤C14;
C3、发送开始协调集群的消息给集群协调线程队列;
C4、发送停止故障检测消息给故障检测模块;
C5、集群协调线程收到步骤C3的消息后,获取消息中的集群名称,并根据集群名称从api-server获取gbase8s pod信息和对应的hostname;
C6、根据步骤C5中的hostname,向每个gbase8s pod发送建立互信和sqlhost的消息;
C7、根据步骤C5中的hostname,向每个gbase8s pod获取当前在集群中的角色;
C8、根据步骤C7中的角色信息,判断集群是否有主节点,如果没有跳到步骤C9,如果有跳到步骤C16;
C9、根据步骤C7中的角色信息,判断集群是否有辅节点,如果没有跳到步骤C10,如果有跳到步骤C17;
C10、随机选择一个gbase8s pod作为主节点,其他节点作为辅节点;
C11、向选出的主节点发送成为主节点的消息;
C12、向选出的辅节点发送成为辅节点的消息;
C13、发送恢复故障检测消息给故障检测模块,跳到步骤C18;
C14、启动集群协调线程,并把集群名绑定到此线程;
C15、创建线程消息队列,监听协调集群消息,跳到步骤C3;
C16、向没有加入集群的节点发送成为辅节点的消息,跳到步骤C13;
C17、随机选择1个辅节点升级为主节点,并向被选中的辅节点发送升级的消息,跳到步骤C16;
C18、结束。
5.根据权利要求2所述的一种自动化部署gbase8s集群的方法,其特征在于:在步骤A4中,gbase8s-controller故障检测模块启动后,进行故障检测的处理流程如下:
D1、gbase8s-controller故障检测模块收到步骤A4中的集群协调模块发出的开始故障检测消息后,启动故障检测定时器;
D2、定时从api-server获取集群中gbase8s pod信息;
D3、根据获取的gbase8s pod信息从gbase8s pod获取集群状态;
D4、根据步骤D3中的集群状态,进行集群故障判断,如果存在故障则发送故障消息给集群协调模块,不存在故障则结束。
6.根据权利要求1所述的一种自动化部署gbase8s集群的方法,其特征在于:在步骤S3中,gbase8s-controller发送消息通知gbase8s pod的agent建立集群的工作流程包括:
当收到gbase8s-controller发来的建立互信的消息,消息内容包括集群内其他pod的hostname,提取消息中的内容写入/etc/hosts.equiv;
当收到gbase8s-controller发来的生成sqlhost的消息,消息内容包括集群内其他pod的hostname,提取消息的内容写入$(GBASEDBTDIR)/etc/sqlhost;
当被选中的即将成为主节点的gbase8s pod在收到gbase8s-controller发来的成为主节点的消息,调用命令onmode–d add rss变为主节点,调用ontape–s–L 0生成备份文件;
当收到gbase8s-controller发来的成为辅节点的消息,消息内容包括主节点的网络标识,通过主节点的网络标识跟主节点建立http连接,并从主节点获取备份文件,然后调用命令ontape–p–t恢复主节点备份文件,再调用命令onmode–d RSS加入集群成为辅节点;
当收到gbase8s-controller发来的获取集群状态消息,调用命令onstat–g rss获取集群状态并回复给gbase8s-controller。
7.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1-6任一所述的一种自动化部署gbase8s集群的方法。
8.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-6任一所述的一种自动化部署gbase8s集群的方法。
9.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-6任一项所述的一种自动化部署gbase8s集群的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537733.5A CN113934711B (zh) | 2021-12-16 | 2021-12-16 | 一种自动化部署gbase8s集群的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111537733.5A CN113934711B (zh) | 2021-12-16 | 2021-12-16 | 一种自动化部署gbase8s集群的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113934711A CN113934711A (zh) | 2022-01-14 |
CN113934711B true CN113934711B (zh) | 2022-03-15 |
Family
ID=79289144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111537733.5A Active CN113934711B (zh) | 2021-12-16 | 2021-12-16 | 一种自动化部署gbase8s集群的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113934711B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357369B (zh) * | 2022-10-21 | 2023-03-24 | 之江实验室 | 一种k8s容器云平台中CRD应用集成调用方法与装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531987A (zh) * | 2019-07-30 | 2019-12-03 | 平安科技(深圳)有限公司 | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 |
CN112214330A (zh) * | 2020-11-04 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 集群中主节点的部署方法、装置及计算机可读存储介质 |
CN112667362A (zh) * | 2021-01-04 | 2021-04-16 | 烽火通信科技股份有限公司 | Kubernetes上部署Kubernetes虚拟机集群的方法与系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11176245B2 (en) * | 2019-09-30 | 2021-11-16 | International Business Machines Corporation | Protecting workloads in Kubernetes |
-
2021
- 2021-12-16 CN CN202111537733.5A patent/CN113934711B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531987A (zh) * | 2019-07-30 | 2019-12-03 | 平安科技(深圳)有限公司 | 基于Kubernetes集群的管理方法、装置及计算机可读存储介质 |
CN112214330A (zh) * | 2020-11-04 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 集群中主节点的部署方法、装置及计算机可读存储介质 |
CN112667362A (zh) * | 2021-01-04 | 2021-04-16 | 烽火通信科技股份有限公司 | Kubernetes上部署Kubernetes虚拟机集群的方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113934711A (zh) | 2022-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290834B (zh) | 一种基于云管理平台实现业务高可用的方法、装置及设备 | |
US9842042B2 (en) | Datacenter management computing system | |
CN109271417B (zh) | 一种基于数据库的轻量级消息队列实现方法及存储设备 | |
US9998323B2 (en) | Datacenter configuration management tool | |
CN108712501B (zh) | 信息的发送方法、装置、计算设备以及存储介质 | |
CN100479575C (zh) | 在设备管理中实现预定操作的方法及装置 | |
WO2020248507A1 (zh) | 基于容器云的系统资源监控方法及相关设备 | |
CN111338784A (zh) | 一种实现代码仓库与计算服务整合的方法及系统 | |
CN104272292A (zh) | 用于基于云的服务的网络资源部署 | |
CN113569987A (zh) | 模型训练方法和装置 | |
CN114138754A (zh) | 基于Kubernetes平台的软件部署方法及装置 | |
CN105653425A (zh) | 基于复杂事件处理引擎的监控系统 | |
CN112799786A (zh) | 微服务实例的退出方法、装置、设备及存储介质 | |
CN112230987B (zh) | 一种分布式模块化插件框架实现系统及方法 | |
CN113934711B (zh) | 一种自动化部署gbase8s集群的方法 | |
CN110196749B (zh) | 虚拟机的恢复方法及装置、存储介质及电子装置 | |
JPWO2019208098A1 (ja) | 連携処理再開装置、および、連携処理再開方法 | |
CN117130730A (zh) | 面向联邦Kubernetes集群的元数据管理方法 | |
CN112153126A (zh) | 一种针对k8s集群的部署和节点管理方法和系统 | |
CN114598484B (zh) | 一种证书更新方法、装置、集群及存储介质 | |
CN110620798A (zh) | Ftp连接的控制方法、系统、设备和存储介质 | |
CN116010111B (zh) | 一种跨集群资源调度方法、系统及终端设备 | |
CN115567523A (zh) | 资源管理方法及系统 | |
JP4229288B2 (ja) | 分配情報生成システム、及び、分配情報生成方法 | |
CN112328403B (zh) | 一种SparkContext的配置方法、装置及服务端 |
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 |