首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

基于swarm的数据库服务持久化方法及系统 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:华南理工大学

摘要:本发明公开了一种基于swarm的数据库服务持久化方法,包括单数据库和数据库集群的持久化方法。对于单数据库包括以下步骤:1、构建请求的数据库镜像;2、解析数据库服务创建参数;3、创建ceph块设备;4、创建数据库容器等;5、创建入口访问容器。对于数据库集群包括以下步骤:1、解析数据库服务创建参数;2、创建ceph块设备;3、注册入口访问服务;4、创建入口访问容器;5、注册数据库服务;6、创建数据库容器。本发明的基于swarm的数据库服务持久化系统,系统包括:解析模块;控制模块;网络模块;注册模块等。本发明提供了数据库服务通用的持久化方法,提高数据库服务的可用性和数据的安全性。

主权项:1.一种基于swarm的数据库服务持久化方法,包括对单数据库和数据库集群的持久化方法,其特征在于,对单个数据库的持久化方法,包括以下步骤:S1、基于虚拟路由冗余协议的高可用软件keepalived基础上构建数据库镜像;S2、创建单个数据库参数,并进行解析,创建的参数包括:有状态服务集标志、网络名字、网络驱动、数据库名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口;S3、按照解析的参数创建分布式存储系统ceph块设备:根据S2解析的参数调用ceph的api创建分布式存储系统块设备,创建的参数包括块大小、块名字、块对应的池pool和块读写权限,而且只创建一个块设备,供步骤S4的数据库容器挂载;S4、按照解析参数创建数据库容器以及挂载分布式存储系统块设备;创建数据库容器会根据步骤S2创建的参数自动生成keepalived.conf配置文件和启动数据库脚本以及停止数据库脚本,步骤S4使用的参数包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、网络名字、网络驱动、vip地址,步骤S4的容器使用数据卷插件rexray挂载分布式存储系统块设备;按照解析参数创建数据库容器以及挂载分布式存储系统块设备,包括以下步骤:S4-1、创建主数据库容器挂载分布式存储系统块设备;S4-2、创建备数据库容器挂载与主数据容器挂载的同一个分布式存储系统块设备;主数据库容器和备数据库容器各自的keepalived服务会检查自身的权重,权重值高的容器启动数据库服务,权重值低的容器停止数据库服务,同一时间只有主数据库容器或者备数据库容器其中一个容器运行数据库服务;S5、按照解析参数创建代理服务器nginx入口访问数据库容器;按照解析参数创建代理服务器入口访问容器,会自动生成nginx.conf配置文件,同时对主数据库和备数据库提供代理转发,除非主数据库宕机,代理服务器入口访问容器会将请求全部转发到备数据库,否则都是转发到主数据库;对数据库集群的持久化方法,包括以下步骤:L1、创建数据库集群参数,并进行解析,创建的参数包括:有状态服务集标志、网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口参数;L2、按照解析参数创建分布式存储系统块设备;L3、注册数据库集群入口访问服务;L4、按照解析参数创建代理服务器入口访问数据库集群容器;按照解析参数创建代理服务器入口访问容器,其中包括统一配置管理工具confd服务和代理服务器;confd服务定期获取信息,该信息包括etcd中入口服务名字、入口服务端口、数据库服务名字、数据库端口,并检查etcd存储的键值对是否发生变化,如果发生变化,根据代理服务器启动的配置模板重新生成新的代理服务器启动的配置nginx.conf,然后通知代理服务器重新加载新的nginx.conf配置文件;代理服务器对数据库集群提供负载均衡和提供入口访问,如果代理转发一次失败,隔10s之后再尝试一次;L5、注册数据库服务;注册数据库服务包括以下步骤:L5-1、向键值对数据存储系统注册数据库容器名字;L5-2、向键值对数据存储系统注册数据库容器端口;只要注册的数据库容器和入口访问服务名字是相同的,注册的数据库容器就会添加到代理服务器负载均衡列表中,所以如果对数据库集群进行扩容,只需要注册到相同的入口访问服务名字即可;步骤L6按照解析参数创建数据库容器以及挂载分布式存储系统块设备,其中分布式存储系统块设备挂载到名字相同的数据库容器,数据库容器和ceph块设备的命名格式均为:数据库名字-{1,2,3...},数据库集群有若干个分布式存储系统块设备,步骤L6的容器使用rexray数据卷插件挂载分布式存储系统块设备;L6、按照解析参数创建数据库容器以及挂载分布式存储系统块设备。

