功能描述

逻辑集群是基于NodeGroup机制来划分物理节点的一种集群模式。 GaussDB A通过逻辑集群管理,实现了在一个大的MPPDB物理集群中,将集群划分成多个小的逻辑集群,以达到逻辑集群间的计算和存储资源的隔离,并且用户数据互相隔离,同时也能保证在授权情况下的业务用户可以跨集群进行数据表访问。


实现原理


在每个逻辑集群内,客户可以独立管理业务资源,通过用户权限设置,实现逻辑集群内的资源隔离和逻辑集群间的数据互访。

对于每个逻辑集群系统,都相当于自主管理的独立集群,由多个物理节点组成,每个物理节点上有多个逻辑DN。这些逻辑集群共同使用相同的CN、GTM和CM等组件。

1.jpg


逻辑集群与多租户关系如下图所示:

2.jpg


多租户场景下,一个用户仅能绑定一个租户,而一个租户可以被多个用户绑定。既实现同一租户下,多用户协同处理同一业务(如图用户2和用户3),又实现不同用户访问相互隔离的逻辑集群资源(如图用户1和用户2)。


另一场景下,通过角色管理,在授权的情况下还可以实现跨逻辑群的数据互访(如图,逻辑集群2对用户1授权后,用户1可以访问逻辑集群2中的数据),实现资源的独立和按需共享,满足业务性能的最大化。


本例针对新建物理集群划分为逻辑集群,说明如何在逻辑集群中进行用户权限的控制。

本例新安装了6个DN节点的物理集群,如下图:

3.jpg

4.jpg

划分为2个逻辑集群,如下:

5.jpg

集群中用户、角色分布,如下:

6.jpg


user_lc_a与user_lc_a1绑定在逻辑集群LC_A上,user_lc_b绑定在逻辑集群LC_B上。2个逻辑集群中的数据库、数据表资源如下:


逻辑集群LC_A:

 

  • 用户user_lc_a1:

8.jpg


  • 用户user_lc_a:

9.jpg


逻辑集群LC_B:


  • 用户user_lc_b:

10.jpg


  • 逻辑集群LC_A中,有2个用户,分别为:user_lc_a,user_lc_a1。其中Schema下包含了一张t_lc_a的表格。
  • 逻辑集群LC_B中,有1个用户,user_lc_b。


按照逻辑集群功能,user_lc_b不能访问LC_A中的数据,user_lc_a与user_lc_a1无法访问逻辑集群LC_B的数据,并且user_lc_a1也无法访问user_lc_a的数据。

11.jpg

如上图所示,user_lc_b访问集群LC_A中的数据时,提示“ERROR:permission denied for relation t_lc_a”

12.jpg

如上图所示,user_lc_a1访问逻辑集群LC_A内user_lc_a的数据时,提示“ERROR:permission denied for relation t_lc_a”


逻辑集群内访问授权


对于每个逻辑集群系统,都相当于自主管理的独立集群,数据隔离与正常的独立集群一致。

本例中在逻辑集群LC_A中,表t_lc_a处于user_lc_a的schema,user_lc_a1无法访问表t_lc_a,如下:

13.jpg

如果用户user_lc_a1访问表t_lc_a,那么需要对user_lc_a1进行赋权:

14.jpg


逻辑集群内DML

本例中将Schema下的表t_lc_a的所有权限都赋给了user_lc_a1,用户user_lc_a1具备对表t_lc_a的所有权限,如下图所示,select、insert、update、delete对表的操作都可以正常进行。

15.jpg