CLup简介
1. 什么是CLup
CLup是CLoud Unite Platform的缩写,中文名为“乘数云统一平台”。CLup是一套私有云平台,是一款聚焦虚拟化IaaS层与数据库生态PaaS层的融合型平台。它针对数据库场景,将复杂的IaaS层操作(如虚拟机管理、存储分配)与数据库高可用(自动故障切换)、实时监控、定时备份等能力整合封装,提供简单易用的特性,具备开箱即用、自动化及可视化功能,可轻松创建和管理数万个虚拟机和数千套数据库集群。
CLup平台创建虚拟机和LXC容器,其特点如下:
- CLup可以秒级创建虚拟机和LXC容器。
- 虚拟机的镜像文件可以放在本地存储上,也可以放在ceph存储上。
- 虚拟机可以支持单独的数据盘,以满足高性能IO的要求。
- 虚拟机支持GPU卡的透明穿透,方便一块GPU卡给多人使用。
使用CLup可以轻松创建和管理成千上万套虚拟机和LXC容器,大大的提高了系统管理的效率。
CLup也是一套数据库的PaaS私有云平台,在此平台上可以创建和管理各种常用数据库如Oracle、MySQL、PostgreSQL、MongoDB、Redis等,以及信创数据库如达梦、金仓、PolarDB、HighgoDB、GaussDB、VastBase、崖山等数据库。
CLup平台提供一下的数据库管理功能:
- 可以把用户现有的数据库纳管到此平台中来管理。
- 可以快速创建出一套可以在生产系统上使用的数据库系统,这套数据库有高可用、监控告警、备份等基本功能,
- 如何快速搭建现有数据库的备库,如何快速修改主备库之间的级连关系。
- 如何通过界面修改数据库的配置。
- 实现数据库的容灾,当整个机房的网络断了,如何快速恢复业务。
另CLup还提供中启乘数数据库一体机CData的管理功能,即CData的管理功能也是由CLup来完成的。
使用CLup可以轻松创建和管理几十套至上百套高可用的数据库集群。当发生故障切换后,有详细的故障切换日志,方便故障原因定位。另还可以手工一键切换,满足运维中日常停机的需要。CLup还提供了数据库的一些基本监控和TOP SQL的监控以及容灾管理及一键加备库,最大限度的简化DBA的工作。
2. CLup发展历程
CLup软件从2017年就开始研发,第一个正式版本发布于2017年11月20日。版本发展的历程如下:
- CLup1.0:实现了高可用、读写分离的功能,命令行管理模式。
- CLup2.0: 增加了WEB统一管理界面,大大提升了易用性。
- CLup3.0: 增加了共享存储类型的高可用模式;增加了一键搭建备库的功能,增加了数据库容灾管理的功能;
- CLup4.0: 增加了数据库备份的功能,全面支持了国产鲲鹏平台和各种国产OS,如UOS、银河麒麟。支持了多种的基于PostgreSQL的国产数据库。
- CLup5.0: 全面支持阿里PolarDB数据库社区版,支持ESDisk共享存储设备管理。
- CLup6.0: 将IaaS平台和PaaS平台融合,之前的版本主要支持PostgreSQL和PolarDB,6.0开始支持了更多的数据库:Oracle、MySQL、PostgreSQL、MongoDB、达梦、金仓、PolarDB、HighgoDB、GaussDB、VastBase等数据库。
3. CLup的亮点功能
亮点功能如下:
- 可以在物理机、虚拟机中创建数据库,可以创建包含指定数据库的虚拟机以及高可用集群;也可以把用户已有的数据库纳管到CLup中。
- 实现了基于数据库自身提供的复制功能的高可用集群中,当主库出现故障时,备库被激活后,原先的主库需要转换成目前新主库的备库,这个过程很复杂,我们的程序可以把各种情况下做成自动化,整个恢复过程都可以是一键完成。
- 可以支持容灾的高可用方案,如一主两个本地备库+一个远程容灾库,本地主库出现问题时优先切换本地备库,本地出现严重问题后,可以一键切换容灾库。
- 对于主库可以update做心跳检测,对备库可以配置一个只读查询做心跳检测,保证检测的准确性。
- 为防止主库负载过大造成update返回超时,设计上采用多次探测,每次超时时间递增
- 探测方有自身检测:探测前应通过第三方网关确认自身网络状态正常。
- 对于共享存储的集群,通过特别的处理机制解决了脑裂问题(共享存储集群仅企业版支持)。
- 一键搭建备库的功能
- 可以管理各种复杂的级联关系的流复制集群,如主库A后面有一个备库B,而B后面又有两个备库等任意复杂的流复制集群。这个功能对于容灾特别管用。同时通过鼠标点一点就可以改变级连关系,如主库是A,A后面挂了一个B备库,B备库再挂一个C备库,即为A->B->C的级连关系,可以一键改成A->C->B。
- 可以对现有管理的数据库做统一备份和管理,可以一键恢复数据库,并可以通过WAL日志恢复到任意时间点。
- 可以手工一键切换,如有时想对某台机器做停机维护,为了不影响业务,可以进行手工高可用切换。手工切换类似Oracle数据库中的switchover,可以任意可逆切换。
- 在同一套CLup中,可以同时对很多套数据库高可用集群进行统一集成中管理。
- 在监控的功能中,监控了一些最有价值的指标,而不是像有些监控工具中,监控了很多指标,但大多数都是没有啥用处的功能(监控功能仅企业版支持)。
另外CLup是一套非常容易部署,对环境要求很低的高可用集群管理软件,如可以在2GB内存的机器上部署和使用,对机器的CPU没有要求。
4. CLup的数据库高可用功能
CLup特色功能就是实现了数据库的高可用功能,特别是针对PostgreSQL数据库以及基于PostgreSQL数据库的国产数据库。
目前在PostgreSQL领域已存在几个开源的高可用软件:
- keepalived: 是一个较简单的高可用软件,其最早是于用LVS负载均衡软件,现在也常常用于ngnix的高可用,也可以用于数据库领域,但需要自己定制切换脚本才能完成数据库的高可用功能,另keepalived基于VRRP协议实现的,其存在着脑裂的问题。
- haproxy: 通常是用于http等web应用,较少使用于数据库领域
- Heartbeat或pacemaker+corosync: 这两个软件是通用型高可用软件,并不是专为PostgreSQL设计,安装时需要安装很多依赖包,有很多的配置,比较复杂,如果不是非常精通的人员搭建出来的高可用集群,经常容易出现误切换等问题
- repmgr:是一个套针对于PostgreSQL数据库的高可用方案,相对其他的高可用方案来说,相对比较简单。不足之处在于没有对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现。
- patroni:是另一个套针对于PostgreSQL数据库的高可用方案,相对repmgr来说,复杂一些。不足之处与repmgr类似,没有实现对VIP的管理,如果要实现VIP的管理,需要自己写脚本来实现
- pgpool-II: 是PostgreSQL数据库领域比较常见的高可用软件,其最早是做为连接池来使用的,pgpool-II除了高可用功能外,设计了一些更复杂的使用模式,对于初学者来说,如果没有深入的学习pgpool-II,根本搞不清楚复制模式、主备模式、并行查询模式的区别。实际上pgpool-II这么多的模式真正在企业中可以使用的模式基本只有“流复制+Standby的主/备模式”,其它模式都有各种各样的缺点,实用性不强。但由于这些绝大多数使用不上的功能,导致pgpool-II的配置很复杂,稍有不慎就容易发生因为配置不合理而导致的重大事故。
但上面这些开源软件无一例外有以下这些问题:
- 需要自己实现一些脚本才能完整实现高可用的功能
- HA的切换的配置有一定的复杂度,文档中对一些高可用切换原理性和参数介绍得较少或介绍得晦涩难懂,难以掌握,如果没有深入的学习,容易出现错误的配置,从而导致一些严重得故障
- 无集中管理的功能,无法一套软件同时管理多套高可用集群,增加了运维工作的难度
CLup的高可用功能并不是基于一些开源软件上做的二次封装的。而基于开源软件封装的高可用软件,如基于ZooKeeper、etcd、repmgr或patroni上做的封装,导致对环境要求高,系统资源占用大等问题。
所以CLup平台为数据库量身定制一套最符合用户的高可用及监控管理的软件,让企业可以快速搭建一套高可靠、高可用、高性能的数据库,同时满足易管理维护、集中管理的一套数据库私有云解决方案。