生哥
华为云数仓技术专家
读完需要
速读仅需 8 分
通过本文可以系统全面地了解GaussDB(DWS)弹性伸缩能力。
GaussDB(DWS)弹性伸缩能力非常全面,既支持硬件规格的纵向升配、降配,也支持集群规模的横向扩展、收缩,同时还支持集群拓扑结构的重构,通过全面了解各个功能的约束和适用场景,可以方便用户做数仓规划,业务调整,使用一个高扩展、高性能、低成本的数据分析服务。
弹性伸缩是云服务一个非常重要的特性,可以使云服务根据算力诉求和资源负荷情况调整计算和存储资源配置,达到性能最优和成本最低。
一般分布式架构软件弹性伸缩都涉及如下几个维度:
Scale Out也就是横向扩展,向外扩展
Scale out代表分布式计算的能力,通过在原有系统上增加节点来扩展存储能力和计算能力。对于GaussDB(DWS)数仓来说就是扩展集群规模。为了不出现木桶效应,要求新扩的机器硬件配置和老集群一致。
Scale In 横向收缩
与scale out对应的就是scale in 横向收缩,通过在原有系统上等比收缩节点来完成收缩存储能力和计算能力。由于GaussDB(DWS)数仓是以安全环为粒度部署的,因此需要以安全环为单位来收缩,安全环到底是什么,后面在介绍GaussDB(DWS)拓扑结构时会讲到。
Scale up代表以主机或机箱式为主的扩展CPU或内存存储的能力。通过在原有系统上提升硬件配置(如磁盘、内存、CPU、网卡等),来提升存储能力和计算能力。对于数仓来说就是升级硬件配置,升级有些硬件配置可能需要升级操作系统。
与scale up对应的就是scale down纵向收缩,通过在原有系统上降低硬件配置来达到缩减成本的目的。
GaussDB(DWS)包括标准数仓
、实时数仓
、IoT数仓
产品形态,都是存算一体的分布式架构,具备着多样的弹性伸缩能力,可以通过升降硬件配置(如磁盘、内存、CPU、网卡等)来调整存储能力和计算能力,也可以通过横向扩展和收缩分布式节点来调整存储和计算能力,还可以通过集群resize同时做横向扩展、纵向扩展,并且同时调整集群的拓扑结构。

要想充分理解GaussDB(DWS)的弹性伸缩能力,首先需要了解GaussDB(DWS)的集群拓扑结构。如下是GaussDB(DWS)的简单的ECS+EVS部署结构:
ECS提供计算资源,包括CPU、内存配置,DWS数据库实例(CN、DN等)都部署在ECS上;
EVS提供存储资源,每个DN都会挂载一块EVS云盘;
而组成DWS集群的所有ECS节点都部署在同一个VPC内部,提供高速网络通道。
部署在在ECS上的所有数据库实例逻辑上组成一个分布式的MPPDB架构集群,对外提供数据分析处理能力。

了解了GaussDB(DWS)集群拓扑后,就能很容易理解GaussDB(DWS)的弹性伸缩功能,目前GaussDB(DWS)弹性伸缩能力主要包括:弹性磁盘扩容
,弹性变更规格
,集群扩容
,集群缩容
,集群调整大小
,增删CN
等,详细的功能介绍和使用场景如下。

弹性磁盘扩容是指调整当前集群的所有的ECS节点上挂载的所有EVS磁盘大小,主要针对需要快速调整磁盘扩容的需求。
仅支持磁盘扩容,不支持缩容。
磁盘扩容是轻量级操作,不涉及数据搬迁,通常会在5-10分钟内完成,选择在业务低峰期进行存储扩容。
弹性磁盘扩容支持GaussDB(DWS)标准数仓,实时数仓,IoT数仓的EVS盘规格。集群版本在8.0.1.300及以后版本支持。
用户可以在GaussDB(DWS)控制台“集群管理>集群列表>更多>规格变更>弹性磁盘扩容”找到该功能。
🔻GaussDB(DWS)弹性磁盘扩容示意图如下🔻


弹性规格变更是指调整当前集群的节点规格,主要针对CPU、内存两种资源的变更。适用于需要快速调整CPU以及内存规格的需求。
规格是指不同数量的CPU和内存的一种组合,例如:dwsx.16xlarge(CPU:64 Memory:512G )。
弹性规格变更是轻量级操作,不涉及数据搬迁,通常会在5-10分钟内完成,选择在业务低峰期进行。
弹性规格变更支持GaussDB(DWS)标准数仓、实时数仓、IoT数仓的EVS规格。集群版本在8.1.1.300及以后版本支持。
用户可以在GaussDB(DWS)控制台“集群管理>集群列表>更多>规格变更>弹性规格变更”找到该功能。
🔻GaussDB(DWS)弹性变更规格示意图如下🔻


