CN111930465A - 一种基于Kubernetes的达梦主从集群部署方法和装置 - Google Patents

一种基于Kubernetes的达梦主从集群部署方法和装置 Download PDF

Info

Publication number
CN111930465A
CN111930465A CN202010471096.5A CN202010471096A CN111930465A CN 111930465 A CN111930465 A CN 111930465A CN 202010471096 A CN202010471096 A CN 202010471096A CN 111930465 A CN111930465 A CN 111930465A
Authority
CN
China
Prior art keywords
master
deployment
slave cluster
dreaming
cluster
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
CN202010471096.5A
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.)
Wuhan Dameng Database Co Ltd
Original Assignee
Wuhan Dameng Database 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 Wuhan Dameng Database Co Ltd filed Critical Wuhan Dameng Database Co Ltd
Priority to CN202010471096.5A priority Critical patent/CN111930465A/zh
Publication of CN111930465A publication Critical patent/CN111930465A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及集群部署和容器技术领域,具体涉及一种基于Kubernetes的达梦主从集群部署方法和装置,其中方法包括:根据达梦主从集群的特点,通过编写Dockerfile制作达梦主从集群Docker镜像;基于Docker镜像开发达梦主从集群Chart仓库,制作达梦主从集群各节点的Kubernetes资源yml模板文件;基于Chart仓库模板文件,在Kubernetes环境上使用Helm指令自动化部署达梦主从集群。本发明以容器方式实现达梦主从集群的自动化部署,省去人工部署的麻烦,更能避免人为失误,且各节点容器之间互相隔离,互不影响,利于数据库软件的升级更新/回滚等操作,并有利于可移植性。

Description

