作者介绍:王军,exciting 队成员、PingCAP 华东售后技术支持。exciting 队参加了 TiDB Hackathon 2019,其项目「TiExciting」获得了三等奖。
运维难,难于上青天。
作为 PingCAP 员工,我们不仅平时自己用着 TiDB,也会自发地想让周围人也用上 TiDB。但在这个过程中,我们发现有以下问题:
上船难:官方推荐的部署方法 TiDB Ansible 限制较多,有一定的学习成本。对于运维同学比较容易上手,但是对于研发同学就比较不友好。用户手册详细但是复杂,其中也有各种各样的限制,特别是遇到错误的时候不好处理。
开船难:用上 TiDB 之后,后续对 TiDB 集群进行运维(如扩容,升级),尤其在 PD 的扩容和缩容,安全性高,但是操作还是有些复杂。
开发上船容易翻:经常见到开发人员不知道水有多深,跟着文档在自己机器上尝试用 TiDB Ansible 部署 TiDB,结果一不小心就把系统改得面目全非。
当前的上船门槛有多高?
在参赛前,我们先评估了一下之前的体感问题是不是真实存在的问题,因此我们在本次 Hackathon Ucloud 新集群上进行了一番实测:
队友 A:腾讯微信研发,从未接触过 TiDB,首次尝试部署:
按照 TiDB Ansible 超长的部署教程,部署 3 小时后没有成功,遂放弃。
队友 B:PingCAP 华东地区高级客户支持,为各种商业客户部署过 TiDB:
操作熟练,但经常由于手滑或环境关系经历各种报错,凭丰富的知识知道怎么解决,最终使用 20 分钟部署完毕。
怎样可以快速上船和开船?
为了解决问题,我们先进行了需求设计:
为了能快速上船,部署过程本身应该要做到「快」,能并行的操作就并行进行。
直观方便清晰,最好不要文档就能用起来:提供图形化界面。
所有与易用性冲突的特性都需要让步。
TiDB Ansible 强制环境检查 → TiExciting 不阻止部署(但给出 Warning)。
TiDB Ansible 要求从中控机部署 → TiExciting 甚至可以从 Windows 开始部署,且不要求配置互信。
绿色环保有节操,没有全家桶。
TiDB Ansible 强制要求进行系统配置调优满足 TiDB 要求 → TiExciting 允许用户可选地配置系统以便更好地运行 TiDB,且用户知悉各个要进行的改动。
TiExciting 允许用户自行勾选想要安装的组件,遵循最小化原则。
Hackathon 成果
部署
创建完目标机器(后文介绍机器添加方式)后,就可以自由选择其中的机器进行部署。界面上可以自行勾选想要的组件,或取消勾选不想要的组件。比如不想要监控大礼包,就可以直接取消勾选「监控」。另外 TiDB 也是可以取消勾选的,适用于只想使用 TiKV 的情况。

图 1 部署方案

图 2 安装演示
管理机器
启动 TiExciting 后,界面会引导用户首先增加机器,包括填写连接方式等。这里可以指定密码或密钥登录,无需 root,也无需创建特别的用户,只需填写运维人员平时连接上去的方式即可。增加机器时候的设置也可以从现有机器设置复制。

图 3 服务器添加演示

图 4 高级配置
* 完整成果演示视频:
技术实现
界面
跨平台
快
为了尽可能快,TiExciting 会尽可能的基于文件哈希来复用文件,例如已下载且校验通过的 TiDB 二进制大礼包就不需要重复下载,已经成功部署的同理。TiExciting 还实现了异步有向无环图的任务调度机制,当所有先决任务完成后,后续任务就可以得到执行,且之间没有依赖关系的任务可以并行执行,如下图所示:

图 5 异步有向无环图的任务调度机制
聊聊未来
更好的部署方案规划。 纯界面实现扩容、缩容。 纯界面实现更新集群。 纯界面管理集群(启动、停止、更新、滚动等)。 将现有 TiDB Ansible 集群纳入 TiExciting 管理。