集群扩容是分布式MPPDB架构横向扩展的典型场景,通过添加对等同构的节点到当前集群来完成集群规模横向扩展的能力。目前GaussDB(DWS)属于存算一体架构,因此集群扩容同时扩容了计算能力和存储能力。
为了扩容后集群内各节点负载均衡,性能最优,集群扩容会进行元数据复制和数据重分布,把数据重新均匀分布到新节点,因此集群扩容耗时根据用户的数据库对象数量和数据量正相关。同时为了架构可靠性,新扩容的节点会自动组织成环,因此每次扩容至少扩容3个节点。
🔻GaussDB(DWS)集群扩容的原理如下🔻
<<<左划查看更多<<<
8.1.1版本以后支持了在线扩容。在线扩容过程中,表重分布期间用户可以对该表执行插入、更新、删除,但重分布过程仍然会短时间阻塞用户的数据更新操作,会影响用户语句的执行性能。扩容重分布过程会消耗大量的CPU和IO资源,因此会对用户作业性能影响较大,用户应该尽可能在停止业务情况下或业务轻载的情况下执行扩容重分布。用户也可以考虑分段扩容重分布策略,在系统负载很小的情况下采用高并发进行扩容重分布,在系统负载大的情况下停止扩容重分布或采用低并发进行扩容重分布。
集群扩容分为分段扩容和一键式扩容两种操作方式。
分段扩容把扩容操作分成添加主机,扩容,数据重分布三个阶段,用户可分段操作,把变更风险和业务影响降低到最低;
直接扩容是一键式操作,用户操作便捷度更高。
特点 | 业务影响 | |
|---|---|---|
| 分段扩容 | 把扩容操作分成添加主机,扩容,数据重分布三个阶段,用户可分段操作 | 把变更风险和业务影响降低到最低 |
| 一键式扩容 | 一键式操作,自动做DWS主机发放,扩容添加节点和数据重分布 | 用户操作便捷度更高 |
GaussDB(DWS)集群安全环
集群扩容和缩容都和安全环相关,安全环是指DN多副本横向部署的最小主机集合。安全环主要作用是故障隔离。环内主机出现故障,故障不会扩散到环外。
GaussDB(DWS)属于主备从架构,因此最小安全环节点数为3个节点。环内出现故障时,对环外无影响,对整个集群的影响的节点范围最小(3节点),对环内每个节点的影响为1/(N-1),即1/2。极端场景下整个集群是一个安全环。环内出现故障,对整个集群的影响的节点范围最大(整个集群),对环内每个节点的影响最小,为1/(N-1)。一种常见的做法是N+1成环,每个节点把他的N个备机均匀分散部署到环内的其余N个节点上。环内出现故障时,对整个集群的影响的节点范围为N+1,对环内每个节点的影响为1/N。
🔻GaussDB(DWS)典型N+1安全环示意图🔻


相对于集群扩容,集群缩容是分布式MPPDB架构横向收缩的典型场景,通过缩减当前集群部分节点来完成收缩集群规模的能力。集群缩容会同时收缩计算能力和存储能力。
GaussDB(DWS)集群物理上由多个ECS节点组合,而为了提升架构可靠性,多个ECS节点(一般3个)又会组成一个逻辑安全环,多个安全环就组成了GaussDB(DWS)集群。而缩容则是以安全为为单位缩减。
集群缩容涉及数据搬迁,会把被缩减节点上的数据重分布到剩余节点上,因此缩容耗时根据用户的数据库对象数量和数据量正相关。
集群缩容支持GaussDB(DWS)标准数仓、实时数仓、IoT数仓,在线缩容在8.1.1.300版本开始支持,在线缩容过程中,表重分布期间用户可以对该表执行插入、更新、删除,但重分布过程仍然会短时间阻塞用户的数据更新操作,会影响用户语句的执行性能。缩容重分布过程会消耗大量的CPU和IO资源,因此会对用户作业性能影响较大,用户应该尽可能在停止业务情况下或业务轻载的情况下执行缩容重分布。
🔻GaussDB(DWS)集群缩容原理如下🔻
<<<左划查看更多<<<

增删CN属于另类的GaussDB(DWS)数据库实例收缩,可以扩展和收缩数据库CN实例。
CN全称协调节点(Coordinator Node)。是和用户关系最密切也是GaussDB(DWS)内部非常重要的一个组件,它负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。
CN是外部应用的接口,CN的并发能力直接决定了业务的并发度。因此可以通过增加CN来扩展分布式能力,提升业务并发度。
同时由于CN是多主多活架构,为了保证数据一致性,如果部分CN数据损坏,DDL业务将受到阻塞,可以通过删除故障CN来快速恢复DDL业务。
GaussDB(DWS)标准数仓、实时数仓、IoT数仓支持增删CN功能,在8.1.1及以后版本支持。
增加CN过程中会同步元数据,因此增加CN耗时和元数据数量正相关,8.1.3版本支持在线增删CN,增加CN过程中DDL业务会短暂阻塞(不报错),其余业务不受影响。
<<<左划查看更多<<<

集群调整大小也叫集群resize,是一个非常全面的功能,它能满足你所有的弹性伸缩需求,它既支持集群规模的scale out、scale in,也支持硬件规格的scale up,scale down,同时支持集群拓扑结构的重组。
GaussDB(DWS) resize基于多nodegroup和数据重分布实现,resize过程中会按照新的资源诉求(硬件升降配)和集群规划(集群规模扩缩)部署一套新集群,然后和老集群做数据重分布,数据迁移完成后,会把业务迁移到新集群,然后释放老集群。
集群resize涉及数据搬迁,会把老集群节点上的数据重分布到新集群节点上(老集群节点上数据还在),因此集群resize耗时根据用户的数据库对象数量和数据量正相关。
GaussDB(DWS)标准数仓支持集群resize功能,需要agent升级到8.2.0.2版本后才支持。目前resize期间老集群只支持只读业务。后续会提供在线能力。
用户可以在GaussDB(DWS)控制台“集群管理>集群列表>更多>规格变更>集群调整大小”找到该功能。
🔻GaussDB(DWS)集群resize原理如下🔻


综上,对GaussDB(DWS)弹性扩展能力有了初步了解,但是各位看官可能会对他们的功能约束的差异和适用场景产生疑惑,那么通过如下对比就可以一目了然。
<<<左划查看更多<<<
往期精彩回顾
戳一戳,了解更多华为云GaussDB(DWS)