一种基于Kubernetes的达梦主从集群部署方法和装置
【技术领域】
本发明涉及集群部署和容器技术领域,具体涉及一种基于Kubernetes的达梦主从集群部署方法和装置。
【背景技术】
达梦主从集群软件是一种集成化的高可靠性解决方案,该方案基于数据库REDO日志,不依赖于第三方软件和存储,用于解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,提供不间断数据库服务,可同时满足用户对数据安全性和高可用性的要求。达梦主从集群包含的主要部件有:主数据库、备数据库、联机REDO日志系统、本地REDO日志归档服务、实时REDO日志归档服务、REDO日志重做服务、MAL系统、守护进程和监视器。其中,守护进程和监视器是两个独立的工具,其他部件集成在达梦数据库服务器DMSERVER中。
在使用达梦主从集群软件时,如何快速准确地实现集群部署至关重要。数据库软件的传统部署方式是通过插件或脚本来安装数据库服务,然而,这样做的缺点是数据库的运行、配置、管理和所有生命周期都将与当前操作系统绑定,不利于数据库软件的升级更新/回滚等操作;当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。需要说明的是,使用以上所述的传统方式进行集群部署时,通常需要运维人员的人为干预,人工部署存在很多麻烦,准确率和效率都比较低,难以快速准确地实现集群自动化部署。
鉴于此,克服上述现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明需要解决的技术问题是:
目前主从集群部署一般是通过插件或脚本来安装数据库服务,数据库的运行、配置、管理和所有生命周期都将与当前操作系统绑定,不利于数据库软件的升级更新/回滚等操作,创建虚拟机又不利于可移植性;而且需要人工部署,准确率和效率都比较低。
本发明通过如下技术方案达到上述目的:
第一方面,本发明提供了一种基于Kubernetes的达梦主从集群部署方法,包括:
根据达梦主从集群的特点,通过编写Dockerfile制作达梦主从集群Docker镜像;其中,所述Docker镜像支持达梦主从集群中Primary节点、Standby节点以及Monitor节点的自动化部署安装配置;
基于所述Docker镜像开发达梦主从集群Chart仓库,制作达梦主从集群各节点的Kubernetes资源yml模板文件;
基于所述Chart仓库中的模板文件,在Kubernetes环境上使用Helm指令自动化部署达梦主从集群。
优选的,所述Dockerfile的编写过程具体包括:
确定基础镜像,并建立达梦主从集群镜像的制作者信息;
准备达梦主从集群所需的安装包、配置模板文件和相关脚本文件;其中,所述相关脚本文件中包括主脚本startup.sh,达梦主从集群各节点的安装自动化部署工作都在所述主脚本startup.sh中;
定义容器中要使用的环境变量,并将所述配置模板文件和所述相关脚本文件中需要修改的一个或多个配置项变量化;
暴露达梦主从集群需要给外部使用的端口,并根据需要开放容器中的对应端口;
初始化容器后,运行主脚本程序,以便实现达梦主从集群各节点的自动化安装部署工作;
使用Docker命令构建达梦主从集群镜像,并将构建的镜像打标签后上传到Docker私服。
优选的,所述配置模板文件包括MAL系统配置文件dmmal.ini、守护进程配置文件dmwatcher.ini、归档日志配置文件dmarch.ini以及监视器配置文件dmmonitor.ini中的一项或多项。
优选的,所述相关脚本文件中还包括设置主备模式和oguid的sql脚本、远程复制主机上守护控制文件的exp脚本、达梦服务日志跨月切换shell脚本、容器时区控制脚本以及达梦主从集群安装部署之前的预处理脚本中的一项或多项。
优选的,所述主脚本程序的运行过程具体为:
在完成达梦主从集群部署安装之前的准备工作后,根据环境变量里传过来的信息判断节点角色,继而进入对应角色的安装部署流程,以实现集群各节点的并行部署;
其中,所述节点角色包括主机、备机和监视器;当主机和备机上分别运行达梦守护进程dmwatcher,监视器上运行监视器进程dmmonitor之后,整个集群部署完毕。
优选的,所述主机的安装部署流程具体包括:
判断当前数据文件是否存在;
如果存在,则直接以mount方式运行达梦服务主进程dmserver;
如果不存在,则先准备初始数据文件,根据环境变量配置dm.ini文件、dmmal.ini文件、dmarch.ini文件、dmwatcher.ini文件、dmwatcher.ctl文件,再以mount方式运行达梦服务主进程dmserver;
达梦服务主进程dmserver连接后,设置集群oguid并修改数据库为Primary模式,运行达梦守护进程dmwatcher。
优选的,所述监视器的安装部署流程具体包括:
判断当前数据文件是否存在;
如果存在,则直接运行监视器进程dmmonitor;
如果不存在,则先根据环境变量配置dmmonitor.ini文件,再运行监视器进程dmmonitor。
优选的,在达梦主从集群部署过程中,所述方法还包括:各容器将达梦主从集群各节点的服务日志推送到系统输出流,并根据达梦服务日志的特点,采用软链接和cron定时任务实现达梦服务日志跨月监控。
优选的,所述Chart仓库中的模板文件目录包括达梦主从集群各节点的deployment资源yml模板文件、service资源yml模板文件,以及两个yml模板文件中要使用的变量定义函数模板;
所述deployment资源yml模板文件中定义容器基本信息、容器使用的Docker镜像、容器CPU内存资源、数据持久化卷、容器内部端口及网络协议、容器环境变量以及容器内部探针中的一项或多项信息;
所述service资源yml模板文件用于将集群各节点容器以Service方式提供服务,容器间以NodePort方式进行访问;
所述变量定义函数模板文件用于将达梦主从集群自动化部署中使用的一个或多个变量定义成函数,以便deployment资源yml模板文件和service资源yml模板文件调用。
第二方面,本发明提供了一种基于Kubernetes的达梦主从集群部署装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的基于Kubernetes的达梦主从集群部署方法。
与现有技术相比,本发明的有益效果是:
本发明根据达梦主从集群的特点制作Docker镜像,以容器方式部署达梦主从集群,集群中各节点容器之间互相隔离,容器之间数据库进程不会相互影响,利于数据库软件的升级更新/回滚等操作;相对于虚拟机,容器能快速部署,且由于容器与底层设施、机器文件系统是解耦的,所以能使数据库在不同云、不同版本操作系统间进行迁移,利于可移植性;另外,通过将需要人为干预的地方模板化,可实现达梦主从集群的自动化部署,省去了人工部署的麻烦,更能避免人为失误。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于Kubernetes的达梦主从集群部署方法的流程图;
图2为本发明实施例提供的一种达梦主从集群Dockerfile的编写流程示意图;
图3为本发明实施例提供的一种达梦主从集群镜像中主脚本程序的执行流程图;
图4为本发明实施例提供的一种达梦主从集群Chart仓库模板文件目录的示意图;
图5为本发明实施例提供的一种基于Kubernetes的达梦主从集群部署装置的架构图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
针对现有技术中存在的一系列问题,本发明实施例提供了一种基于Kubernetes的达梦主从集群部署方法,可以容器方式实现达梦主从集群的自动化部署。
如图1所示,本发明实施例提供的一种基于Kubernetes的达梦主从集群部署方法具体包括以下步骤:
步骤10,根据达梦主从集群的特点,通过编写Dockerfile制作达梦主从集群Docker镜像。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
在该步骤中,可利用Docker技术,根据达梦主从集群的特点,通过编写Dockerfile制作和构建达梦主从集群Docker镜像文件;其中,所述Docker镜像支持达梦主从集群中Primary节点(即主机)、Standby节点(即备机)以及Monitor节点(即监视器)这三个节点容器的自动化部署安装配置,还可支持达梦主从集群中各节点的日志监控。需要说明的是,这里三个节点容器的数据库可以打包成一个容器镜像,无需制作三个镜像,处理过程更简单;且各节点的部署安装工作都是通过所述Docker镜像Dockerfile里的核心脚本(startup.sh)来控制,通过运行startup.sh即可实现三个节点的自动化并行安装部署。其中,关于Dockerfile的具体编写过程以及startup.sh的运行将在后续展开详细介绍,此处不再赘述。
步骤20,基于所述Docker镜像开发达梦主从集群Chart仓库,制作达梦主从集群各节点的Kubernetes资源yml模板文件。
Chart是Helm的软件包,采用TAR格式,类似于APT的DEB包或者YUM的RPM包,其包含了一组定义Kubernetes资源相关的YAML文件。Chart仓库由打包的Chart和称为index.yaml的特殊文件组成;在高层次上,Chart仓库是可以存储和共享打包Chart的地方。
在该步骤中,根据前面制作的Docker镜像中各容器需要开放的参数或变量,来开发制作达梦主从集群Chart仓库进行关联,也就是在仓库中制作达梦主从集群各节点的Kubernetes资源yml模板文件来进行关联;其中,所述Kubernetes资源yml主要是deployment资源yml模板文件(即部署资源yml模板文件)和service资源yml模板文件(即服务资源yml模板文件)。通过制作Chart仓库以及一系列相关的模板文件,可实现根据指定参数自动化部署主备集群、服务进程监控、数据库配置优化、数据持久化等功能,以此来保证集群的可扩展性、稳定性和数据的安全。其中,关于Chart仓库的具体模板文件目录将在后续展开详细介绍,此处不再赘述。
步骤30,基于所述Chart仓库中的模板文件,在Kubernetes环境上使用Helm指令自动化部署达梦主从集群。
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护的一种机制。Helm是Kubernetes的一个包管理工具,主要用于Kubernetes应用程序Chart的创建、打包、发布,以及创建和管理本地和远程的Chart仓库,可以把Helm类比为Ubuntu下的apt-get或者CentOS下的yum包管理工具。
前面步骤中达梦主从集群Chart仓库开发完毕之后,该步骤中就可以在Kubernetes环境上使用Helm指令自动化部署达梦主从集群。通过查看可发现启动了Primary节点、Standby节点以及Monitor节点三个容器,在指定的数据盘生成了达梦实例数据目录,达到数据持久化的作用,并且查看Monitor节点容器日志可以看到整个集群的状态信息。
下面结合附图,对各步骤的实施方式展开具体介绍:
在所述步骤10中,根据达梦主从集群的特点,通过编写Dockerfile制作达梦主从集群Docker镜像。其中,所述Dockerfile的编写过程可参考图2,具体包括以下步骤:
步骤101,确定基础镜像,并建立达梦主从集群镜像的制作者信息。其中,为了解决达梦服务跨月日志监控问题,此处的基础镜像优选采用制作好的带有cron服务的ubuntu16.04基础镜像;当然,也可以根据需要选择其他合适的基础镜像,在此不做具体限定。
步骤102,准备达梦主从集群所需的安装包、配置模板文件和相关脚本文件;即准备达梦主从集群所需的一系列数据文件。
其中,安装包数据需要精简,最基本的目录结构通常包含bin目录(执行码目录)、data目录(数据目录)以及log目录(日志目录)。
由于达梦主从集群组件比较多,配置模板文件也很多,在这里,所述配置模板文件主要包括dmmal.ini(MAL系统配置)、dmwatcher.ini(守护进程配置)、dmarch.ini(归档日志配置)以及dmmonitor.ini(监视器配置)中的一项或多项;其中,配置模板文件中可将一些需要定制的配置项变量化,方便后面使用容器环境变量进行修改替换。
相关脚本模板文件中包括主脚本startup.sh(即上文提到的核心脚本),达梦主从集群各节点的安装自动化部署工作都在所述主脚本startup.sh中,而且达梦服务日志监控实现也在所述主脚本startup.sh中。除主脚本startup.sh外,相关脚本模板文件中还主要包括设置主备模式(Primary或者Standby)和oguid(集群唯一标识码)的sql脚本、远程复制主机上守护控制文件(dmwatcher.ctl)的exp脚本、达梦服务日志跨月切换shell脚本、容器时区控制脚本以及达梦主从集群安装部署之前的预处理脚本中的一项或多项。
步骤103,定义容器中要使用的环境变量,并将所述配置模板文件和所述相关脚本文件中需要修改的一个或多个配置项变量化。这里一般是将需要经常修改的配置项变量化,如此一来,初始化容器后,在执行startup.sh脚本过程中就可以使用这些容器变量,然后替换模板文件中对应的配置项。
步骤104,暴露达梦主从集群需要给外部使用的端口,并根据需要开放容器中的对应端口。为方面后续的维护工作,本发明实施例主要暴露了数据库访问端口、MAL系统端口和守护进程端口,但并不唯一限定。
步骤105,初始化容器后,运行主脚本程序。其中,达梦主从集群各节点的安装自动化部署工作都在主脚本(startup.sh)程序中,因此运行主脚本程序后,即可实现达梦主从集群各节点的安装自动化部署;另外,对应的达梦服务日志监控实现也在主脚本程序startup.sh中。关于主脚本程序的运行,后面会详细介绍,在此不做赘述。
步骤106,使用Docker命令构建达梦主从集群镜像,并将构建的镜像打标签后上传到Docker私服,以便后续在Kubernetes环境中使用。
进一步结合图3,在所述步骤105中,所述主脚本startup.sh的运行过程具体如下:
首先,完成达梦主从集群部署安装之前的准备工作。在这里,所述准备工作主要是执行预处理脚本,可以方便后续运维,以及设置vim、开启ROOTSSH访问、追加加密算法、cgroup配置、expect插件安装等工作。
其次,根据环境变量里传过来的信息判断节点角色,继而进入对应角色的安装部署流程。其中,达梦主从集群节点有三种角色,即主机、备机和监视器,根据环境变量里传过来的角色可进入到对应角色的安装部署流程。这样设计能够实现集群节点的并行部署,达到快速自动化安装部署,提高用户交付响应速度,增强用户体验。当主机和备机上分别运行达梦守护进程dmwatcher,监视器上运行监视器进程dmmonitor之后,整个集群部署即完毕。
由于每个容器都难免会遇到重启或者异常情况,为了防止容器中数据库实例的数据丢失,本发明在每个节点角色的安装部署流程中,均采用计算存储分离的架构,在容器中主要运行数据库服务进程,而数据则放在容器外宿主机的本地盘或者分布式文件系统中。这种计算存储分离架构的使用,使得每次安装部署数据库需判断当前数据文件是否存在,如果数据文件不存在说明是第一次部署安装,需要重新初始化或配置相关文件;如果数据文件存在说明之前已经部署安装过,就可以跳过初始化和配置过程,继续向下执行。
下面继续结合图3,对各节点角色的安装部署流程进行详细介绍。
当判断节点角色为监视器时,进入监视器的安装部署流程,所述监视器的安装部署流程具体如下:判断当前数据文件(即图中的数据目录)是否存在;如果存在,说明之前已经安装部署过,则直接运行监视器进程dmmonitor;如果不存在,说明是第一次安装部署,则先根据环境变量配置dmmonitor.ini文件,再运行监视器进程dmmonitor。至此,监视器节点的安装部署完成。
当判断节点角色为主机时,进入主机的安装部署流程,所述主机的安装部署流程具体如下:判断当前数据文件是否存在;如果存在,说明之前已经安装部署过,则直接以mount方式运行达梦服务主进程dmserver;如果不存在,说明是第一次安装部署,则先准备初始数据文件,并根据环境变量配置dm.ini文件、dmmal.ini文件、dmarch.ini文件、dmwatcher.ini文件、远程拷贝守护控制文件dmwatcher.ctl,再以mount方式运行达梦服务主进程dmserver。
其中,由于硬件环境因素等影响,达梦服务主进程dmserver运行后,不是立马就能提供服务,因此需要增加服务是否可用的判断,即判断dmserver是否可连接,如图3所示;如果不可连接,则需要等待服务正常之后(即达梦服务主进程dmserver连接后),主机上设置集群oguid并修改数据库为Primary模式,最后主机运行达梦守护进程dmwatcher服务。至此,主机节点的安装部署完成。
当判断节点角色为备机时,进入备机的安装部署流程;其中,备机和主机的安装部署流程大致相同,且都需要增加服务是否可用的判断,主要区别在于:等待服务正常之后,备机上设置集群oguid并修改数据库为Standby模式,最后备机运行达梦守护进程dmwatcher服务。至此,备机节点的安装部署完成。其余各步骤可参考图3以及上述对主机流程的介绍,在此不做赘述。
如图3,至主机和备机上分别运行达梦守护进程dmwatcher、监视器上运行监视器进程dmmonitor,整个集群已经部署完毕,等待片刻即可提供集群服务。
进一步地,由于容器可以动态收集系统输出流中的日志,为了方便后续运维工作,在达梦主从集群部署过程中,本发明实施例的各容器可将达梦主从集群各节点服务日志推送到系统输出流,并根据达梦服务日志的特点,使用软链接和cron定时任务实现达梦服务日志跨月监控,从而实现集群各节点的日志监控。
在所述步骤20中,基于所述Docker镜像开发达梦主从集群Chart仓库,制作达梦主从集群各节点的Kubernetes资源yml模板文件。其中,所述Chart仓库的模板文件目录可参考图4,主要包括达梦主从集群各节点的deployment资源yml模板文件、service资源yml模板文件,以及各yml模板文件中要使用的变量定义函数模板_helpers.tpl。各模板文件的特点如下:
所述deployment资源yml模板文件中主要定义了容器基本信息、容器使用的Docker镜像、容器CPU内存资源、数据持久化卷、容器内部端口及网络协议、容器环境变量以及容器内部探针中的一项或多项信息;其中,容器使用的Docker镜像即为步骤10中开发制作的达梦主从集群镜像,容器内部探针可以对数据库进程进行定时检测,守护数据库服务主进程。
所述service资源yml模板文件主要是将集群各节点容器以Service方式提供服务,使容器间以NodePort方式进行访问;通过这种方式,集群内部各节点容器之间通信就可以通过服务名方式进行访问,成功解决了由于容器重启导致容器内部虚拟IP变化无法访问的问题。
所述变量定义函数模板_helpers.tpl文件主要用于将达梦主从集群自动化部署中使用的一个或多个变量定义成函数,以便deployment资源yml模板文件和service资源yml模板文件调用;举例说明,可以将集群的oguid定义成模板函数,设置默认值生成方式,这样既可以显示指定oguid,也可以通过oguid模板函数生成随机值。
在所述步骤30中,达梦主从集群Chart仓库开发完毕之后,就可以在Kubernetes环境上使用Helm指令自动化部署达梦主从集群了。具体的Helm命令如下:首先进到达梦主从集群Chart仓库的工程目录,然后执行“helminstall.--namedmwatcher--namespacedameng--valuesvalues.yaml”命令,快速完成达梦主从集群的自动化部署;其中,values.yaml里定义了集群部署中使用的变量。通过这种方式,可以将经常要修改的配置项定义其中,这样就使得集群的部署灵活多样。部署完成之后,查看发现启动了Primary节点、Standby节点以及Monitor节点三个容器,在指定的数据盘生成了达梦实例数据目录达到数据持久化的作用,并且查看Monitor节点容器日志可以看到整个集群的状态信息。
需要说明的是,本发明中是以达梦数据库为例,介绍了达梦主从集群的自动化部署。对于许多其他集群,例如,MPP、读写分离、RAC等集群,同样可以采用类似的方法来实现自动化部署,即先根据相应数据库的集群特点制作对应的集群Docker镜像,再开发对应集群Chart仓库,最后在Kubernetes环境上使用Helm指令自动化部署对应集群。
当然,在具体的实现细节上会与本发明实施例介绍的达梦数据库存在一些差别;例如,对于一些数据库(如Mysql),在制作主从集群Docker镜像时仅涉及Primary节点和Standby节点的安装部署,并不涉及Monitor节点;相应地,在编写Dockerfile和运行主脚本时,也是围绕这两个节点展开,配置这两个节点相应的数据文件;具体实现方法可参考达梦主从集群的部署方案,在此不一一赘述。
综上所述,本发明实施例提供的一种基于Kubernetes的达梦主从集群部署方法,主要有以下优势:
本发明根据达梦主从集群的特点制作Docker镜像,以容器方式实现达梦主从集群的自动化部署,集群中各节点容器之间互相隔离,每个容器有自己的文件系统,容器之间数据库进程不会相互影响,能区分计算资源,利于数据库软件的升级更新/回滚等操作;
相对于虚拟机,容器能快速部署,且由于容器与底层设施、机器文件系统是解耦的,所以能使数据库在不同云、不同版本操作系统间进行迁移,利于可移植性;
容器占用资源少、部署快,数据库可以被打包成一个容器镜像,相比于对应每个容器制作一个镜像来说处理过程更简单,由于数据库服务不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境;
综合来看,本方案可完成达梦主从集群自动化部署等操作,省去了人工部署的麻烦,更能避免人为失误,因此极具推广价值。
实施例2:
在上述实施例1提供的基于Kubernetes的达梦主从集群部署方法的基础上,本发明还提供了一种可用于实现上述方法的基于Kubernetes的达梦主从集群部署装置,如图5所示,是本发明实施例的装置架构示意图。本实施例的基于Kubernetes的达梦主从集群部署装置包括一个或多个处理器21以及存储器22。其中,图5中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图5中以通过总线连接为例。
所述存储器22作为一种基于Kubernetes的达梦主从集群部署方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的基于Kubernetes的达梦主从集群部署方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行基于Kubernetes的达梦主从集群部署装置的各种功能应用以及数据处理,即实现实施例1的基于Kubernetes的达梦主从集群部署方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于Kubernetes的达梦主从集群部署方法,例如,执行以上描述的图1-图3所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于Kubernetes的达梦主从集群部署方法,其特征在于,包括:
根据达梦主从集群的特点,通过编写Dockerfile制作达梦主从集群Docker镜像;其中,所述Docker镜像支持达梦主从集群中Primary节点、Standby节点以及Monitor节点的自动化部署安装配置;
基于所述Docker镜像开发达梦主从集群Chart仓库,制作达梦主从集群各节点的Kubernetes资源yml模板文件;
基于所述Chart仓库中的模板文件,在Kubernetes环境上使用Helm指令自动化部署达梦主从集群。
2.根据权利要求1所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述Dockerfile的编写过程具体包括:
确定基础镜像,并建立达梦主从集群镜像的制作者信息;
准备达梦主从集群所需的安装包、配置模板文件和相关脚本文件;其中,所述相关脚本文件中包括主脚本,达梦主从集群各节点的安装自动化部署工作都在所述主脚本中;
定义容器中要使用的环境变量,并将所述配置模板文件和所述相关脚本文件中需要修改的一个或多个配置项变量化;
暴露达梦主从集群需要给外部使用的端口,并根据需要开放容器中的对应端口;
初始化容器后,运行主脚本程序,以便实现达梦主从集群各节点的自动化安装部署工作;
使用Docker命令构建达梦主从集群镜像,并将构建的镜像打标签后上传到Docker私服。
3.根据权利要求2所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述配置模板文件包括MAL系统配置文件、守护进程配置文件、归档日志配置文件以及监视器配置文件中的一项或多项。
4.根据权利要求2所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述相关脚本文件中还包括设置主备模式和oguid的脚本、远程复制主机上守护控制文件的脚本、达梦服务日志跨月切换脚本、容器时区控制脚本以及达梦主从集群安装部署之前的预处理脚本中的一项或多项。
5.根据权利要求2所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述主脚本程序的运行过程具体为:
在完成达梦主从集群部署安装之前的准备工作后,根据环境变量里传过来的信息判断节点角色,继而进入对应角色的安装部署流程,以实现集群各节点的并行部署;
其中,所述节点角色包括主机、备机和监视器;当主机和备机上分别运行达梦守护进程,监视器上运行监视器进程之后,整个集群部署完毕。
6.根据权利要求5所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述主机的安装部署流程具体包括:
判断当前数据文件是否存在;
如果存在,则直接以mount方式运行达梦服务主进程;
如果不存在,则先准备初始数据文件,根据环境变量配置dm.ini文件、dmmal.ini文件、dmarch.ini文件、dmwatcher.ini文件、dmwatcher.ctl文件,再以mount方式运行达梦服务主进程;
达梦服务主进程连接后,设置集群oguid并修改数据库为Primary模式,运行达梦守护进程。
7.根据权利要求5所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述监视器的安装部署流程具体包括:
判断当前数据文件是否存在;
如果存在,则直接运行监视器进程;
如果不存在,则先根据环境变量配置dmmonitor.ini文件,再运行监视器进程。
8.根据权利要求2所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,在达梦主从集群部署过程中,所述方法还包括:各容器将达梦主从集群各节点的服务日志推送到系统输出流,并根据达梦服务日志的特点,采用软链接和cron定时任务实现达梦服务日志跨月监控。
9.根据权利要求1-8任一所述的基于Kubernetes的达梦主从集群部署方法,其特征在于,所述Chart仓库中的模板文件目录包括达梦主从集群各节点的deployment资源yml模板文件、service资源yml模板文件,以及两个yml模板文件中要使用的变量定义函数模板;
所述deployment资源yml模板文件中定义容器基本信息、容器使用的Docker镜像、容器CPU内存资源、数据持久化卷、容器内部端口及网络协议、容器环境变量以及容器内部探针中的一项或多项信息;
所述service资源yml模板文件用于将集群各节点容器以Service方式提供服务,容器间以NodePort方式进行访问;
所述变量定义函数模板用于将达梦主从集群自动化部署中使用的一个或多个变量定义成函数,以便deployment资源yml模板文件和service资源yml模板文件调用。
10.一种基于Kubernetes的达梦主从集群部署装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9任一所述的基于Kubernetes的达梦主从集群部署方法。
CN202010471096.5A 2020-05-28 2020-05-28 一种基于Kubernetes的达梦主从集群部署方法和装置 Pending CN111930465A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010471096.5A CN111930465A (zh) 2020-05-28 2020-05-28 一种基于Kubernetes的达梦主从集群部署方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010471096.5A CN111930465A (zh) 2020-05-28 2020-05-28 一种基于Kubernetes的达梦主从集群部署方法和装置

