分布式数据库多租户隔离方法及系统与流程

文档序号:29418729发布日期:2022-03-26 13:48阅读:601来源:国知局
分布式数据库多租户隔离方法及系统与流程

1.本发明涉及kubernetes相关技术领域,具体地说是一种分布式数据库多租户隔离方法及系统。


背景技术:

2.kubernetes,简称k8s。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。
3.目前实现分布式数据库多租户隔离,大多采用如下技术方案:
4.(一)物理隔离:即每个租户对应一组独立的服务器集群上,管理多组服务器集群,以用多组服务器来部署多个租户,来实现物理上的强隔离,但用多组服务器来解决分布式数据库多租户隔离还面临着比较严重的问题,多组服务器部署多租户最终问题为实用性差,会造成服务器资源的浪费,部署起来也不是十分方便。
5.(二)虚拟机:共有(私有)云架构,用一个云管理平台统一管理,可以通过虚拟机部署分布式数据库来实现多租户隔离,具有易伸缩、高可用、负载均衡、提高资源使用率的优势;但是虚拟机就是建立在主机上,毕竟是虚拟机,也是文件,很容易被破坏。
6.(三)容器:借助于容器实现定制化的容器云平台,首先要解决租户容器间的隔离;数据隔离和功能自定义的要求意味着每个租户的执行环境隔离;暂选容器方案为docker;对于多租户,docker需要添加一种定义用户的方法,并将它们放在只允许对特定容器和卷进行操作的命名空间中,并限制允许突破容器的选项,如更改功能或任意安装来自主机的文件系统.docker的企业产品ucp确实开始通过在对象上使用标签来添加这些功能,但是docker实现多租户的方案还并不完善,而且可能需要通过改造底层代码去实现多租户的一个支持,实现难度大,成本高。
7.故如何实现分布式数据库的多租户隔离,以降低业务部署的风险和成本是目前亟待解决的技术问题。


技术实现要素:

