【云驻共创】GaussDB(for openGauss)华为消费者云优秀实践

举报
liuzhen007 发表于 2021/09/07 10:18:02 2021/09/07
【摘要】 前言华为终端云服务又称为"华为消费者云",是华为智能终端设备的“大脑”,为终端提供云服务支撑,提供围绕数据、应用、出行、娱乐等全场景、高品质的数字生活体验,带领华为终端用户探索更美好的数字生活。如何快速通过云化,让数据库根据数据量变化快速弹性扩容,成为消费者云提升业务能力的关键所在。而GaussDB(for openGauss)是基于华为主导的openGauss生态推出的企业级分布式关系型数...

前言


华为终端云服务又称为"华为消费者云",是华为智能终端设备的大脑,为终端提供云服务支撑,提供围绕数据、应用、出行、娱乐等全场景、高品质的数字生活体验,带领华为终端用户探索更美好的数字生活。如何快速通过云化,让数据库根据数据量变化快速弹性扩容,成为消费者云提升业务能力的关键所在。GaussDB(for openGauss)基于华为主导的openGauss生态推出的企业级分布式关系型数据库。该产品具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。

正文


一、华为消费者云业务上线情况总结


华为消费者云拥有6亿用户的华为终端云,数据量超大。对分布式线性扩展、性能、可靠可用能力要求极高。截止到目前为止,已经上线9个业务,90多个分布式集群,大约2000个节点,4万多个CUP核心。其中,最大的单体服务业务是华为定位服务,230多个节点,3000亿行数据。A类的华为云空间实时业务正在上线,目前已对接了9300万终端用户。


另外,我们非常熟知的华为账号、华为应用超市、运动健康等后台服务都部署在华为消费者云上。


二、GaussDB(for openGauss)上线华为消费者云技术方案


2.1 GaussDB(for openGauss)云服务组件介绍

GaussDB关键部件有三个,分别是GaussDB ConsoleGaussDB ServiceRPC管控。其中,GaussDB Console 提供 RDS 服务自助申请和管理界面,用户在 RDS Console 填写服务申请单,包括虚拟机规格,所在网络、存储容量、数据库密码等参数,点击提交生成订单。GaussDB Service 作为 RDS 核心服务组件,实现自动化发放调度和自助管理能力。GaussDB服务管理面和实例面通过远程调用实现数据库的管控。


除此之外,GaussDB(for openGauss)云服务组件还依赖了一些第三的工具组件,比如 IAM(提供租户和用户认证服务)、ECS(创建RDS实例虚拟机)、EVS(创建RDS实例数据卷)、VPC(创建RDS实例的网络)、OBS(存储RDS实例备份数据)、CES(监控告警服务),在这些服务的共同作用下,GaussDB(for openGauss)云服务实现了完整的一站式数据库服务。


关于数据库集群访问,可以通过三种方式,第一种是在相同安全组中通过内网连接GaussDB数据库实例,这种方式最为常见。第二种是在不同安全组通过内网连接GaussDB数据库实例,这种情况也比较常见。第三种是通过公网连接GaussDB数据库实例,这种情况需要申请开发IP地址,这种情况比较少见,因为很少有数据实体和数据记录部署在不同的云服务厂商的情况。


原则上,不同的VPC之间的数据默认是隔离的,在VPC内部还可以划分不同的子网段,子网内的ECS服务器可以通过配置安全组进行访问控制。


另外,数据库的规格配置也划分了不同的等级,CNDN组件的规格包括从864G60480G不等的四档配置,GTMCMS组件在核数和内存增加的同时,也增加了分片数量。而且,所有组件都是用了超高IO的磁盘存储,提高了数据读取的响应速度。

2.2 GaussDB(for openGauss)拓扑组网


GaussDB(for openGauss)拓扑组网方式采取的是分布式集群3AZ3副本部署拓扑。首先,说一下集群数据库组件都有哪些。CN作为协调节点,负责请求接入和路由分发,各CN节点对等分布。DN作为数据节点,负责本分片的数据存储和处理,通过多个副本保证数据的可靠性。GTM作为全局事务管理节点,负责全局事务版本的分配,无分布式事务时,选用GTM-Free模式即可。ETCD,高可用KV存储系统,用于持久化集群中所有的资源对象。CMS,集群管理服务端,负责管理集群状态及对集群中的CNDNGTM实例剔除和仲裁。CMA,集群管理客户端,负责监控其所在主机上的实例(CNDNGTM)状态并上报给CMS,同时也执行CMS下发的仲裁指令。OM_Monitor,看护CMA的定时任务。

GaussDB集群高可用的原因有四点,具体原因如下:


13AZ容灾,除了CMSETCD合设外,其他进程均独立虚拟机部署。


2CN各节点对等、多活。


3DN每个分片12备,主副本支持读写,其它副本纯备份;副本间通过qucrum协议保证一致性;同一分片副本间反亲和性部署(不同物理机),不同分片的主副本无反亲和性。


4CMS\ETCD\GTM三副本部署。


2.3 GaussDB(for openGauss)备份恢复


