【云驻共创】1小时深度解析集群高可用设计及监控告警
前言
集群中的高可用性很重要的一环,在高可用下对应的运维也是不可或缺的部分,那么本篇博客就深度的解析了DWS集群高可用设计以及监控告警的具体的概述与基础演示,让大家快速了解以及使用DWS。
DWS集群高可用设计与监控告警
DWS是数据仓库服务是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS) 是基于华为融合数据仓库GaussDB产品的云原生服务,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。
GaussDB(DWS) 提供了简单易用的Web管理控制台,帮助您快速创建数据仓库集群,轻松执行数据仓库管理任务。
我们今天会针对一下两点进行具体的分析与讲解。
- GaussDB(DWS)高可用设计
- GaussDB(DWS) )监控告警
理想的数仓应具备什么特点?
高性能、高可用、性价比、可伸缩、资源共享等。
- 高性能,这个是必须存在的,如果查询一个SQL语句都很慢的话后面的一切都将会没有意义,所以放在第一位。
- 高可用,SQL查询出来了,但是每次执行完毕后都要二次准备资源,导致休息好久这也肯定不行,所以还需要高可用。
- 既然上云了,那么肯定需要考虑性价比是否划算,是否可伸缩,资源共享等等特点。
现实的数仓环境
我们先来看看常见的数仓问题。
- 硬件故障种类多样,成因复杂,难以检测。
- 多数硬件故障与数仓系统可靠性强相关,如磁盘、RAID卡、内存、背板、CPU等。
- 硬件故障对于大型分布式系统而言是常态。
- 硬件的各类资源都是有限的。
- 软件缺陷同样不可避免,包括OS,文件系统,数仓本身等。
- 硬件资源有限引发的资源争抢。
这些问题整体上就会造成我们的数仓其实跑在了一个不太可靠的环境之下。
那么问题来了,以上很多的问题是无法避免的,如何能在这种问题频发的情况下给数仓提供一个最基础的高可用保障,构建可靠的系统,就是高可用这里需要考虑的问题了!
1、GaussDB(DWS)高可用设计
首先我们先创建一个初始化好的集群,可以看到【集群状态】当前的状态是可用的,但是当出现异常后对应的状态就会随之改变。集群的基础信息都会在这个页面显示。
DWS集群架构:用户视角
这里以用户视角的方式查看了整个集群的架构,用户通过计算机的客户端链接到我们的数仓之后,执行了一条【insert】命令,通过负载均衡(如果无默认则需要单独绑定)的组件分配到对应的【协调节点(CN)】中,有协调节点CN通过一定的计算,判断应该发送到那个【数据节点(DN)】中。这里一般情况下DN的数量会远远多于CN的毕竟要保障高可用。这里的负载均衡就是一个安全的保障,多个CN保障安全性,当一台CN出现异常则会发布给其它的CN来保障高可用,DN节点亦是同理。
多CN对等架构,同时对外提供服务,DN主备从架构。
一组DN包括一个主DN、一个备DN和一个从备DN (DN Sharding)
- 主备的日志和数据强同步。
- 主和备各有一份完整的数据,从备上不存储数据。
- 备DN故障后,数据将发送给从备,保证数据双写和事务提交。
主DN故障后,自动将备DN升主继续提供服务。
相对的双写,在最大程度上保障数库的可用性。
DN异常情况
在这里可以看到,当DN主挂掉之后会转到其它的节点上,可以在下图中看到,DN1挂到后,在节点2的原DN1备变成了DN1主,对应的可以看到节点2DN1主的使用率增高。
主从切换,示意图。
当DN1修复后,我们可以看到节点2的DN1依然是主,他会想DN1备进行备份。
故障恢复后的DN1主向备同步数据
Coordinator高可用
可以在下图中分析出,SQL的DML语句可以在任意的CN中获取相同的结果。DDL语句必须在所有的CN上执行成功。
如果某个CN出现异常就会导致用户的DDL语句无法执行。
剔除故障的CN后,就可以执行DDL语句了。
2、GaussDB(DWS) )监控告警
如何判断集群发生异常?
故障检测、亚健康检测、资源和数据库监控告警等。
集群概览
在集群概览中我们可以直接看到【集群状态】,如果出现【追赶】、【降级】的情况改变对应的显示状态。
实例状态变化中的【24hDN主备切换】【24hccn迁移数】这个值可以看到在24小时内是否出现异常,如果出现则肯定会伴随对应的切换次数改变。
节点监控
这里将节点的CPU使用率、内存使用率、磁盘使用率,并且在监控设置中增加显示内容。
SQL探针
这里提供了SQL探针功能,创建完毕SQL探针后可以直接控制探针的开启状态,采集率的单位是秒,根据实际的SQL情况来判断设置即可。
警告管理
告警管理页面中有对应的所有告警管理的数量统计,在右侧有一个告警的数量限制,很直观的就能看到当日的告警情况。
节点盘使用率这里是时长会出现告警的位置,我们可以根据具体业务逻辑判断对应的设置。
DWS告警管理
告警管理共计19个默认和1个自定义类型的警告类别,下面我附带了全部20个警告类别的信息,希望能直观的展示给大家。
告警类别 |
告警名称 |
告警级别 |
告警描述 |
---|---|---|---|
默认 |
节点CPU使用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群任意节点的CPU使用率(系统+用户)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的CPU使用率(系统+用户)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点系统CPU使用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群任意节点的系统CPU使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的系统CPU使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点系统磁盘使用率超阈值 |
>85% 紧急,>80%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的系统盘(/)使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的系统盘(/)使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点日志盘使用率超阈值 |
>85% 紧急,>80%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的日志盘(/var/chroot/DWS/manager)使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的日志盘(/var/chroot/DWS/manager)使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点数据盘使用率超阈值 |
>85% 紧急,>80%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点系统盘I/O利用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群任意节点的系统盘(/)I/O利用率(util)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的系统盘(/)I/O利用率(util)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点日志盘I/O利用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群任意节点的日志盘(/var/chroot/DWS/manager)I/O利用率(util)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的日志盘(/var/chroot/DWS/manager)I/O利用率(util)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点数据盘I/O利用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])I/O利用率(util)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])I/O利用率(util)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点系统盘时延超阈值 |
重要 |
DMS告警模块在指定周期内,检测到集群任意节点的系统盘(/)I/O延时(await)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的系统盘(/)I/O延时(await)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点日志盘时延超阈值 |
重要 |
DMS告警模块在指定周期内,检测到集群任意节点的日志盘(/var/chroot/DWS/manager)I/O延时(await)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的日志盘(/var/chroot/DWS/manager)I/O延时(await)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点数据盘时延超阈值 |
重要 |
DMS告警模块在指定周期内,检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])I/O延时(await)超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])I/O延时(await)低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点系统盘inode使用率超阈值 |
>95% 紧急,>90%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的系统盘(/)inode使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的系统盘(/)inode使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点日志盘inode使用率超阈值 |
>95% 紧急,>90%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的日志盘(/var/chroot/DWS/manager)inode使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的日志盘(/var/chroot/DWS/manager)inode使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
节点数据盘inode使用率超阈值 |
>95% 紧急,>90%重要 |
DMS告警模块在指定周期内,检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])inode使用率超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;检测到集群任意节点的数据盘(/var/chroot/DWS/data[n])inode使用率低于当前设定阈值,且抑制条件不满足时,DMS告警模块将消除该告警。 |
默认 |
查询语句触发下盘量超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群中执行的SQL语句触发结果集下盘,下盘量超过当前设定阈值,且抑制条件不满足时,DMS告警模块将触发该告警;该告警为针对每个SQL语句下盘量的告警,因此无法自动消除,需要用户在处理完该告警所涉及的SQL语句后手动消除该告警项。 |
默认 |
查询语句堆积数量超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到集群中处于等待状态的SQL语句数量超过当前设定阈值时,DMS告警模块将触发该告警;检测到集群中处于等待状态的SQL语句数量低于当前设定阈值时,DMS告警模块将消除该告警。 |
默认 |
集群默认资源池队列阻塞 |
紧急 |
DMS告警模块在指定周期内,检测到集群的默认资源池队列发生阻塞,且抑制条件不能满足时,DMS告警模块将触发该告警;检测到集群的默认资源池队列不再发生阻塞,DMS告警模块将消除该告警。 |
默认 |
集群的sql探针使用率超阈值 |
紧急 |
DMS告警模块在指定周期内,检测到任意集群的某个主机上出现sql探针耗时超过阈值,且抑制条件不能满足时,DMS告警模块将触发该告警;检测到任意集群的某个主机上不再出现sql探针耗时超过阈值时,DMS告警模块将消除该告警。
说明:
该告警仅8.1.1.300及以上版本支持,历史版本需要联系技术支持人员升级dms-agent为8.1.3版本后支持。 |
默认 |
集群中存在持有表锁过长的vacuum full操作 |
重要 |
DMS告警模块在指定周期内,检测到集群中存在长时间运行的vacuum full操作,并且阻塞了其他操作。其他业务SQL存在锁等待情况,且抑制条件不能满足时,DMS告警模块将触发该告警;检测到集群的vacuum full操作没有造成锁等待,DMS告警模块将消除该告警。
说明:
该告警仅dms-agent升级到8.2.0.100及以上版本支持。 |
自定义 |
用户自定义阈值告警名称 |
用户自定义告警级别 |
用户自定义阈值告警描述。 |
告警订阅(实用功能)
告警的时候我们需要主动去查阅这点很麻烦,也可能由于时间耽误并没有及时查阅,这个时候我们的告警订阅功能就会大显身手了。
用户可通过订阅GaussDB(DWS) 的告警通知,在特定告警级别告警时收到短信、电子邮件或应用等方式的通知消息。
创建订阅
- 登录GaussDB(DWS) 管理控制台。
- 在左侧导航树,单击“告警管理”,切换至“订阅”页签。
- 在页面左上角单击“创建订阅”按钮。
- 在“订阅设置”区域,设置订阅基本信息及告警过滤。
- “订阅告警列表”区域显示系统根据订阅设置筛选出的告警。在“消息通知主题名称”下拉框中,选择一个消息通知主题。
- 确认无误后,单击“确定”,完成创建订阅。
告警订阅:最佳实践配置
以下的警告级别都是【紧急】。
1、节点数据盘使用率
2、节点CPU使用率
3、查询语句触发下盘量
4、集群的SQL探针耗时
5、集群默认资源池队列阻塞
智能运维
智能运维是GaussDB(DWS)常驻运维工具,可帮助用户智能执行运维任务。智能运维会通过集群负载情况,选择合理时间窗、并发度完成用户指定的任务,在运维任务执行过程中,智能运维将时刻关注用户业务的变化,及时调整运维任务执行策略,以减轻对用户业务的影响。智能运维支持周期型和单次型任务的创建,执行时间窗可按照不同用户业务负载定制化。
智能运维具备一定的高可用性,在集群异常的情况下,智能运维将重新执行失败的运维任务,若由于集群异常导致运维任务部分步骤无法完成,智能运维将尝试跳过失败的步骤,以节省用户运维时间窗开销。
智能运维界面主要由两部分构成:
- 运维任务公共配置:目前仅包含“用户表VacuumFull运维任务最大并发数”,该配置应用于每个用户表VacuumFull的运维任务。
- 进行中的运维任务:显示正在运行的运维任务信息
- 用户频繁创建、删除表,导致系统表膨胀严重,可对系统表执行Vacuum。
- 用户频繁执行UPDATE、DELETE语句,导致用户表膨胀严重,可对用户表执行Vacuum/Vacuum Full。
3、总结
本文主要了解了高可用机制的原理以及数仓的监控告警。
在原理中我们通过图片流程示例的方式展示了异常情况下CN的切换方式以及修复后的主备同步。
在监控告警中我们对DWS告警管理做了详细的介绍,并且有一个详细的告警的类别列表供大家了解。
希望本文能帮你您更好的了解DWS集群,并且在工作上能帮助到大家。
本文参与华为云社区【内容共创】活动第22期。
任务18:理论+实操,轻松解决云数仓常见问题 1小时深度解析集群高可用设计及监控告警
- 点赞
- 收藏
- 关注作者
评论(0)