8.本发明的技术任务是提供一种分布式数据库多租户隔离方法及系统,来解决如何实现分布式数据库的多租户隔离,以降低业务部署的风险和成本的问题。
9.本发明的技术任务是按以下方式实现的,一种分布式数据库多租户隔离方法,该方法是使用k8s(kubernetes)技术作为容器编排工具部署数据库,并且通过k8s提供的namespace作为基础的资源隔离单位,同时提供基于命名空间权限(rbac)的权限管理方式,即k8s建立基于用户角色的访问控制基础上,再通过保证命名空间之间的网络隔离,在不同的命名空间之间只能够允许白名单范围内的跨租户应用请求,从而实现分布式数据库的多租户隔离。
10.其中,namespace命名空间,是kubernetes系统中的另一个非常重要的概念,
domain》为该数据库实例提供给k8s外部访问的节点ip或域名;nodeport模式下为一个k8s节点的ip地址。
31.一种分布式数据库多租户隔离系统,该系统包括,
32.创建模块一,用于在k8s的基础上,采用共享数据盘的模式,依次创建需要的pv;其中,pv用于存放newsql数据库实例的数据更方便数据库实例的扩缩容以及备份还原的操作;
33.创建模块二,用于创建pv后,创建statefulset,statefulset所管理的pod拥有固定的pod名称及启停顺序;其中,statefulset本质上是deployment的一种变体,在v1.9版本中已成为ga版本,用于解决有状态服务的问题;
34.创建模块三,用于通过k8s创建数据库service;
35.隔离模块,用于在创建数据库service后,实现数据库实例的正常使用,数据库实例拥有独享的namespace,通过命名空间的rbac权限控制即可实现多租户之间的隔离。
36.作为优选,所述创建模块三包括,
37.证书创建子模块,用于创建证书,证书分三种:根证书、用户证书和节点证书,具体为:生成一个根证书,根证书要尽量保证唯一,并妥善保管;节点证书及用户证书需要从根证书签发;
38.对象创建子模块,用于创建configmap对象保存根证书和密钥文件,k8s通过configmap保存证书,并指定namespace;
39.service创建子模块,用于创建安全模式的service,相对非安全模式而言,不再需要额外的init job,新增的initcontainers容器签发节点证书时,增加如下参数且需要管理员指定:《node ip or domain》为该数据库实例提供给k8s外部访问的节点ip或域名;nodeport模式下为一个k8s节点的ip地址。
40.一种电子设备,包括:存储器和至少一个处理器;
41.其中,所述存储器存储计算机执行指令;
42.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述的分布式数据库多租户隔离方法。
43.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行时,实现如上述的分布式数据库多租户隔离方法。
44.本发明的分布式数据库多租户隔离方法及系统具有以下优点:
45.(一)本发明利了k8s提供的namespace作为基础的资源隔离单位,同时利用了基于rbac的权限管理方式来实现分布式数据库的多租户隔离,以降低业务部署的风险和成本;
46.(二)本发明可以实现分布式数据库的多租户目标,单个产品实例为多个用户提供服务,并且可按需使用资源,用户数据相互隔离,整合多个产品实例,统一运维。
附图说明
47.下面结合附图对本发明进一步说明。
48.附图1为分布式数据库多租户隔离方法的示意图。
具体实施方式
49.参照说明书附图和具体实施例对本发明的分布式数据库多租户隔离方法及系统作以下详细地说明。
50.实施例:
51.如附图1所示,本发明的分布式数据库多租户隔离方法,该方法是使用k8s(kubernetes)技术作为容器编排工具部署数据库,并且通过k8s提供的namespace作为基础的资源隔离单位,同时提供基于命名空间权限(rbac)的权限管理方式,即k8s建立基于用户角色的访问控制基础上,再通过保证命名空间之间的网络隔离,在不同的命名空间之间只能够允许白名单范围内的跨租户应用请求,从而实现分布式数据库的多租户隔离;该方法具体如下:
52.s1、在k8s的基础上,采用共享数据盘的模式,依次创建需要的pv;其中,pv用于存放newsql数据库实例的数据更方便数据库实例的扩缩容以及备份还原的操作;
53.s2、创建pv后,创建statefulset,statefulset所管理的pod拥有固定的pod名称及启停顺序;其中,statefulset本质上是deployment的一种变体,在v1.9版本中已成为ga版本,用于解决有状态服务的问题;
54.s3、通过k8s创建数据库service;
55.s4、创建数据库service后,数据库实例便能够正常使用,数据库实例拥有独享的namespace,通过命名空间的rbac权限控制即可实现多租户之间的隔离。
56.本实施例中pv创建前,在对应服务器的数据盘目录/mnt/disks/《数据库实例名》上创建pv挂载的目录;pv的数量取决于数据库节点的数量。
57.本实施例中的statefulset中,pod名字称为网络标识(hostname),statefulset的最大特点是各个节点不能使用同一存储卷,每个节点有自已的专用存储,statefulset中每个pod都有自已的专有存储卷,所以statefulset的存储卷就不能再用pod模板来创建了,于是statefulset的存储卷使用volumeclaimtemplate(卷申请模板)创建,volumeclaimtemplate会为每个pod生成不同的pvc,并绑定pv,从而实现各pod有专用存储。
58.本实施例中步骤s3的通过k8s创建数据库service的前置条件是创建证书,证书分三种:根证书、用户证书和节点证书,具体如下:
59.(1)、生成一个根证书,根证书要尽量保证唯一,并妥善保管;
60.(2)、节点证书及用户证书需要从根证书签发。
61.本实施例中步骤s3的通过k8s创建数据库service具体如下:
62.s301、创建configmap对象保存根证书和密钥文件,k8s通过configmap保存证书,并指定namespace;
63.s302、创建安全模式的service,相对非安全模式而言,不再需要额外的init job,新增的initcontainers容器签发节点证书时,增加如下参数且需要管理员指定:《node ip or domain》为该数据库实例提供给k8s外部访问的节点ip或域名;nodeport模式下为一个k8s节点的ip地址。
64.实施例2:
65.本发明的分布式数据库多租户隔离系统,该系统包括,
66.创建模块一,用于在k8s的基础上,采用共享数据盘的模式,依次创建需要的pv;其
中,pv用于存放newsql数据库实例的数据更方便数据库实例的扩缩容以及备份还原的操作;
67.创建模块二,用于创建pv后,创建statefulset,statefulset所管理的pod拥有固定的pod名称及启停顺序;其中,statefulset本质上是deployment的一种变体,在v1.9版本中已成为ga版本,用于解决有状态服务的问题;
68.创建模块三,用于通过k8s创建数据库service;
69.隔离模块,用于在创建数据库service后,实现数据库实例的正常使用,数据库实例拥有独享的namespace,通过命名空间的rbac权限控制即可实现多租户之间的隔离。
70.本实施例中的创建模块三包括,
71.证书创建子模块,用于创建证书,证书分三种:根证书、用户证书和节点证书,具体为:生成一个根证书,根证书要尽量保证唯一,并妥善保管;节点证书及用户证书需要从根证书签发;
72.对象创建子模块,用于创建configmap对象保存根证书和密钥文件,k8s通过configmap保存证书,并指定namespace;
73.service创建子模块,用于创建安全模式的service,相对非安全模式而言,不再需要额外的init job,新增的initcontainers容器签发节点证书时,增加如下参数且需要管理员指定:《node ip or domain》为该数据库实例提供给k8s外部访问的节点ip或域名;nodeport模式下为一个k8s节点的ip地址。
74.实施例3:
75.本发明实施例还提供了一种电子设备,包括:存储器和处理器;
76.其中,所述存储器存储计算机执行指令;
77.处理器执行所述存储器存储的计算机执行指令,使得处理器执行任一实施例的分布式数据库多租户隔离方法。
78.处理器可以是中央处理单元(cpu),还可以是其他通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通过处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
79.存储器可用于储存计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现电子设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器还可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,只能存储卡(smc),安全数字(sd)卡,闪存卡、至少一个磁盘存储期间、闪存器件、或其他易失性固态存储器件。
80.实施例4:
81.本发明实施例还提供了一种计算机可读存储介质,其中存储有多条指令,指令由处理器加载,使处理器执行本发明任一实施例中的分布式数据库多租户隔离方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储
在存储介质中的程序代码。
82.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
83.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
84.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
85.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
86.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1