GaussDB(for openGauss)备份恢复是数据库操作的兜底方案,防止各种误操作和数据丢失。整体原则采取的是周期性全量、增量备份策略。具体的设计指标和策略有也简单介绍一下。


1)可靠性和可用性,EVS的可靠性可以做到99,可用性可以做到99.95%OBS可靠性可以做到129,可用性可以做到99.995%


2RPORTORPO增量备份周期最小是15分钟,这是一个经验值,不同的业务场景可以动态调整。RTO10小时,这样可以保证对业务的影响低于20%


3OBS带宽要求,单分片150MB/sOBS带宽是15G,可以支撑100分片集群部署。


4)集群规模和业务负载,100分片集群,3AZ 1 2备,单分片数据量可以达到2T。读写比是3:1,单条记录长度是1K40%的资源负载,平均每日的数据变化率是2.8%,每周数据变化率是20%


5)备份策略,1周一次全量备份,增量备份周期间隔最小15分钟。


2.4 GaussDB(for openGauss)可靠性设计


这部分内容基于不同的服务,分别进行介绍。首先介绍CN故障管理。当CMA检测到CN状态异常时上报CMSCMS判断CN故障且25未恢复,则需要隔离该CN,下发命令给CMA执行对CN的剔除动作。如果正在通过故障CN执行的业务失败,在检测CN的隔离期,通过JDBC发往该CN的新连接会失败。故障的处理方式有两点,一是JDBC定期查询可用的CN,并分配连接给这些可用的CN;二是CN修复后加入集群,并可以接受新的连接请求。


再来介绍DN故障管理,DN故障管理和CN故障管理类似,也是依托CMS服务的管理,通过CMA上报的故障检测内容,最终由CMS执行相应的故障管理策略。故障检测大致分为四种,一是传统的心跳超时检测,一般是6秒;二是进程down、磁盘故障、端口故障、网卡故障等问题;三是进程僵死,50秒没有反应;四是反复重启,10分钟内重启超过6次。这些情况都会被判定为DN故障。CMS作出如上判断后,会执行故障管理策略,如果单个备份副本故障,不会影响业务;主副本故障,备副本提升为主副本接管业务;单分片任意2副本故障,该分片故障。如果存活的是主副本,则可读不可写。如果存活的是备副本,则该分片不可读写;如果3副本全部故障,该分片故障。

CMS故障管理,CMS作为服务的管理者也是有可能出现故障的。如果CMS主故障,通过ETCD仲裁选主,正常选主期间不影响集群提供读写业务,这个过程一般会花费10秒。如果CMS备故障,不会影响CMS服务,也不会影响数据库集群提供读写服务。但是,如果CMS主副全部故障,集群节点的监控进程CMA无法正常连接CMS主,会有两种可选的处理方式,一是CMA杀掉本节点上的实例,不再提供读写服务;而是CMA不对本节点实例进行干预,当前集群可提供读写服务。默认情况下是采取后者。


ETCD故障管理,通过上面的介绍,我们知道全局事务IDSequence会依赖ETCD存储,同时CMS自身仲裁和CMS对其他数据库组件的仲裁也会依赖ETCD。当ETCD发生故障时,如果是主TECD故障,会触发重新选主逻辑。如果ETCD全故障或者故障半数以上,主CMS将为备,全局无主CMS,等价于CMS全故障。接下来讲修复过程,如果是少数派故障,可自动修复;如果是多数派故障,就需要人工手动修复。

最后,讲一下监控告警,GaussDB(for openGauss)的监控告警指标基本上涵盖了所有的常见因素,包括VMCPU、内存等)、性能数据(IOQPS/TPS等)、连接(登入登出次数)、SQL(次数、时间、分布等)。集群运维告警也支持集群健康告警、HA告警、内核告警。


2.5 GaussDB(for openGauss)在线升级


GaussDB(for openGauss)在线升级方案采取了灰度升级和热补丁方式,其中,灰度升级是节点级滚动升级,基本上适用于所有的集群数据库组件包括CNDNGTMCMS等。另外就是热补丁方式,原理的话是指令级跳转,业务零中断。在函数的入口处加入跳转指令,当函数备调用时,跳转到补丁区,执行补丁函数。



2.6 GaussDB(for openGauss)第三方运维监控


GaussDB(for openGauss)支持第三方运维监控的对接,因为实际业务场景中,很多大公司都有自己的监控平台,因此,他们更多的是希望将监控数据同步到自己的监控系统中,而不是使用一套新的监控平台。这一点GaussDB(for openGauss)也是支持的,数据库引擎上报指标到CES,配置CES的转储功能,指标数据转储到DMS,然后业务方订阅消费DMS就完成了监控数据的对接。

结尾


本文整理自数据库GaussDB系列技术直播 GaussDB(for openGauss)华为消费者云优秀实践,主要介绍了 GaussDB(for openGauss) 作为云数据库服务结合华为消费者云的产品形态和功能特性。相信大家通过本文的介绍对 GaussDB(for openGauss) 也有了非常深刻的认识和了解。








本文整理自【内容共创系列】IT人加薪新思路,认证华为云签约作者,赢取500元稿酬和流量扶持!


活动链接:https://bbs.huaweicloud.com/blogs/293957


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。