全文数据:基于swarm的数据库服务持久化方法及系统技术领域本发明涉及容器技术领域,具体涉及一种基于swarm的数据库服务持久化方法及系统。背景技术Docker是目前容器技术领域最热门的开源项目之一,docker容器可以给开发者提供打包应用和相关的依赖包到具有可移植的容器中,相对于具有相似的资源隔离的虚拟机来说,容器虚拟化操作系统而不是硬件,所以更加便携和高效,几乎立即启动。而Swarm是docker最流行容器集群管理工具之一,且是docker原生自带的编排工具。主要把若干docker主机抽象为一个整体,并且通过一个入口统一管理这些docker主机上的各种docker资源。Ceph是目前最主流的开源存储项目之一,是一个可靠地、自动重均衡、自动恢复的分布式存储系统,数据寻址采用CRUSH算法,相比其他存储系统的寻址方式更加高效,存储特性比较丰富,可以提供对象存储、块设备存储和文件存储三种存储接口,具有多备份、无中心结构、无单点故障、良好的拓展性等特点,逐渐成为替代云计算环境中传统存储的解决方案。容器服务运行过程中的所有数据如果不采用持久化方法,在容器实例停止或者删除或者异常退出,则这些数据都将丢失,无法找回。而对于swarm容器集群管理平台并没有通用的数据库服务包括单个数据库和数据库集群持久化的方法和系统。发明内容本发明的目的是针对现有技术的不足,提供了一种基于swarm(容器原生的集群管理工具)的数据库服务持久化方法,所述的方法旨在解决目前swarm容器集群没有通用的数据库服务包括单个数据库和数据库集群持久化的方法的缺陷,同时提高数据库服务宕机的恢复处理能力,缩短的服务宕机恢复时间,增加了数据库服务在swarm集群上的可用性。同时本发明还公开了一种基于swarm的数据库服务持久化系统。一种基于swarm的数据库服务持久化方法,包括对于单数据库和数据库集群的持久化方法,其中对于单个数据库的持久化方法,包括以下步骤:S1、基于虚拟路由冗余协议的高可用软件(keepalived)基础上构建数据库镜像;S2、创建单个数据库参数,并进行解析,创建的参数包括:有状态服务集标志、网络名字、网络驱动、数据库名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口;S3、按照解析的参数创建分布式存储系统(ceph)块设备;S4、按照解析参数创建数据库容器以及挂载分布式存储系统块设备;S5、按照解析参数创建代理服务器(nginx)入口访问数据库容器。对数据库集群的持久化方法,包括以下步骤:L1、创建数据库集群参数,并进行解析,创建的参数包括:有状态服务集标志、网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口参数;L2、按照解析参数创建分布式存储系统块设备;L3、注册数据库集群入口访问服务;L4、按照解析参数创建代理服务器入口访问数据库集群容器;L5、注册数据库服务;L6、按照解析参数创建数据库容器以及挂载分布式存储系统块设备。优选地,在步骤S1的预先构建的keepalived镜像在S4步骤创建数据库容器会步骤S2创建的请求参数自动生成keepalived.conf配置文件和启动数据库脚本以及停止数据库脚本,所述请求参数包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、网络名字、网络驱动、vip地址;优选地,步骤S3根据S2解析的参数调用ceph的api(应用程序编程接口)创建分布式存储系统块设备,创建的参数包括块大小、块名字、块对应的池(pool)和块读写权限,而且只创建一个块设备,供步骤S4的数据库容器挂载。优选地,步骤S4创建数据库容器会根据步骤S2创建的参数自动生成keepalived.conf配置文件和启动数据库脚本以及停止数据库脚本,步骤S4使用的参数包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、网络名字、网络驱动、vip地址,步骤S4的容器使用rexray(数据卷插件)挂载分布式存储系统块设备。优选地,在步骤S4按照解析参数创建数据库容器以及挂载ceph块设备,包括以下步骤:S4-1、创建主数据库容器挂载ceph块设备;S4-2、创建备数据库容器挂载同个ceph块设备。主数据库容器和备数据库容器各自的keepalived服务会检查自身的权重,权重值高的容器启动数据库服务,权重值低的容器停止数据库服务,同一时间只有主数据库容器或者备数据库容器其中一个容器运行数据库服务。优选地,步骤S5按照解析参数创建代理服务器入口访问容器,会自动生成nginx.conf配置文件,同时对主数据库和备数据库提供代理转发,除非主数据库宕机,代理服务器入口访问容器会将请求全部转发到备数据库,否则都是转发到主数据库。优选地,步骤L2根据解析参数调用ceph的api(应用程序编程接口)创建分布式存储系统块设备,创建的参数包括块大小、块名字、块对应的池(pool)、块的数目和块读写权限,其中创建的分布式存储系统块设备数目和L6步骤创建的数据库容器的数目相等,ceph块设备挂载到名字相同的数据库容器,数据库容器和ceph块设备的命名格式均为:数据库名字-{1,2,3...}。优选地,步骤L3注册入口访问服务步骤包括以下步骤:L3-1、向键值对数据存储系统(etcd)注册入口访问服务名字;L3-2、向etcd注册入口访问服务端口。优选地,步骤L4按照解析参数创建代理服务器入口访问容器,其中包括统一配置管理工具(confd)服务和代理服务器。confd服务定期获取信息,该信息包括etcd中入口服务名字、入口服务端口、数据库名字、数据库端口,并检查etcd存储的键值对是否发生变化,如果发生变化,则根据代理服务器启动的配置模板重新生成新的nginx.conf(代理服务器启动的配置),然后通知代理服务器重新加载新的nginx.conf配置文件。代理服务器对数据库集群提供负载均衡和提供入口访问,如果代理转发一次失败,隔10s之后再尝试一次。优选地,步骤L5注册数据库服务包括以下步骤:L5-1、向etcd注册数据库容器名字;L5-2、向etcd注册数据库容器端口。只要注册的数据库容器和入口访问服务名字是相同的,注册的数据库容器就会添加到代理服务器负载均衡列表中,所以如果对数据库集群进行扩容,只需要注册到相同的入口访问服务名字即可。步骤L6按照解析参数创建数据库容器以及挂载分布式存储系统块设备,其中分布式存储系统块设备挂载到名字相同的数据库容器,数据库容器和ceph块设备的命名格式均为:数据库名字-{1,2,3...},数据库集群有若干个分布式存储系统块设备。在上述的一种基于swarm的数据库服务持久化的系统中,所述的系统包括:控制模块:用于处理用户请求和负责与其它模块进行通信,根据用户需求调用dockerapi创建相应的数据库容器。注册模块:用于数据库集群中的注册和删除,注册参数包括入口访问服务名字、入口访问服务端口,数据库服务名字和数据库服务端口。网络模块:用于创建容器(docker的网络(network),和获取网络id。解析模块:用于对用户提交的创建数据库服务文件进行参数解析。资源管理模块:分布式存储系统块设备池用来提供块设备供容器挂载,该模块用于对pool池进行管理,块对应的pool池包括已分配的块设备和未分配的存储空间,管理方式包括创建、删除、查询操作。本发明与现有技术相比,具有如下优点和有益效果:本发明实现了基于swarm的数据库服务持久化方法及系统,能确保数据库服务的数据持久化到ceph的块设备中,提高数据库的数据安全性;同时分别提供了单个数据库和数据库集群两种类型,满足用户的不同需求;同时缩短了单个数据库服务的宕机恢复时间,提高了数据库的可用性和恢复能力,且该系统能方便用户创建数据库服务,降低运维人员的运维难度。附图说明图1为本发明的基于swarm的数据库服务持久化系统架构框图。图2为本发明的基于swarm的数据库服务持久化系统的总流程图。图3为本发明实施例中基于swarm的数据库服务持久化中单个数据库的流程图。图4为本发明实施例中基于swarm的数据库服务持久化中数据库集群的流程图。具体实施方式下面结合实施例及附图对本发明作进一步详细的描述,但不构成对本发明的任何限制,所述的具体实施例仅用于解释本发明,但本发明的实施方式不限于此。实施例:如图1所示,显示了基于swarm的数据库服务持久化系统,主要包括:控制模块、解析模块、注册模块、网络模块、资源管理模块。控制模块在本实施例中负责接收用户发送的创建数据库的请求,该模块接收到请求后,转发到解析模块进行参数解析,然后控制模块将参数包括网络驱动、网络名字等转发到网络模块创建网络,再将参数包括块设备大小、块读写权限、块设备名字、块设备池名字等转发到资源管理模块请求块设备,最后调用dockerapi创建容器,返回给用户。解析模块在本实施例中负责来自控制模块用户的请求,该模块会根据有状态服务集标志的值决定创建单个数据库还是数据库集群,如果有状态服务集标志的值为true(真),则创建数据库集群;如果有状态服务集标志的值为false(假),则创建单个数据库,然后返回参数给控制模块,如果是单个数据库则返回参数包括网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口;如果是数据库集群则返回参数包括网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库副本数、块设备大小、块读写权限、块设备名字、入口访问服务名字、入口访问服务端口。注册模块在本实施例中负责来自控制模块创建数据库集群的请求,其中单个数据库服务创建不需要注册信息,该模块提供注册和删除相关注册信息包括入口访问服务名字和端口、数据库服务名字和端口。网络模块在本实施例中负责来自控制模块创建网络服务的请求,该模块会调用dockerapi(容器的应用程序编程接口)检查网络是否存在,如果存在直接返回overlay网络id给控制模块,若不存在,则调用dockerapi创建overlay网络(覆盖网络),然后返回overlay网络id给控制模块。资源管理模块在本实施例中负责来自控制模块创建块设备的请求,该模块调用ceph的api(应用程序编程接口)创建指定的块设备,如果该块设备已存在,则不需要创建,直接返回该块设备。下面对本发明实施例提供的基于swarm的数据库服务持久化方法进行详细的步骤说明。对单个数据库,基于swarm的数据库服务持久化的处理步骤如下:步骤1:用户在构建自定义的数据库镜像时,只需要在dockerfile(用于组合映像的命令的文本文档)上添加系统提供的keepalived(基于虚拟路由冗余协议的高可用软件)基础镜像上安装自定义的数据库,然后覆盖镜像的入口entrypoint(容器启动时执行的命令)即可。步骤2:用户向控制模块发送创建单个数据库的请求,请求参数包括有状态服务集标志、网络名字、网络驱动、数据库名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口;控制模块转发请求到解析模块,解析模块进行请求参数的解析;步骤3:资源管理模块根据控制模块转发的请求调用ceph的api创建块设备,请求参数要包括创建块对应的pool池、块读写权限、块大小和块名字,如果需要创建的块设备存在,则直接返回存在的块设备;步骤4:控制模块根据请求参数创建主数据库容器和备数据库容器,请求参数包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、网络名字、网络驱动、vip地址;两个容器调用插件rexray(容器卷插件)服务挂载到同一个块设备;步骤5:控制模块根据请求参数调用dockerapi创建nginx入口访问容器,请求参数包括入口访问容器的名字和端口、网络驱动和网络名字,该nginx入口访问容器的镜像是系统提前构建的,其作用是对主数据库容器和备数据库容器进行负载转发;在步骤2中,解析模块解析参数判断是否是创建单个数据库请求,且请求参数必须包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、vip地址等。在步骤4中,控制模块先向网络模块请求创建指定网络驱动和网络名字的覆盖网络,返回覆盖网络id后调用dockerapi创建主数据库容器和备数据库容器,同时生成keepalived.conf配置文件,让主数据库容器和备数据库容器通过心跳通信,两个容器根据权值决定哪个数据库容器的数据库服务启动,当容器启动时,主数据库容器的初始化权值是比备数据库容器的初始化权值高的,所以会启动主数据库容器的数据库,停止备数据库容器的数据库,当主数据库容器出现宕机或者主数据库容器的数据库服务停止状态的时候,主数据库容器的权值会降低并且停止主数据库容器的数据库,备数据库容器的权值会增加并且启动备数据库容器的数据库。在步骤5中,nginx入口访问容器的镜像是系统提前构建好的,该镜像主要包括nginx服务,该nginx服务主要用于代理tcp(传输控制协议)转发。控制模块创建nginx入口访问容器会生成对应的nginx.conf配置文件,对两个容器进行代理转发,其中一个容器会成为代理转发的主服务器即主数据库容器,当主服务器宕机之后,nginx转发才会转发到备服务器即备数据库容器。对于数据库集群,基于swarm的数据库服务持久化的处理步骤如下:步骤1:用户向控制模块发送创建数据库集群的请求,请求包括有状态服务集标志、网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口参数,控制模块转发请求到解析模块,进行参数解析;步骤2:资源管理模块根据控制模块转发的请求调用cephapi创建块设备,请求的参数要包括创建块对应的pool池、块大小、块名字、块的数目和块读写权限,其中创建的块设的数目和数据库容器的数目是相同的,如果对应的块设备存在,则直接返回对应的块设备,块设备命名格式按照数据库-{1,2,3...}命名;步骤3:控制模块向etcd注册数据库集群的入口访问服务请求;包括注册入口访问服务名字和端口;步骤4:控制模块先向网络模块请求创建指定网络,返回网络id,根据请求参数调用dockerapi创建,其中包含nginx和confd的入口访问服务容器,该入口访问容器的镜像是系统提前构建的,该入口访问容器的服务名字和开放端口与步骤3的注册入口访问服务名字和端口是对应相同的;其中confd服务每隔1s会定期检查etcd的键值对是否发生变化,如果键值对出现修改、添加、删除情况,则confd服务会重新生成nginx.conf配置文件;如果键值对不变化,则confd服务不会重新生成新的配置文件;步骤5:控制模块向etcd注册S6步骤中创建数据库容器的名字和端口,注册路径和步骤3的注册入口访问服务名字是相同的。步骤6:控制模块向网络模块请求网络id,然后调用dockerapi创建数据库容器,使用插件rexray,每个数据库容器分别挂载对应的块设备,其中块设备挂载对应关系按照容器名字:数据库名字-{1,2,3...}和ceph块设备名字:数据库名字-{1,2,3...}一一对应。在步骤1中,解析模块解析参数判断是否是创建数据库集群的请求,且请求的参数必须包括:入口访问服务、入口访问服务端口、数据库服务名字,数据库服务端口等。在步骤4中,创建nginx入口访问容器的镜像是系统提前构建好的,该镜像主要包括nginx服务和confd服务,其中的nginx用于代理tcp转发,confd服务用于监控etcd键值。如果etcd中的键值对发生改变的话,confd会根据模板新生成一份新的nginx.conf,然后通知nginx检验该配置文件是否正确,即是否符合nginx配置文件的语法,如果正确,nginx重新加载新生成的配置文件,如果不正确,nginx仍然使用原来的配置文件。nginx会对数据库容器进行轮询转发,即每个请求按时间顺序逐一分配到数据库容器,如果有数据库出现一次转发失败的话,则接下来10s时间里,nginx不会再尝试转发第二次,直到10s过后,再次转发到该数据库容器。在步骤6中,如果需要对该数据库集群进行扩容的话,可以发送请求到控制模块,控制模块向etcd注册新的数据库容器的键值对,且新的数据库容器名字和其入口访问服务的名字是相同的,confd可以检测到键值对的添加,重新更新nginx.conf配置文件,通知nginx重新加载配置文件。然后控制模块再调用dockerapi创建新的数据库容器,调用rexray挂载新的块设备。如果需要对数据库缩容的话,可以发送请求到控制模块,控制模块调用dockerapi删除数据库容器,然后在转发到注册模块,发送请求到etcd删除该数据库容器的名字和端口。当etcd键值发生改变时,confd可以检测到键值的删除,重新更新nginx.conf配置文件,在通知nginx重新加载配置文件。通过本实例能够完成对数据库服务包括单个数据库和数据库集群实现持久化,满足用户不同的需求,提高了数据库数据的安全性,同时提高数据库服务在运行的可用性,相对比容器重新启动,本实例能缩短单数据库服务76%的宕机恢复时间。同时通过本实例用户只需要发送数据库请求到控制模块,即可创建数据库服务,降低了运维人员的运维难度。以上仅是本发明的优选实施方式,应当指出对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以做出若干变形和改进,这些都不会影响本发明实施的效果和专利的实用性,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。

权利要求:1.一种基于swarm的数据库服务持久化方法,包括对单数据库和数据库集群的持久化方法,其特征在于,对单个数据库的持久化方法,包括以下步骤:S1、基于虚拟路由冗余协议的高可用软件(keepalived)基础上构建数据库镜像;S2、创建单个数据库参数,并进行解析,创建的参数包括:有状态服务集标志、网络名字、网络驱动、数据库名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口;S3、按照解析的参数创建分布式存储系统(ceph)块设备;S4、按照解析参数创建数据库容器以及挂载分布式存储系统块设备;S5、按照解析参数创建代理服务器(nginx)入口访问数据库容器;对数据库集群的持久化方法,包括以下步骤:L1、创建数据库集群参数,并进行解析,创建的参数包括:有状态服务集标志、网络驱动、网络名字、数据库服务名字、数据库服务端口、数据库副本数、数据库启动命令、数据库停止命令、块设备大小、块读写权限、块设备名字、vip地址、入口访问服务名字、入口访问服务端口参数;L2、按照解析参数创建分布式存储系统块设备;L3、注册数据库集群入口访问服务;L4、按照解析参数创建代理服务器入口访问数据库集群容器;L5、注册数据库服务;L6、按照解析参数创建数据库容器以及挂载分布式存储系统块设备。2.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤S3根据S2解析的参数调用ceph的api(应用程序编程接口)创建分布式存储系统块设备,创建的参数包括块大小、块名字、块对应的池(pool)和块读写权限,而且只创建一个块设备,供步骤S4的数据库容器挂载。3.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤S4创建数据库容器会根据步骤S2创建的参数自动生成keepalived.conf配置文件和启动数据库脚本以及停止数据库脚本,步骤S4使用的参数包括数据库服务名字、数据库服务端口、数据库启动命令、数据库停止命令、网络名字、网络驱动、vip地址,步骤S4的容器使用数据卷插件rexray挂载分布式存储系统块设备。4.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤S4按照解析参数创建数据库容器以及挂载分布式存储系统块设备,包括以下步骤:S4-1、创建主数据库容器挂载分布式存储系统块设备;S4-2、创建备数据库容器挂载与主数据容器挂载的同一个分布式存储系统块设备;主数据库容器和备数据库容器各自的keepalived服务会检查自身的权重,权重值高的容器启动数据库服务,权重值低的容器停止数据库服务,同一时间只有主数据库容器或者备数据库容器其中一个容器运行数据库服务。5.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤S5按照解析参数创建代理服务器入口访问容器,会自动生成nginx.conf配置文件,同时对主数据库和备数据库提供代理转发,除非主数据库宕机,代理服务器入口访问容器会将请求全部转发到备数据库,否则都是转发到主数据库。6.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤L2根据解析参数调用ceph的api(应用程序编程接口)创建分布式存储系统块设备,创建的参数包括块大小、块名字、块对应的池(pool)、块的数目和块读写权限,其中创建的分布式存储系统块设备数目和L6步骤创建的数据库容器的数目相等,ceph块设备挂载到名字相同的数据库容器,数据库容器和ceph块设备的命名格式均为:数据库名字-{1,2,3...}。7.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤L3注册入口访问服务步骤包括以下步骤:L3-1、向键值对数据存储系统(etcd)注册入口访问服务名字;L3-2、向键值对数据存储系统注册入口访问服务端口。8.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤L4按照解析参数创建代理服务器入口访问容器,其中包括统一配置管理工具(confd)服务和代理服务器;confd服务定期获取信息,该信息包括etcd中入口服务名字、入口服务端口、数据库服务名字、数据库端口,并检查etcd存储的键值对是否发生变化,如果发生变化,根据代理服务器启动的配置模板重新生成新的代理服务器启动的配置(nginx.conf),然后通知代理服务器重新加载新的nginx.conf配置文件;代理服务器对数据库集群提供负载均衡和提供入口访问,如果代理转发一次失败,隔10s之后再尝试一次。9.根据权利要求1所述的swarm的数据库服务持久化方法,其特征在于,步骤L5注册数据库服务包括以下步骤:L5-1、向键值对数据存储系统注册数据库容器名字;L5-2、向键值对数据存储系统注册数据库容器端口;只要注册的数据库容器和入口访问服务名字是相同的,注册的数据库容器就会添加到代理服务器负载均衡列表中,所以如果对数据库集群进行扩容,只需要注册到相同的入口访问服务名字即可;步骤L6按照解析参数创建数据库容器以及挂载分布式存储系统块设备,其中分布式存储系统块设备挂载到名字相同的数据库容器,数据库容器和ceph块设备的命名格式均为:数据库名字-{1,2,3...},数据库集群有若干个分布式存储系统块设备,步骤L6的容器使用rexray(数据卷插件)挂载分布式存储系统块设备。10.一种基于swarm的数据库服务持久化系统,其特征在于,包括以下模块:控制模块:用于处理用户请求和负责与其它模块进行通信,根据用户需求调用dockerapi创建相应的数据库容器;注册模块:用于数据库集群中的注册和删除,注册参数包括入口访问服务名字、入口访问服务端口,数据库服务名字和数据库服务端口;网络模块:用于创建容器(docker)的网络(network),和获取网络id;解析模块:用于对用户提交的创建数据库服务文件进行参数解析;资源管理模块:分布式存储系统块设备池用来提供块设备供容器挂载,该模块用于对pool池进行管理,块对应的pool池包括已分配的块设备和未分配的存储空间,管理方式包括创建、删除、查询操作。

百度查询: 华南理工大学 基于swarm的数据库服务持久化方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。