GaussDB(DWS)弹性伸缩系统性介绍
弹性伸缩是云服务一个非常重要的特性,可以使云服务根据算力诉求和资源负荷情况调整计算和存储资源配置,达到性能最优和成本最低。
一般分布式架构软件弹性伸缩都涉及如下几个维度:
- Scale Out也就是横向扩展,向外扩展
Scale out代表分布式计算的能力,通过在原有系统上增加节点来扩展存储能力和计算能力。对于DWS数仓来说就是扩展集群规模。为了不出现木桶效应,要求新扩的机器硬件配置和老集群一致。
- Scale In 横向收缩
与scale out对应的就是scale in 横向收缩,通过在原有系统上等比收缩节点来完成收缩存储能力和计算能力。由于DWS数仓是以安全环为粒度部署的,因此需要以安全环为单位来收缩,安全环到底是什么,后面在介绍DWS拓扑结构时会讲到。
- Scale Up也就是纵向扩展,向上扩展
Scale up代表以主机或机箱式为主的扩展CPU或内存存储的能力。通过在原有系统上提升硬件配置(如磁盘、内存、CPU、网卡等),来提升存储能力和计算能力。对于数仓来说就是升级硬件配置,升级有些硬件配置可能需要升级操作系统。
- Scale Down 纵向收缩
与scale up对应的就是scale down纵向收缩,通过在原有系统上降低硬件配置来达到缩减成本的目的
GaussDB(DWS)包括标准数仓(DWS2.0)、实时数仓、IoT数仓产品形态,都是存算一体的分布式架构,具备着多样的弹性伸缩能力,可以通过升降硬件配置(如磁盘、内存、CPU、网卡等)来调整存储能力和计算能力,也可以通过横向扩展和收缩分布式节点来调整存储和计算能力,还可以通过集群resize同时做横向扩展、纵向扩展,并且同时调整集群的拓扑结构。
集群拓扑详解
要想充分理解DWS的弹性伸缩能力,首先需要了解DWS的集群拓扑结构。如下是DWS的简单的ECS+EVS部署结构:
- ECS提供计算资源,包括CPU、内存配置,DWS数据库实例(CN、DN等)都部署在ECS上;
- EVS提供存储资源,每个DN都会挂载一块EVS云盘;
- 而组成DWS集群的所有ECS节点都部署在同一个VPC内部,提供高速网络通道。
- 部署在在ECS上的所有数据库实例逻辑上组成一个分布式的MPPDB架构集群,对外提供数据分析处理能力。
如果对GaussDB(DWS)集群拓扑感兴趣,可以参见之前的博文GaussDB(DWS)集群拓扑详解。
了解了DWS集群拓扑后,就能很容易理解DWS的弹性伸缩功能,目前DWS弹性伸缩能力主要包括:弹性磁盘扩容,弹性变更规格,集群扩容,集群缩容,集群调整大小,增删CN等,详细的功能介绍和使用场景如下。
弹性磁盘扩容
- 弹性磁盘扩容是指调整当前集群的所有的ECS节点上挂载的所有EVS磁盘大小,主要针对需要快速调整磁盘扩容的需求。
- 仅支持磁盘扩容,不支持缩容。
- 磁盘扩容是轻量级操作,不涉及数据搬迁,通常会在5-10分钟内完成,也不涉及服务重启,不影响业务,建议选择在业务低峰期进行存储扩容。
- 弹性磁盘扩容支持GaussDB(DWS)标准数仓,实时数仓,IoT数仓的EVS盘规格。集群版本在8.0.1.300及以后版本支持。
- 用户可以在DWS控制台“集群管理>集群列表>更多>规格变更>弹性磁盘扩容”找到该功能。
DWS弹性磁盘扩容示意图如下:
弹性变更规格
- 弹性规格变更是指调整当前集群的节点规格,主要针对CPU、内存两种资源的变更。适用于需要快速调整CPU以及内存规格的需求。
- 规格是指不同数量的CPU和内存的一种组合,例如:dwsx.16xlarge(CPU:64 Memory:512G )。
- 弹性规格变更是轻量级操作,不涉及数据搬迁,通常会在5-10分钟内完成,但是过程中会重启一次,涉及业务分钟级别中断,建议选择在业务低峰期进行。
- 弹性规格变更支持GaussDB(DWS)标准数仓、实时数仓、IoT数仓的EVS规格。集群版本在8.1.1.300及以后版本支持。
- 用户可以在DWS控制台“集群管理>集群列表>更多>规格变更>弹性规格变更”找到该功能。
- 如果对弹性规格变更的的操作及原理感兴趣,可以参见一文读懂DWS“规格变更”。
DWS弹性变更规格示意图如下:
集群扩容
集群扩容是分布式MPPDB架构横向扩展的典型场景,通过添加对等同构的节点到当前集群来完成集群规模横向扩展的能力。目前DWS属于存算一体架构,因此集群扩容同时扩容了计算能力和存储能力。
为了扩容后集群内各节点负载均衡,性能最优,集群扩容会进行元数据复制和数据重分布,把数据重新均匀分布到新节点,因此集群扩容耗时根据用户的数据库对象数量和数据量正相关。同时为了架构可靠性,新扩容的节点会自动组织成环,因此每次扩容至少扩容3个节点。
DWS集群扩容的原理如下:
8.1.1版本以后支持了在线扩容。在线扩容过程中,DWS服务不重启,持续对外提供服务。表重分布期间用户可以对该表执行插入、更新、删除,但重分布过程仍然会短时间阻塞用户的数据更新操作,会影响用户语句的执行性能。扩容重分布过程会消耗大量的CPU和IO资源,因此会对用户作业性能影响较大,用户应该尽可能在停止业务情况下或业务轻载的情况下执行扩容重分布。用户也可以考虑分段扩容重分布策略,在系统负载很小的情况下采用高并发进行扩容重分布,在系统负载大的情况下停止扩容重分布或采用低并发进行扩容重分布。
分段扩容把扩容操作分成添加主机,扩容,数据重分布三个阶段,用户可分段操作,把变更风险和业务影响降低到最低;
直接扩容是一键式操作,用户操作便捷度更高。
|
特点 |
业务影响 |
分段扩容 |
把扩容操作分成添加主机,扩容,数据重分布三个阶段,用户可分段操作 |
把变更风险和业务影响降低到最低 |
一键式扩容 |
一键式操作,自动做DWS主机发放,扩容添加节点和数据重分布 |
用户操作便捷度更高 |
DWS集群安全环
集群扩容和缩容都和安全环相关,安全环是指DN多副本横向部署的最小主机集合。安全环主要作用是故障隔离。环内主机出现故障,故障不会扩散到环外。
GaussDB属于主备从架构,因此最小安全环节点数为3个节点。环内出现故障时,对环外无影响,对整个集群的影响的节点范围最小(3节点),对环内每个节点的影响为1/(N-1),即1/2。极端场景下整个集群是一个安全环。环内出现故障,对整个集群的影响的节点范围最大(整个集群),对环内每个节点的影响最小,为1/(N-1)。一种常见的做法是N+1成环,每个节点把他的N个备机均匀分散部署到环内的其余N个节点上。环内出现故障时,对整个集群的影响的节点范围为N+1,对环内每个节点的影响为1/N。
DWS典型N+1安全环示意图:
集群缩容
- 相对于集群扩容,集群缩容是分布式MPPDB架构横向收缩的典型场景,通过缩减当前集群部分节点来完成收缩集群规模的能力。集群缩容会同时收缩计算能力和存储能力。
- DWS集群物理上由多个ECS节点组合,而为了提升架构可靠性,多个ECS节点(一般3个)又会组成一个逻辑安全环,多个安全环就组成了DWS集群(关于安全环详细参见GaussDB(DWS)集群拓扑详解)。而缩容则是以安全为为单位缩减,优先缩容集群尾部的安全环。
- 集群缩容涉及数据搬迁,会把被缩减节点上的数据重分布到剩余节点上,因此缩容耗时根据用户的数据库对象数量和数据量正相关。
- 集群缩容支持GaussDB(DWS)标准数仓、实时数仓、IoT数仓,在线缩容在8.1.1.300版本开始支持,在线缩容过程中,DWS服务不重启,持续对外提供服务。表重分布期间用户可以对该表执行插入、更新、删除,但重分布过程仍然会短时间阻塞用户的数据更新操作,会影响用户语句的执行性能。缩容重分布过程会消耗大量的CPU和IO资源,因此会对用户作业性能影响较大,用户应该尽可能在停止业务情况下或业务轻载的情况下执行缩容重分布。
- 详细的集群缩容功能介绍及原理说明参见GaussDB(DWS)华为云数仓使用实践–预算有限?华为云数仓集群在线缩容帮你解决烦劳。
DWS集群缩容原理如下:
增删CN
- 增删CN属于另类的DWS数据库实例收缩,可以扩展和收缩数据库CN实例。
- CN全称协调节点(Coordinator Node)。是和用户关系最密切也是DWS内部非常重要的一个组件,它负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。
- CN是外部应用的接口,CN的并发能力直接决定了业务的并发度。因此可以通过增加CN来扩展分布式能力,提升业务并发度。
- 同时由于CN是多主多活架构,为了保证数据一致性,如果部分CN数据损坏,DDL业务将受到阻塞,可以通过删除故障CN来快速恢复DDL业务。
- DWS标准数仓、实时数仓、IoT数仓支持增删CN功能,在8.1.1及以后版本支持。
- 增加CN过程中会同步元数据,因此增加CN耗时和元数据数量正相关,8.1.3版本支持在线增删CN,增加CN过程中DWS服务不重启,持续对外提供服务,DDL业务会短暂阻塞(不报错),其余业务不受影响。
- 如果多CN的功能原理感兴趣,请参见GaussDB(DWS)中CN与业务并发度的关系详解。
集群调整大小
- 集群调整大小也叫集群resize,是一个非常全面的功能,他能满足你所有的弹性伸缩需求,他既支持集群规模的scale out、scale in,也支持硬件规格的scale up,scale down,同时支持集群拓扑结构的重组。
- DWS resize基于多nodegroup和数据重分布实现,resize过程中会按照新的资源诉求(硬件升降配)和集群规划(集群规模扩缩)部署一套新集群,然后和老集群做数据重分布,数据迁移完成后,会把业务迁移到新集群,然后释放老集群。
- 集群resize涉及数据搬迁,会把老集群节点上的数据重分布到新集群节点上(老集群节点上数据还在),因此集群resize耗时根据用户的数据库对象数量和数据量正相关。
- DWS 标准数仓支持集群resize功能,需要agent升级到8.2.0.2版本后才支持。目前resize期间老集群只支持只读业务。后续会提供在线能力。
- 用户可以在DWS控制台“集群管理>集群列表>更多>规格变更>集群调整大小”找到该功能。
- 集群resize的功能介绍和原理说明参见数据仓库之变形金刚-集群resize原理介绍。
DWS集群resize原理如下:
功能对比
综上,对DWS弹性扩展能力有了初步了解,但是各位看官可能会对他们的功能约束的差异和适用场景产生疑惑,那么通过如下表格对比就可以一目了然。
功能 |
伸缩方式 |
业务影响 |
适用范围 |
推荐指数 |
弹性磁盘扩容 |
伸缩对象:磁盘容量调整 伸缩范围:原集群的所有ECS挂载的EVS盘 |
通常会在5-10分钟内完成,也不涉及服务重启,不影响业务,但建议业务低峰期进行 |
集群版本:8.0.1.300及以后 产品形态:标准数仓、实时数仓、IoT数仓 |
☆☆☆☆☆ |
弹性变更规格 |
伸缩对象:算力调整 伸缩范围:原集群的所有ECS规格(CPU核数,内存大小) |
通常会在5-10分钟内完成,但是过程中会重启一次,涉及业务分钟级别中断,建议业务低峰期进行 |
集群版本:8.1.1.300及以后 产品形态:标准数仓、实时数仓、IoT数仓 |
☆☆☆☆☆ |
集群扩容 |
伸缩对象:磁盘容量调整、算力调整 伸缩范围:分布式架构扩展对等同构的ECS节点 |
支持在线,在线扩容过程中,DWS服务不重启,持续对外提供服务 耗时根据用户的数据库对象数量和数据量正相关。 |
集群版本:所有版本,8.1.1开始支持在线 产品形态:标准数仓、实时数仓、IoT数仓 |
☆☆☆ |
集群缩容 |
伸缩对象:磁盘容量调整、算力调整 伸缩范围:分布式架构收缩部分ECS节点 |
支持在线,在线缩容过程中,DWS服务不重启,持续对外提供服务 耗时根据用户的数据库对象数量和数据量正相关。 |
集群版本:8.1.1.300 产品形态:标准数仓、实时数仓、IoT数仓 |
☆☆☆ |
集群调整大小 |
伸缩对象:磁盘容量调整、算力调整、集群拓扑结构 伸缩范围:使用新规格(硬件规格调整),新拓扑(集群规模调整)新建集群,然后做新老集群数据重分布 |
数据库只读, 耗时根据用户的数据库对象数量和数据量正相关。 |
集群版本:agent8.2.0.2及以后版本 产品形态:标准数仓 |
☆☆☆ |
增删CN |
伸缩对象:数据库CN实例 伸缩范围:增加CN扩展业务并发度提升,删除CN快速恢复DDL业务 |
支持在线,增删CN过程中,DWS服务不重启,持续对外提供服务 |
集群版本:8.1.1版本,8.1.3开始支持在线 产品形态:标准数仓、实时数仓、IoT数仓 |
☆☆☆☆☆ |
DWS弹性伸缩应用场景
通过如上功能对比,相信大家对DWS弹性伸缩功能的基本原理和业务影响有了一定的认识,那么在具体的弹性伸缩业务诉求下使用哪种方式最优呢?下面提供了一些指导可供参考。
分类 |
弹性伸缩诉求 |
推荐弹性伸缩方式 |
业务影响评估 |
预估耗时评估 |
存储 |
存储空间不够, CPU,内存,磁盘IO非瓶颈 |
磁盘扩容 |
在线 |
不涉及数据搬迁,5-10分钟 |
存储空间太大,降本 CPU,内存,磁盘IO非瓶颈 |
创建同规格小磁盘集群,通过容灾方式把主集群迁移到备集群 |
容灾切换过程中集群只读,一般30分钟内 |
耗时与数据量正相关 |
|
算力 |
CPU或内存存在瓶颈 |
弹性规格变更(原地升降配) |
重启一次集群 |
不涉及数据搬迁,5-10分钟 |
磁盘IO存在瓶颈 |
创建同规格小磁盘集群,通过容灾方式把主集群迁移到备集群 |
容灾切换过程中集群只读,一般30分钟内 |
耗时与数据量正相关 |
|
分布式算力 & 存储 |
节点数不足导致分布式能力弱 |
扩容 |
在线(部分限制) |
涉及数据搬迁,耗时和数据量与元数量正相关 |
节点数多导致成本高 |
缩容 |
在线(部分限制) |
涉及数据搬迁,耗时和数据量正相关 |
|
拓扑结构 |
通时修改拓扑和规格诉求(DN数不一致) |
Resize |
只读 |
涉及数据搬迁,耗时和数据量与元数量正相关 |
通时修改拓扑和规格诉求(DN数一致) |
容灾迁移 |
在线(部分限制) |
涉及数据搬迁,耗时和数据量正相关 |
|
并发度不够 |
增删CN |
在线(部分限制) |
涉及数据搬迁,耗时和元数据量正相关 |
通过对DWS弹性伸缩的了解,相信大家对DWS使用不再陌生,对DWS业务规划游刃有余。
- 点赞
- 收藏
- 关注作者
评论(0)