1.背景
随着 OceanBase 的商业化及社区的推广,OceanBase 的客户群体数量越来越多、类型也越来越丰富有关键行业的头部企业,也有社区的开发者及中小客户,还有与 OceanBase 形成良好合作的生态商。
传统以 OCP 为中心,一体化管理和维护 OceanBase 的方式对于社区开发者和中小客户而言,管理成本高,平台依赖性强,并且缺乏在 OCP 故障不可用时的兜底管理方案。此外,国内外的数据库厂大多有原厂开发的黑屏命令行管理工具,而 OceanBase 现有的黑屏工具,如obd、ob_admin 等,目前还处于在诸如像社区开源、交付运维这样的独立场景应用,未完全推向用户侧。因独立发展的关系,安装及使用方式各异,暂未从整体上形成对外统一方案,很难为客户输出更大的价值。
为了解决上述痛点,免安装、成本低、易上手、运维手段丰富的 OceanBase 内置开源管控工具 obshel(黑屏)/0B-Dashboard(白屏)应运而生。
简单介绍一下 OB-Dashboard:
● OB-Dashboard 是基于 obshell 提供的 Web 图形化 OceanBase 管理工具,提供了常用的OceanBase 日常管控功能,适合管理小规模部署的 OceanBase 集群。
● OB-Dashboard 凭借轻量化、易用性及开源特性,为 OceanBase 用户提供了一套高效的图形化管理工具,尤其适用于中小规模集群的日常运维场景。项目团队持续快速迭代,未来将通过集成更丰富的管控功能,进一步优化 OceanBase 的管理体验。
● OB-Dashboard 基于 obshell,源代码 100% 开源,详细信息请参见:GitHub 代码仓库。
2.概述
2.1.obshell
obshell (OceanBase Shell)是 OceanBase 社区为运维人员 & 开发人员提供的免安装、开箱即用的本地集群命令行工具。obshell 支持集群运维,同时基于 OBServer 节点对外提供运维管理 API,实现不同生态产品对同一集群统一管理,从而方便第三方产品工具对接 OceanBase 数据库,同时降低了OceanBase 集群管理难度和成本,
obshell 不需要额外安装。您通过任何方式安装 OceanBase-CE 数据库都可以在任何一个节点的工作目录的 bin 目录下看到 obshell 可执行文件。
此外,obshell 还提供了基于 Web 的交互式管理页面 一-OB-Dashboard,专为 OceanBase 集群和租户资源的管理而设计。它提供了关键资源的监控功能,帮助用户高效管理 OceanBase 集群。
2.2.OB-Dashboard
OB-Dashboard 是基于 obshell 提供的 Web 图形化 OceanBase 管理工具,提供了常用的 OceanBase 日常管控功能,适合管理小规模部署的 OceanBase 集群。
OB-Dashboard 服务完全集成在 obshell 进程中,用户可以通过访问任何部署了 obshell 的服务地址来管理 OceanBase 集群。这种设计不仅简化了管理流程,还确保了极低的资源开销,为用户提供简单易用的管控体验。
obshell 通过本地 salite 数据库和其所管理的 OB 集群进行元数据的存放,以极低的额外成本引入实现对单个集群的部署和管控,提供丰富的白屏 +黑屏的运维手段,供用户自由选择。
主要优势:
● 部署简单:随 OceanBase 一起发布,无需额外安装,OBD OCP 等工具会默认拉起进程。
● 简单易用:基于 Web 图形化页面交互,提供常用的 OceanBase 管理功能。
● 资源占用低:使用 Go 语言实现,资源占用极低,运行时仅需百兆内存左右。
● 完全开源:OB-Dashboard 基于 obshell,源代码 100% 开源,详细信息请参见 GitHub 代码仓库。
3.系统架构
上图展示了一个由 obshell 管控的 OB 集群的系统架构图。每个 obshell Agent 管理一个 observer,整个集群的运维动作由一个 obshell Agent 发起,多个 obshell Agent 共同协调推进。负责管理同- 〇B 集群中 observer 的 obshel Agent,构成 obshell 集群。每个 obshell 节点的元数据分为两部分,一部分存放在工作目录下的本地数据库中,这一部分元数据主要是 OB 集群部署和启动前,obshell 所需的信息,例如节点的身份信息和配置信息等。另一部分存放在所管理的 OB 集群中,这-部分元数据主要包括集群的拓扑信息,运维任务信息等。由于 obshell集群的元数据信息存放在所管理的 OB 集群中,避免了额外成本的引入。同时 obshell 运维的可用性仅依赖于 OB 集群可用,而当 OB 集群因多数节点宕机变得不可用时,obshell 还提供了应急启动的功能用干拉起 OB 集群,并且该运维动作不依赖 OB 集群,进一步提升了其可用性。
在 obshell 中,每个运维动作都由对应的任务完成,任务的调用时序图如下:
4.功能支持
截止到 obshell 4.3.0.1为止,obshel 具备一下功能,囊括绝大部分 OceanBase 基础运维功能,能够满
足日常管控所需:
5.系统集成
5.1.运维手段
除了可以通过直接请求 API 使用 obshell 管控 OB 集群外,还可以通过一下方式创建并管控 OB 集群。
5.2.内部集成进展
除了使用 obshell 创建 OB 集群外,通过 OBD 或 OCP 部署并启动的 OB 集群,也会自动拉起 obshell 进程并接管 OB 集群。对于手动部署的 OB 集群,可通过命令行或 SDK 拉起 obshell 节点进行接管。
● OBD
V 2.6.0 开始,OBD 开始对 obshell 进程生命周期进行维护,目前,obd 已经通过集成。obshell-sdk-python 实现备份恢复功能,后续将逐步继续通过 obshell 替换原有的运维功能对于已经支持 OB-Dashboard 的 OB 版本,OBD 在部署成功之后,会展示出 OB-Dashboard 的访问地址,复制到浏览器即可体验。
● OCP
oV4.3.3 开始,OCP 开始对 obshell 进程生命周期进行维护,后续将逐步通过 obshell 替换原用的运维功能。
● YUM INSTALL
在使用 systemctl 启动 OceanBase 服务时,会先启动 obshell 进程,再通过 obshell 拉起OB 集群。
● OB-Dashboard
从 obshell 4.3.0.0 开始提供白屏运维 OB-Dashboard,访问集群中任- obshell 的 web 服务端口即可访问。
6.工具对比
和其他的开源管控工具对比
7.使用 OB-Dashboard 管理 OceanBase 集群实操
7.1.安装 OB-Dashboard
OB-Dashboard 无需额外部署,无论通过 OBD 或 OCP 拉起的 OceanBase 集群都会同时拉起 obshell 进程,通过浏览器访问对应主机地址和 obshell 的端口即可访问 OB-Dashboard 页面。
7.2.登录 OB-Dashboard
OB-Dashboard 使用 OceanBase 的账号体系进行鉴权,登录页面输入 root 账号的密码即可完成登录,如 root 账号密码为空可以直接点击登录。
7.3.集群管理
7.3.1.基础信息展示
OB-Dashboard 首页展示了当前 OceanBase 集群的基本信息,包括资源分配和使用情况,集群拓扑,合并信息等,用户可以通过首页简单直观的获取集群的状态信息。
7.3.2.参数管理
更改参数:将memory_limit 由7G改成12G
要求:点击参数管理按钮进入集群参数管理页面,可以搜索参数并对其进行修改,以内存相关参数为例,首先搜索关键字 memory,注意两个关键参数的值 memory_limit 为7G,system_memory 为 1G,我们可以尝试将 memory_limit 的值修改为 12G。
修改过程:
点击 memory_limit 后的修改值,填入 12G 生效范围选择集群,点击确定,确认修改信息后再点击确定完成修改。
回到首页,鼠标移动到集群已分配资源部分,查看集群的资源信息可以看到内存总量已经变成 11G, 这里的总量指的是可以分配给租户的内存大小,计算方式是 memory_limit - system_memory 得到的结果和修改后的参数匹配。
说明:memory_limit 修改后只是修改了 OceanBase 可使用的内存阈值大小,并不是立即占用,不建议设置为超过实际内存大小的值。
7.3.3.集群启停
集群停止
集群正常运行状态下,点击停止集群,再点击确认框的停止按钮会发起停止集群的任务,点击弹框中的任务 ID 进入任务页面,可以查看停止集群的任务详情。
任务成功后回到首页,可以看到集群处于异常状态,同时各种统计信息为空,点击启动集群按钮,再次点击弹框中的启动按钮,会发起启动集群的任务,同样可以通过任务 ID 查看启动集群的任务详情,集群正常启动后首页信息恢复展示。
启动集群
7.3.4.其他集群管理功能
目前 OB-Dashboard 上还提供了升级集群和升级 obshell 的功能,这两个功能需要上传对应的软件包,之后可以发起升级的任务。
7.4.租户管理
7.4.1.新建租户
点击租户管理页面中的新建租户按钮,进入新建租户页面,填入租户的基本信息并点击提交按钮,之后会发起创建租户的任务。
密码要复制出来,避免忘记。
等任务执行成功之后,返回租户管理页面,可以查看到刚刚创建的租户。
点击租户名,可以进入到租户详情页面展示租户的基本信息和一些操作的入口。
7.4.2.租户资源调整
租户的资源由 unit 定义,点击修改 unit 按钮,调整 unit 规格后点击确定将发起修改 unit 的任务,等待任务成功后 unit 即修改成功
7.5.数据库管理
7.5.1.新建数据库
点击数据库管理页面的新建数据库按钮,填写数据库信息后点击提交即可创建出对应的数据库。
7.5.2.用户管理
点击用户管理页面的新建用户按钮,填写用户名,密码并选择相应的权限后点击提交,即可创建一个用户,例如创建一个 readonly 用户并赋予 dxj 数据库的 select 权限。
同时页面上还提供修改密码、修改权限、锁定、删除 等操作。
7.5.3.参数管理
租户参数管理功能类似于集群的参数管理,区别在于租户的参数生效范围为当前租户,无需再次选择生效范围。
8.总结
OB-Dashboard 凭借轻量化、易用性及开源特性,为 OceanBase 用户提供了一套高效的图形化管理工具,尤其适用于中小规模集群的日常运维场景。项目团队持续快速迭代,未来将通过集成更丰富的管控功能,进一步优化 OceanBase 的管理体验。