产品 | GreatRDS数据库云服务管理平台简介
一、背景
随着云服务在各行各业的高速增长,传统IT服务正在逐步向云服务转变。在数据库方面,由于传统数据库管理的高复杂性、高成本以及低效率,导致越来越多的企业使用DBaaS作为其替代品。GreatRDS作为数据库服务的提供商,为用户提供了一套完整的DBaaS解决方案。
DBaaS将数据库作为服务来交付,任何人都可以轻易地创建、使用、扩容和销毁数据库实例,由基础平台负责监控和运维,开发者可以做到只关心业务而屏蔽底层细节。DBaaS的优点主要表现在以下几个方面:
● 高效利用硬件和资源;
● 快速部署;
● 满足异构环境的统一管理需求;
● 提供调优的数据库配置;
● 按需伸缩数据库规模;
● 明确的计量和计费;
● 异常发现与治理。
二、GreatRDS简介
❖ GreatRDS使命
GreatRDS的使命是让用户可以轻易地部署可扩展的的稳定数据库实例,并且提供一键创建、删除、快速扩容、自动备份、监控报警等功能。
GreatRDS的目标不仅仅是支持关系型数据库,而且还涵盖非关系数据库的服务,目前支持GreatDB、GreatDB CLuster 4.0、GreatDB CLuster 5.0、MariaDB、MySQL、Redis 等数据库产品。
在供应和取消供应数据库时,会占用和释放相关的计算资源,数据库资源可以被某个项目占用一段时间,项目结束后可取消供应,返回到资源池中。
❖ GreatRDS优势
GreatRDS相对于其他DBaaS服务来讲,主要是有两点优势,这两点优势也是GreatRDS的设计目标。
首先GreatRDS同时支持关系型数据库和非关系型数据库,并且提供统一的API,减少了冗余实现,提升平台内聚。
另外一个优势是完全基于OpenStack架构,GreatRDS可以借助OpenStack其他组件提供的服务快速实现租户隔离、动态调度、灾备等,减少了重复开发,也提高了服务能力。
三、 GreatRDS架构
API是接入层,负责接收REST API请求。轻量级的API请求在接入层处理,比如获取实例列表;耗时相对较长的API请求则通过Message Bus中转给Conductor进行调度处理。
Conductor是调度处理层,主要完成比较繁重的工作,比如部署数据库实例,管理实例的生命周期,完成对数据库实例的操作等等。
Conductor是DBinit Agent访问数据库的代理层,主要是为了屏蔽掉DBinit Agent直接对数据库的访问。
DBinit Agent是一种运行在客户端实例上的服务, 对于不允许使用ssh的的用户, DBinit Agent将非常有用。主要提供具体数据库的运行和管理,并且对数据库本身进行操作。DBinit Agent监听Message Bus消息队列来得到请求, 并且运行在每一个物理节点上。
除了DBinit Agent, 也可通过ssh方式来管理集群,通过ssh管理集群时DBinit Agent不是必须的, 具体的管理方式可以在添加计算节点时按需选择。
Message Bus是一种消息队列,主要负责API 端点,Conductor 和DBinit Agent 之间的消息交互。默认使用Rabbitmq作为消息队列。
四、GreatRDS重要功能
作为DBaaS平台, 为了保障数据库的稳定运行,以下核心功能组件必不可少:
异构系统的集中管理: 不同操作系统, 不同cpu架构, 以及容器和虚拟机环境的集中管理
创建与管理数据库集群: 目前支持分布式数据库4.0, 分布式数据库5.0, 以及mysql主多数据库集群的创建。
动态扩展数据库实例: GreatRDS提供了按需动态扩容功能,针对不同的场景,GreatRDS可以对数据库所在的调度节点进行扩容,也可以对数据库的数据节点进行扩容。
动态更新数据库配置: GreatRDS为不同的数据库类型提供了统一的配置组接口,也就是说可以用同一个API修改不同数据库类型的配置。当然前提是GreatRDS已经支持这些后端数据库的配置修改。
异常发现与治理: 通过监控和集群管理来保证数据服务的高可用。灵活的定时巡检提前发现问题
数据服务: 提供数据库管理周边工具, 如数据库控制台, 数据库迁移工具, 数据同步工具等
灾备管理: 用户可以根据需求方便的选择是进行全量备份还是增量备份,并且用户可以选择备份方式,比如逻辑备份, 物理备份, 定时备份。
多租户隔离: GreatRDS使用Auth组件实现多租户隔离,利用Auth的权限控制机制,针对不同的用户角色,可以实现不同程度的隔离。比如普通用户只可以看到自己的数据库,租户的管理员可以看到该租户下面的所有数据库,平台的超级管理员可以看到所有租户的数据库。也可对接Openstack keystone, 采用Openstack的多租户隔离方案。
在接下来的章节中, 我们将继续叙述GreatRDS的重要功能的设计与应用。