Publications (1)

Publication Number Publication Date
CN111930465A true CN111930465A (zh) 2020-11-13

Family

ID=73316423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010471096.5A Pending CN111930465A (zh) 2020-05-28 2020-05-28 一种基于Kubernetes的达梦主从集群部署方法和装置

Country Status (1)

Country Link
CN (1) CN111930465A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064598A (zh) * 2021-03-24 2021-07-02 上海铼锶信息技术有限公司 容器集群管理系统部署方法及部署系统
CN115757361A (zh) * 2022-12-26 2023-03-07 北京柏睿数据技术股份有限公司 一种数据库集群系统自动化部署的方法和系统
CN116301932A (zh) * 2022-12-21 2023-06-23 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) 一种kubernetes环境下大型项目的快速部署方法
CN116450301A (zh) * 2023-06-14 2023-07-18 天津市天河计算机技术有限公司 基于容器的监控方法、系统、设备及介质
CN117369947A (zh) * 2023-10-26 2024-01-09 深圳海规网络科技有限公司 一种容器镜像的管理方法和管理系统
CN117763051A (zh) * 2024-02-22 2024-03-26 广州睿帆科技有限公司 一种可扩展的cdc方式达梦数据库同步系统及其应用
CN117874145A (zh) * 2024-03-13 2024-04-12 连连(杭州)信息技术有限公司 一种主从数据库的强一致方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947536A (zh) * 2019-03-25 2019-06-28 山东浪潮云信息技术有限公司 一种基于Kubernetes的PostgreSQL自动化部署方法
CN110012088A (zh) * 2019-03-29 2019-07-12 山东浪潮云信息技术有限公司 一种基于Kubernets的Redis主从集群自动化部署方案

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947536A (zh) * 2019-03-25 2019-06-28 山东浪潮云信息技术有限公司 一种基于Kubernetes的PostgreSQL自动化部署方法
CN110012088A (zh) * 2019-03-29 2019-07-12 山东浪潮云信息技术有限公司 一种基于Kubernets的Redis主从集群自动化部署方案

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SINAT_20261711: "达梦数据库-实时主备的配置", pages 1 - 9, Retrieved from the Internet <URL:《url:https://blog.csdn.net/sinat_20261711/article/details/101197288》> *
谭立新 等: "《智能家居机器人设计与控制》", vol. 1, 31 January 2015, 北京理工大学出版社, pages: 45 - 50 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064598A (zh) * 2021-03-24 2021-07-02 上海铼锶信息技术有限公司 容器集群管理系统部署方法及部署系统
CN113064598B (zh) * 2021-03-24 2024-02-06 上海铼锶信息技术有限公司 容器集群管理系统部署方法及部署系统
CN116301932B (zh) * 2022-12-21 2023-09-29 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) 一种kubernetes环境下大型项目的快速部署方法
CN116301932A (zh) * 2022-12-21 2023-06-23 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) 一种kubernetes环境下大型项目的快速部署方法
CN115757361A (zh) * 2022-12-26 2023-03-07 北京柏睿数据技术股份有限公司 一种数据库集群系统自动化部署的方法和系统
CN115757361B (zh) * 2022-12-26 2023-08-18 北京柏睿数据技术股份有限公司 一种数据库集群系统自动化部署的方法和系统
CN116450301A (zh) * 2023-06-14 2023-07-18 天津市天河计算机技术有限公司 基于容器的监控方法、系统、设备及介质
CN116450301B (zh) * 2023-06-14 2023-08-15 天津市天河计算机技术有限公司 基于容器的监控方法、系统、设备及介质
CN117369947A (zh) * 2023-10-26 2024-01-09 深圳海规网络科技有限公司 一种容器镜像的管理方法和管理系统
CN117763051A (zh) * 2024-02-22 2024-03-26 广州睿帆科技有限公司 一种可扩展的cdc方式达梦数据库同步系统及其应用
CN117763051B (zh) * 2024-02-22 2024-04-26 广州睿帆科技有限公司 一种可扩展的cdc方式达梦数据库同步系统及其应用
CN117874145A (zh) * 2024-03-13 2024-04-12 连连(杭州)信息技术有限公司 一种主从数据库的强一致方法、装置、设备及存储介质
CN117874145B (zh) * 2024-03-13 2024-05-28 连连(杭州)信息技术有限公司 一种主从数据库的强一致方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN111930465A (zh) 一种基于Kubernetes的达梦主从集群部署方法和装置
CN109062655B (zh) 一种容器化云平台及服务器
KR102370568B1 (ko) 모놀리식 레거시 애플리케이션들에 기초한 마이크로서비스들의 컨테이너화된 전개
CN107766126B (zh) 容器镜像的构建方法、系统、装置及存储介质
US10977066B2 (en) Virtual machine to container conversion and optimization
CN107577475B (zh) 一种数据中心集群系统的软件包管理方法及系统
US10430204B2 (en) System and method for cloud provisioning and application deployment
WO2019199495A1 (en) Method for managing application configuration state with cloud based application management techniques
US20100325624A1 (en) Method and System for Application Portability
CN106708740B (zh) 脚本测试方法及装置
WO2019060228A1 (en) SYSTEMS AND METHODS FOR SERVICE INSTANCATION ON SERVICES
JPH0934723A (ja) ネットワークでのアプリケーション・プログラムの導入のための導入計画オブジェクトのコミット
US10305731B2 (en) System and method for provisioning cloud services across heterogeneous environments using partitioned provisioning instructions stored on a configuration management server
CN113434158B (zh) 一种大数据组件的自定义管理方法、装置、设备及介质
US20220121543A1 (en) Key value store in a clustered containerized system
CN117099079A (zh) 经由配置在云平台中的数据中心上的持续交付部署的服务的系统配置冻结和变更管理
CN111930466A (zh) 一种基于Kubernetes的数据同步环境部署方法和装置
Liu et al. Docker-based automatic deployment for nuclear fusion experimental data archive cluster
CN114995835A (zh) 一种应用自动化部署方法、系统、设备和可读存储介质
CN114461182A (zh) 流水线构建的方法、装置、电子设备及计算机可读存储介质
CN114064079A (zh) 算法应用元的打包方法及装置、设备、存储介质
US11307839B2 (en) Updating of container-based applications
CN111399847A (zh) 一种可跨硬件平台移植的业务系统
CN115145604A (zh) 一种容器化的电力营销系统部署方法
CN117762645B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Applicant after: Wuhan dream database Co., Ltd

Address before: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Applicant before: WUHAN DAMENG DATABASE Co.,Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Chen Qi

Inventor after: Wang Bin

Inventor after: Yu Yuanlan

Inventor after: Sun Feng

Inventor before: Fu Quan

Inventor before: Chen Qi

Inventor before: Wang Bin

Inventor before: Yu Yuanlan

Inventor before: Sun Feng