作者简介:谢志刚,OceanBase 管控平台(OCP)技术负责人,主持 OCP 的整体研发工作。在云计算及数据库领域深耕多年,对数据库管控、数据库自动化运维、数据库多云部署等方向具有深刻的理解和丰富的实践经验。
在 OceanBase 开源后,为了协助用户更加高效地管理 OceanBase 集群,降低用户对 OceanBase 的学习成本及企业的 IT 运维成本,我们推出了社区版 OCP(OceanBase Control Platform),为用户提供了 OceanBase 集群的图形化管理能力,包括数据库组件及相关资源(主机、软件包等)的全生命周期管理、备份恢复、监控告警等。这样一来,用户能够实时掌握 OceanBase 的运行动态,并将 DBA 从繁杂的运维工作中解放出来。
但是,随着业务探索的不断深入和最佳实践的不断积累,OCP 也遇到了更多场景的挑战。
社区版 OCP 定位于数据库集群的管理平台,面向规模化管理场景,对于单集群、小规模集群以及个人开发者不太友好。对于个人开发者来说,如果要体验 OCP 的管理能力,需要付出一定成本。由于 OCP 是中心化部署的,因此需要单独的机器进行安装,且部署和运维都有一定门槛。并且为了实现平台级功能,OCP 对资源占用的要求也较高。因此,对于单集群、小规模集群、个人开发者来说,社区版 OCP 在可获得性、易用性上较难满足要求。
为了解决在社区场景下用户对 OceanBase 图形化管理的可获得性和易用性问题,我们在保留并继承了 OCP 原有体验和基础能力的前提下,推出了 OCP Express,可以帮助用户更好的管理 OceanBase 数据库。在满足数据库基础管理和数据库可观测性的同时,大幅降低了 OceanBase 数据库图形化管理的使用门槛和总拥有成本。本文将和大家分享 OCP Express 的架构特点、关键能力、安装部署、应用场景,以及一些常见问题。
一、以极小资源消耗部署于任一节点的OCP Express
OCP Express 是一个基于 Web 的 OceanBase 4.x 轻量化管理工具,作为 OceanBase 数据库的工具组件,它集成在 OceanBase 数据库集群中,支持数据库集群关键性能指标查看及基本数据库基础管理功能。OCP Express 源自于 OceanBase 云平台(OceanBase Control Platform,OCP),在保留核心能力的基础上,调整了整体的功能布局,给予用户全新的使用体验。同时,OCP Express 的功能配置也进一步调整,能够以极小的资源消耗部署在任意一台数据库节点上。从而使 OCP Express 用户以最小的成本,获取全新的 OceanBase 4.x 管控体验。通过 OCP Express,用户可以执行基础的 OceanBase 数据库管理任务,例如创建或变更租户、管理数据库及用户等,还可以查看有关 OceanBase 数据库的监控、性能、诊断、日志等信息。OCP Express 的特点参考图1。
图1 OCP Express 特点
1、特性介绍
OCP Express 支持以下五个部分的 OceanBase 集群管理功能:
- 集群总览:查看集群拓扑结构、状态信息、资源消耗等核心信息,掌握集群整体实时运行状况。
- 租户管理:提供集群下租户的全生命周期管理,以及租户下数据库管理、用户管理等。
- 监控服务:提供集群与租户维度的监控,覆盖性能监控、主机监控等数十种监控指标。
- 诊断服务:可以对租户会话、慢 SQL、Top SQL 进行有效的管理,如关闭会话、SQL 限流等。
- 日志服务:可以在线分析集群 OBServer、OBAgent 的相关日志,定位故障更加便捷简单。
2、架构介绍
OCP Express 的架构采用了 Agent-Server 模式,Agent 负责数据采集与命令执行,Server 负责数据聚合处理及展示。Agent 复用了已经开源的 OBAgent,在 OBAgent 现有功能上做了功能增强,配合实现了对本地集群的管理。Server 端在聚合了集群和租户数据后,以图形化方式展示集群当前的实时状态及监控诊断信息,并支持用户在图形化界面上对集群和租户进行管理操作。
OCP Express 的架构(见图2 )具备以下特点:
- OCP Express Server 可以选择部署到任意一台 OBServer 所在主机上,也可以独立部署到其他主机上,OBAgent 部署在每个 OBServer 节点所在的主机上,与 OBServer 一一对应;
- OBAgent 负责采集集群及租户的监控、性能、日志等数据,同时也负责执行由 OCP Express Server 下发的各种管理操作;
- OCP Express Server 会对 OBAgent 采集到的数据进行聚合处理及展示等,同时也负责下发各种管理操作指令;
- OCP Express 的元信息及监控数据存储在本地集群下的专用租户中,无需额外的集群来存储 OCP Express 数据,且能做到与业务租户隔离;
- OCP Express 仅管理本地 OceanBase 集群,逻辑更加简单,能力更加聚焦。
图2 OCP Express 架构
二、OCP Express 是如何简化数据库管理的
作为 OCP 的轻量版,OCP Express 在产品定位、部署方式、资源占用等方面都与 OCP 有所差异(见图3)。
产品定位:OCP 定位为 OceanBase 数据库的管理平台,面向规模化运维场景,可以实现一个平台管理多套 OceanBase 集群,同时支持更丰富的平台功能,比如备份恢复、巡检、告警等;而 OCP Express 定位为集群内置的数据库管理工具, 面向轻量化数据库管控场景,它与被管理的 OceanBase 集群深度融合,支持对本地集群的基础管理,以及监控、性能、诊断、日志等实时信息展示,功能聚焦,操作简单。
部署方式:OCP 为中心化部署,需要配置专用的 OceanBase 集群作为元数据存储仓库。安装包以 Docker 镜像方式提供,大小约 1.7 GB,由于依赖 Docker 管理,因此对运维要求也略高;而 OCP Express 作为 OceanBase 数据库的工具组件,可在使用 OBD 部署 OceanBase 集群时选择一键安装部署,安装包仅 80 MB,安装后打开即用,无额外配置。且运维非常简单,可使用 OBD 对其进行管理。
资源占用:由于 OCP 面向规模化集群管理,并提供了很多的平台级功能,因此对存储和计算等资源占用较多,有一定的使用门槛;而 OCP Express 仅管理本地集群,整体资源占用和开销都较少,仅在本地集群中创建一个专属租户来存储元数据和监控数据即可,可以做到在满足基本运维管理需求的前提下尽可能地降低资源消耗。
图3 OCP Express 与 OCP 的区别
除了上述三方面的区别外,OCP Express 通过提供数据库管理、数据库可观测性和外部集成这三大关键能力来简化对 OceanBase 数据库的日常管理。
1、数据库管理
OCP Express 保留并继承了 OCP 的原有体验以及基础的 OceanBase 集群及租户管理能力,能让用户摆脱黑屏,方便快捷地在图形化界面查看和管理本地集群及租户。由于 OCP Express 被设计为仅管理本地集群,因此在管理功能上非常聚焦,操作便捷、易于使用,使 OceanBase 数据库的管理变得更加简单和高效。下面以集群总览和租户管理为例,结合页面功能做一下简单介绍。
OCP Express 将集群的关键信息都汇总在了集群总览页面(见图4),在该页面中,用户可以掌握集群当前的实时运行状态。比如可以了解到集群当前的资源水位、租户合并情况、SlowSQL 统计,以及集群的拓扑结构等。除此之外,用户也可以在该页面上对集群的 Unit 分布进行调整,以及修改集群参数。
图4 集群总览界面
OCP Express 提供了租户的全生命周期管理功能,用户可以根据业务需要通过 OCP Express 页面来创建或删除租户,同时还支持在租户下对数据库及数据库用户进行全生命周期的管理。除此之外,租户的副本扩缩容、参数设置、合并管理、Zone 优先级设置、白名单设置等都可以通过 OCP Express 页面来完成,如图5所示。
图5 租户总览界面
2、数据库可观测性
数据库可观测性是对于数据库的运行状态、性能指标以及异常事件进行监控、收集、分析和可视化展示的能力。可以帮助用户及时发现和解决问题、提高系统稳定性、改善数据库设计、提高数据库性能等。OCP Express 提供了以下三个层次的数据库可观测性。
- 自动数据收集:OCP Express 通过 OBAgent 对 OceanBase 进行实时数据采集,包括性能、SQL 等各类指标,采集到的数据存储在本地集群下的专用租户中。同时也支持将 OBAgent 采集到的数据对接到第三方平台,后面章节中会详述。
- 数据库监控:OCP Express 提供了丰富的监控项和监控图表。对采集到的指标数据进行聚合处理,然后通过图表的形式展示在界面上,便于用户查看数据库运行的实时状况。
- 数据库诊断:OCP Express 提供了会话诊断和 SQL 诊断的能力。用户可以通过 OCP Express 识别出不健康的会话和 SQL,优化数据库访问,提升数据库性能。
下面结合 OCP Express 的功能页面,对监控、诊断和日志服务做简单介绍。
通过 OCP Express,用户可以查看 OceanBase 集群和租户的实时性能监控。监控信息分为集群和租户两个维度,集群监控下分为数据库性能和主机性能两类,租户监控下分为性能与SQL、事务、存储与缓存三类,总计 50+ 监控图表。集群监控如图6所示。
图6 集群监控界面
通过 OCP Express,用户可以查看租户会话列表与会话统计,可以查看 TopSQL 与 SlowSQL,还可以对租户会话及慢 SQL 进行有效的管理,如关闭会话、SQL 限流等。SQL 诊断页面见图7 。
图7 SQL 诊断界面
除此之外,用户还可以通过 OCP Express 提供的日志查询功能,在线分析集群 OBServer 的相关日志,包括observer 日志、rootservice 日志、选举日志等(见图8),使得故障定位更加的简单便捷。
图8 日志查询界面
3、外部集成
OCP Express 通过 OBAgent 完成数据库实时指标数据的自动收集,同时也将数据自动收集能力进行了开放。用户可以利用 OBAgent 的开放数据采集能力,集成到第三方平台或自有外部监控系统,例如:Prometheus、Zabbix 等。
OBAgent 提供了标准 HTTP 接口,以 Prometheus 数据模型将 OceanBase 数十种监控指标暴露给 Prometheus Server,包括主机指标与数据库指标等。详见:https://github.com/oceanbase/obagent/blob/master/docs/obagent-metrics/exporter-metrics.md 用户可以将这些 metric 数据集成到自有的 Prometheus Server中,并在 Grafana 上进行图表化展示。效果如图9所示。
图9 Grafana 数据图表化展示
具体的对接指导请参考:https://github.com/oceanbase/obagent/tree/master/docs
三、如何安装与部署 OCP Express
1、安装部署
OCP Express 作为 OceanBase 的工具组件,在安装部署方面做到了极致的简单与便捷。在使用新版 OBD (带图形化界面,见图10)部署 OceanBase 数据库时,用户可选择一键安装 OCP Express,以获得对本地集群的基础管理能力。整个安装过程清晰简单,用户仅需确认 OCP Express 和 OBAgent 的服务端口即可,无需额外配置。当完成安装过程后,就自动拥有了 OceanBase 数据库的图形化管理能力,打开即用。
图10 新版 OBD 的图形化部署界面
如上图所示,在 OBD 的部署配置页面,当选择“完全部署”的部署类型后,OBD 会在安装 OceanBase 数据库的同时,一键安装 OCP Express 和 OBAgent 两个工具组件,这两个工具组件共同配合,完成 OCP Express 的所有功能。当然也可以选择“精简部署”,此时仅安装 OceanBase 数据库。为了能更好地使用 OceanBase 数据库,推荐采用“完全部署”的部署类型。OCP Express 的安装包仅有 80 MB 大小,OBAgent 的安装包也仅有 20 MB 大小,安装简单,管理便捷。
当用户不再需要 OceanBase 集群时,可通过 OBD 命令obd cluster destroy
一键销毁集群。此时 OCP Express 及 OBAgent 组件也会随之一起停止并卸载。
2、资源占用
OCP Express 服务
OCP Express 服务在运行过程中会有计算和存储的开销,具体的资源消耗参考如表1所示。资源的消耗与集群规模以及租户数量有关,以下配置是以集群中包含 10 个租户为标准,根据集群规模进行预估得出的数据。
集群的 OBServer 数 | CPU(核) | 内存(GB) |
≤ 10 | 1 | 2 |
≤ 20 | 2 | 4 |
≤ 50 | 4 | 8 |
表1 OCP Express 服务资源消耗
当集群规模较小时,例如 OBServer 数量在 10 以内,OCP Express 服务的资源消耗仅为 1C2G。
OCP Express 租户
OBD 在部署 OCP Express 时,会在 OceanBase 集群下为 OCP Express 创建名为 ocp
的专用租户。该租户被用于存储 OCP Express 的元数据和监控数据。该租户的副本所需的资源也与集群规模以及租户数量有关,以下配置是以集群中包含 10 个租户为标准,根据集群规模进行预估得出的数据。
集群的 OBServer 数 | CPU(核) | 内存(GB) |
≤ 10 | 1 | 4 |
≤ 20 | 2 | 8 |
≤ 50 | 4 | 16 |
表2 OCP Express 专用租户资源消耗
当集群规模较小时,例如 OBServer 数量在 10 以内,OCP Express 租户的资源消耗仅为 1C4G。
四、OCP Express 的六大应用场景
OCP Express 定位为 OceanBase 集群内置的数据库管理工具, 面向轻量化数据库管控,因此特别适用于以下六个场景。
场景1:快速部署和体验 OceanBase 功能。由于 OCP Express 作为管控组件内置于 OceanBase 4.x 集群中,因此在部署 OceanBase 后,即可拥有 OCP Express 的图形化管理能力,无需额外部署操作。对于新上手用户来说非常方便,能快速的部署并在图形化界面上体验 OceanBase 的功能。同时也非常有利于新手用户利用图形化界面来学习和理解 OceanBase 数据库。
场景2:个人开发者日常使用。对于个人开发用户来说,一般情况下可利用的机器资源较为有限,不太适合通过部署中心化的 OCP 来满足日常数据库管理需要。且个人开发者对于 OceanBase 集群的部署和销毁操作都较为频繁,管控工具的部署便捷性和可获得性是非常核心的需求。OCP Express 在安装 OceanBase 集群时即可一键安装获得,在销毁 OceanBase 集群时也随之一起停止并卸载,并且不需要额外的机器资源,因此对于个人开发者来说使用起来非常便捷,且能满足日常管理需要。
场景3:小规模单集群管理。对于小规模单集群的管理来说,往往需要简单和高效的管理工具即可。如果通过部署中心化的 OCP 来满足管理需要,不但使得很多 OCP 的平台级能力处于“闲置”状态,而且也浪费了部署资源。这种场景下使用 OCP Express 来对集群进行管理是比较合适的选择,既能满足日常管理需要,又无需额外的机器资源用于部署管控服务。
场景4:数据库性能优化和故障排除。OCP Express 提供了丰富的数据库监控及诊断能力,并且还能在图形化界面上在线分析 OBServer 的相关日志。用户可以通过 OCP Express 识别出不健康的会话和 SQL,优化数据库访问,提升数据库性能,也可以通过 OCP Express 的日志分析功能来使得故障定位更加地简单和便捷。
场景5:监控集成到外部平台。OCP Express 开放了监控数据采集的对接能力。通过 OBAgent 提供的 HTTP 接口,用户可以很方便地把 OceanBase 的监控指标集成到自建的监控系统中,比如业界流行的 Prometheus、Zabbix 等。如果用户有这方面的对接需要,在使用 OBD 一键安装部署 OceanBase 4.x 之后,即可自动拥有该能力。
场景6:降低数据库管理成本。由于部署中心化的 OCP 需要一定的机器资源,且有一定的维护门槛,因此对于需要降低数据库管理成本的场合来说,使用 OCP Express 是较为合适的选择。OCP Express 的部署不占用额外机器资源,仅需在 OBServer 节点下占用少量计算和存储资源,以及在本地集群中内置一个专用租户。OCP Express 在运行时占用资源较少,在满足日常管理功能的同时,也能进一步降低用户的数据库管理成本。
五、常见问题及建议
Q:OCP Express 与 OCP 有哪些区别?
A:OCP Express 面向轻量化管控,作为管控组件内置于被管理的 OceanBase 集群,可以做到在满足基本管理需求的前提下尽量地降低资源消耗。OCP 面向规模化管理场景,可以实现一个平台管理多套 OceanBase 集群,支持更丰富的管理能力,需要额外配置 OceanBase 集群作为 OCP 的元数据存储介质,同时也需要更高资源占用来实现更多的平台级能力。
Q:OCP Express 是否可以单独部署?
A:目前 OCP Express 需要通过 OBD 使用一体化安装包来实现一键安装部署,部署完成后 OCP Express 打开即用,不需要任何的配置即可管理 OceanBase 集群。
Q:OCP Express 的使用场景是什么?
A:OCP Express 面向开发测试、中小规模 OceanBase 集群管理、个人开发者用户,适合单集群在 20 台主机、5 个租户以内的使用场景。
Q:OCP Express 支持哪些 OceanBase 数据库版本?
A:OCP Express 是基于 OceanBase 4.x 推出的轻量化管理工具,支持 4.0 及以上版本的 OceanBase 数据库。
Q:OCP Express 未来是否开源?
A:OCP Express 计划于 2023 年 6 月进行代码开源,同时会更新 OBAgent 已开源代码版本。
Q:OCP Express 中使用的 OBAgent 和 OceanBase 开源社区中的 OBAgent 是什么关系?
A:OCP Express 中使用的 OBAgent 是基于开源 OBAgent 开发的,对原有功能做了增强,计划于 2023 年 6 月对开源 OBAgent 做新版本发布,开放本次新增的代码。