Mysql集群部署方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机
技术领域
,尤其涉及一种Mysql集群部署方法、装置、电子设备及存储介质。背景技术
在数据的存储应用中,Mysql作为一种关系型数据库管理系统,因具有体积小、速度快及总体拥有成本低等特点,备受用户关注。Mysql将数据分割保存在不同的多个表中,而不是将所有数据存储在一个大仓库内,因此增加了存储速度并提高了灵活性。
目前,在进行Mysql的部署时,通常是利用脚本通过安装包进行部署,运行管理需依赖于物理主机或者虚拟主机。该处理方式下,Mysql的运行、配置、管理和所有生存周期等都将与当前操作系统绑定,不利于应用的升级更新或回滚等操作,且可移植性差。
发明内容
本发明提供一种Mysql集群部署方法、装置、电子设备及存储介质,用以解决现有技术可维护性和可移植性差等问题的缺陷,实现有效提高Mysql集群的可维护性的目标。
本发明提供一种Mysql集群部署方法,包括:
在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群。
根据本发明提供的一种Mysql集群部署方法,所述在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群,包括:
部署Kubernetes集群,以形成所述Kubernetes环境,并在所述Kubernetes环境下,安装所述Helm工具;
修改所述Helm工具的配置,并利用修改后的Helm工具,配置并部署所述Mysql集群。
根据本发明提供的一种Mysql集群部署方法,所述利用修改后的Helm工具,配置并部署所述Mysql集群,包括:
利用所述Kubernetes集群的kubectl,创建Mysql命名空间,并利用所述修改后的Helm工具,基于所述Mysql命名空间安装Mysql实例;
利用所述修改后的Helm工具,部署所述Mysql集群。
根据本发明提供的一种Mysql集群部署方法,还包括:
部署分布式存储,并基于所述分布式存储,将所述Mysql集群的数据采用网络存储。
根据本发明提供的一种Mysql集群部署方法,所述部署分布式存储,包括:
进入ceph目录,并在所述ceph目录下,利用所述Kubernetes集群的kubectl,分别创建存储实例、rook集群、文件系统和存储类型,实现所述分布式存储的部署。
根据本发明提供的一种Mysql集群部署方法,还包括:
安装Ingress集群,并利用所述Ingress集群,通过对外暴露所述Kubernetes集群的服务,暴露所述Mysql集群。
本发明还提供一种Mysql集群部署装置,包括:
部署模块,用于在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群。
根据本发明提供的一种Mysql集群部署装置,所述部署模块,用于:
部署Kubernetes集群,以形成所述Kubernetes环境,并在所述Kubernetes环境下,安装所述Helm工具;
修改所述Helm工具的配置,并利用修改后的Helm工具,配置并部署所述Mysql集群。
本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述处理器执行所述程序或指令时,实现如上述任一种所述的Mysql集群部署方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有程序或指令,所述程序或指令被计算机执行时,实现如上述任一种所述的Mysql集群部署方法的步骤。
本发明提供的Mysql集群部署方法、装置、电子设备及存储介质,采用Kubernetes容器化部署Mysql集群,通过容器化及容器编排技术,使得系统更易于使用,且具有更高的可扩展性和可维护性,同时能够合理使用硬件资源。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的Mysql集群部署方法的流程示意图之一;
图2为本发明提供的Mysql集群部署方法的流程示意图之二;
图3为本发明提供的Mysql集群部署装置的结构示意图;
图4为本发明提供的电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明针对现有技术可维护性和可移植性差等的问题,采用Kubernetes容器化部署Mysql集群,通过容器化及容器编排技术,使得系统更易于使用,且具有更高的可扩展性和可维护性,同时能够合理使用硬件资源。以下将结合附图,具体通过多个实施例对本发明进行展开说明和介绍。
图1为本发明提供的Mysql集群部署方法的流程示意图之一,如图1所示,该方法包括:
S101,在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群。
可以理解为,本发明针对现有的部署Mysql集群方式的问题和不足,采用Kubernetes,通过容器化的方式,部署Mysql集群,以提高集群的可用性、可扩展性和可维护性。具体而言,基于Kubernetes集群中的Helm工具,安装并配置Mysql集群。其中,Helm工具作为Kubernetes的包管理器,可以通过设计Helm的Chart包,实现对Mysql集群的自动化部署。
其中,容器化是指将应用程序及其所需的库、框架和配置文件打包在一起,以便在服务器上运行。容器类似于虚拟机,但是具有更宽松的隔离属性;其不需要模拟硬件层,可以在应用程序之间共享操作系统;具有自己的文件系统、CPU、内存及进程空间等。另外,容器可以与底层基础设施解耦,因此可以跨云主机和操作系统移植。
Kubernetes是一种开源的容器编排引擎,提供了容器化技术的分布式架构方案,用于管理运行应用程序的容器。利用Kubernetes,能够自动进行服务负载均衡,方便自动部署和回滚,能够检查应用的运行状态,进行自我修复。
可选的,开发者可以利用Docker这一开源的应用容器引擎,将应用及依赖打包到一个可移植的容器中,并发布到Linux服务器上实现虚拟化,方便部署开发维护。在Docker技术的基础上,可以为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,能够进一步提高大规模容器集群管理的便捷性。
本发明提供的Mysql集群部署方法,基于Kubernetes实现Mysql集群的容器化自动部署,通过容器化及容器编排技术,使得系统更易于使用,且具有更高的可扩展性和可维护性,同时能够合理使用硬件资源。
其中,根据上述各实施例提供的Mysql集群部署方法可选地,所述在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群,包括:部署Kubernetes集群,以形成所述Kubernetes环境,并在所述Kubernetes环境下,安装所述Helm工具;修改所述Helm工具的配置,并利用修改后的Helm工具,配置并部署所述Mysql集群。
可以理解为,如图2所示,为本发明提供的Mysql集群部署方法的流程示意图之二,主要包括:
首先,为应用Kubernetes,可以先安装并部署Kubernetes集群,以搭建并提供Kubernetes环境。
其中,Kubernetes集群通常需要部署多个主(Mater)节点和若干副(Worker)节点,Master节点用于接收用户请求,监控集群资源状态,管理副本(pod)的生命周期。Worker节点上运行pod,通过kubelet与master组件交互,接收Master的管理和调度。配置整个Mysql集群运行在Kubernetes集群之上,具有一主多从结构,支持主从切换,读写分离。
之后,在Kubernetes环境下安装Kubernetes的软件包管理工具,也即Helm工具,用于解决在Kubernetes中部署Mysql集群过程中所涉及的大量Kubernetes资源的共同协作问题。具体可以先获取所需版本的Helm安装资源,再根据Helm提供的安装方式,完成Helm的自动安装。
其中,Helm是Kubernetes的包管理器,Helm把Kubernetes资源(如deployments、services或ingress等)打包到一个chart中,通过Helm打包应用、管理应用依赖关系、管理应用版本和发布应用等。其中,可通过如下代码安装helm:
tar-xvf helm-v3.0.2-linux-amd64.tar.gz
cd linux-amd64/
##移动到/usr/local/bin/
cp./helm/usr/local/bin/
##查看是否可用
helm version
可选地,如图2所示,本发明提供的Mysql集群部署方法还可以包括:部署分布式存储,并基于所述分布式存储,将所述Mysql集群的数据采用网络存储。也就是说,本发明在部署Mysql集群的过程中还可以对具体的存储方式进行部署,考虑到Mysql集群的特性,存储方式部署为分布式存储。
再之后,对安装好的Helm工具按照部署Mysql集群的具体需求进行修改和配置,修改完成后的Helm工具即形成修改后的Helm工具。
其中,可通过如下代码,修改Helm包配置:
最后,利用该修改后的Helm工具,安装并配置Mysql集群,完成对Mysql集群的部署。
其中,根据上述各实施例提供的Mysql集群部署方法可选地,所述利用修改后的Helm工具,配置并部署所述Mysql集群,包括:利用所述Kubernetes集群的kubectl,创建Mysql命名空间,并利用所述修改后的Helm工具,基于所述Mysql命名空间安装Mysql实例;利用所述修改后的Helm工具,部署所述Mysql集群。
可以理解为,本发明在利用修改后的Helm工具部署Mysql集群时,可以先对Mysql集群进行具体的安装配置,包括Mysql集群应用的命名空间和应用实例等。具体先利用Kubernetes集群的kubectl,创建Mysql命名空间,再在此基础上安装Mysql实例,以部署具体的Mysql集群。
其中,例如可以通过如下代码,实现通过Helm安装Mysql集群:
#创建namespace
kubectl create namespace mysql
#安装mysql-operator,在mysql-operator目录下执行
helm install mysql-op–namespace mysql.
#helm安装mysql集群,在mysql-cluster集群下执行
helm install mysql-ha--namespace mysql.
其中,kubectl是操作Kubernetes集群的命令行工具,安装在Kubernetes的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件。另外,可以通过设置Kubeconfig环境变量或设置kubeconfig来指定其他的kubeconfig文件。kubectl通过与apiserver交互可以实现对Kubernetes集群中各种资源的增删改查。
其中,根据上述各实施例提供的Mysql集群部署方法可选地,所述部署分布式存储,包括:进入ceph目录,并在所述ceph目录下,利用所述Kubernetes集群的kubectl,分别创建存储实例、rook集群、文件系统和存储类型,实现所述分布式存储的部署。
可以理解为,本发明对Mysql集群进行分布式存储的部署,是在ceph目录下进行的,因此先要进入到ceph目录。其中,ceph是一种分布式存储系统,可以部署在多台服务器上,通过多台服务器并行处理来对外提供高性能的读写块。
之后,在进入ceph目录的基础上,分别创建分布式存储相关的存储实例、rook集群、文件系统和存储类型等。具体代码可如下所示:
#进入到ceph目录
cd rook/cluster/examples/kubernetes/ceph
#创建operator
kubectl apply-f crds.yaml-f common.yaml-f operator.yaml
#创建rook集群
kubectl apply-f cluster.yaml
#创建filesystem
kubectl apply-f filesystem.yaml
#创建storageclass
cd csi/cephfs
kubectl apply-f storageclass.yaml。
本发明通过将Mysql的数据采用网络进行分布式存储,能够防止节点漂移造成的数据丢失。
进一步的,在上述各实施例的基础上,本发明提供的Mysql集群部署方法还包括:安装Ingress集群,并利用所述Ingress集群,通过对外暴露所述Kubernetes集群的服务,暴露所述Mysql集群。
可以理解为,如图2所示,在对Mysql集群进行部署的基础上,为向外提供具体的数据服务,可以将Mysql集群暴露出去。具体的,可以在Kubernetes环境下安装Ingress集群工具,并利用Ingress集群工具对外暴露Kubernetes集群的服务,以此实现对Mysql集群的向外暴露。
其中,Ingress集群包含两大组件:Ingress Controller和Ingress。Ingress即为Ingress对象,在Kubernetes应用中,Ingress对象是对要修改Nginx配置动作的抽象,也即对配置各种域名与对应Service对应动作的抽象。Ingress Controller则用于解决如何处理Nginx的问题,Ingress Controoler通过与Kubernetes的应用程序接口(ApplicationProgramming Interface,API)交互,动态的感知并读取集群中Ingress规则的变化,并按照内置模板生成一段Nginx配置写到Nginx Pod进行加载。
其中,通过Ingress对外暴露服务可通过如下代码实现:
基于相同的发明构思,本发明根据上述各实施例还提供一种Mysql集群部署装置,该装置用于在上述各实施例中实现Mysql集群部署。因此,在上述各实施例的Mysql集群部署方法中的描述和定义,可以用于本发明中各个执行模块的理解,具体可参考上述方法实施例,此处不在赘述。
根据本发明的一个实施例,Mysql集群部署装置的结构如图3所示,为本发明提供的Mysql集群部署装置的结构示意图,该装置可以用于实现上述各方法实施例中的Mysql集群部署,该装置包括:部署模块301,用于:
在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群。
具体而言,部署模块301针对现有的部署Mysql集群方式的问题和不足,采用Kubernetes,通过容器化的方式,部署Mysql集群,以提高集群的可用性、可扩展性和可维护性。具体而言,部署模块301基于Kubernetes集群中的Helm工具,安装并配置Mysql集群。其中,Helm工具作为Kubernetes的包管理器,可以通过设计Helm的Chart包,实现对Mysql集群的自动化部署。
本发明提供的Mysql集群部署装置,采用Kubernetes容器化部署Mysql集群,通过容器化及容器编排技术,使得系统更易于使用,且具有更高的可扩展性和可维护性,同时能够合理使用硬件资源。
可选地,所述部署模块,用于:
部署Kubernetes集群,以形成所述Kubernetes环境,并在所述Kubernetes环境下,安装所述Helm工具;
修改所述Helm工具的配置,并利用修改后的Helm工具,配置并部署所述Mysql集群。
可选地,所述部署模块,在用于所述利用修改后的Helm工具,配置并部署所述Mysql集群时,用于:
利用所述Kubernetes集群的kubectl,创建Mysql命名空间,并利用所述修改后的Helm工具,基于所述Mysql命名空间安装Mysql实例;
利用所述修改后的Helm工具,部署所述Mysql集群。
可选地,所述部署模块,还用于:
部署分布式存储,并基于所述分布式存储,将所述Mysql集群的数据采用网络存储。
可选地,所述部署模块,在用于所述部署分布式存储时,用于:
进入ceph目录,并在所述ceph目录下,利用所述Kubernetes集群的kubectl,分别创建存储实例、rook集群、文件系统和存储类型,实现所述分布式存储的部署。
可选地,所述Mysql集群部署装置还包括:
服务暴露模块,用于安装Ingress集群,并利用所述Ingress集群,通过对外暴露所述Kubernetes集群的服务,暴露所述Mysql集群。
可以理解的是,本发明中可以通过硬件处理器(hardware processor)来实现上述各实施例的装置中的各相关程序模块。并且,本发明的Mysql集群部署装置利用上述各程序模块,能够实现上述各方法实施例的Mysql集群部署流程,在用于实现上述各方法实施例中的Mysql集群部署时,本发明的装置产生的有益效果与对应的上述各方法实施例相同,可以参考上述各方法实施例,此处不再赘述。
作为本发明的又一个方面,本实施例根据上述各实施例提供一种电子设备,该电子设备包括存储器、处理器及存储在该存储器上并可在该处理器上运行的程序或指令,该处理器执行该程序或指令时,实现如上述各实施例所述的Mysql集群部署方法的步骤。
进一步的,本发明的电子设备还可以包括通信接口和总线。参考图4,为本发明提供的电子设备的实体结构示意图,包括:至少一个存储器401、至少一个处理器402、通信接口403和总线404。
其中,存储器401、处理器402和通信接口403通过总线404完成相互间的通信,通信接口403用于该电子设备与Kubernetes集群资源设备之间的信息传输;存储器401中存储有可在处理器402上运行的程序或指令,处理器402执行该程序或指令时,实现如上述各实施例所述的Mysql集群部署方法的步骤。
可以理解为,该电子设备中至少包含存储器401、处理器402、通信接口403和总线404,且存储器401、处理器402和通信接口403通过总线404形成相互间的通信连接,并可完成相互间的通信,如处理器402从存储器401中读取Mysql集群部署方法的程序指令等。另外,通信接口403还可以实现该电子设备与Kubernetes集群资源设备之间的通信连接,并可完成相互间信息传输,如通过通信接口403实现Kubernetes集群资源的获取等。
电子设备运行时,处理器402调用存储器401中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群等。
上述的存储器401中的程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明还根据上述各实施例提供一种非暂态计算机可读存储介质,其上存储有程序或指令,该程序或指令被计算机执行时,实现如上述各实施例所述的Mysql集群部署方法的步骤,例如包括:在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群等。
作为本发明的再一个方面,本实施例根据上述各实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的Mysql集群部署方法,该方法包括:在Kubernetes环境下,利用Helm工具,容器化配置并部署Mysql集群。
本发明提供的电子设备、非暂态计算机可读存储介质和计算机程序产品,通过执行上述各实施例所述的Mysql集群部署方法的步骤,采用Kubernetes容器化部署Mysql集群,通过容器化及容器编排技术,使得系统更易于使用,且具有更高的可扩展性和可维护性,同时能够合理使用硬件资源。
可以理解的是,以上所描述的装置、电子设备及存储介质的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
另外,本领域内的技术人员应当理解的是,在本发明的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的说明书中,说明了大量具体细节。然而应当理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。