5000字 大数据时代读书笔记_联通大数据5000台规模集群故障自愈实践

本文转载自dbaplus社群

作者介绍

余澈,中国联通大数据技术部平台组核心技术负责人,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验。管理过多个上千节点集群,擅长对外多租户平台的维护开发。信科院大数据性能测试、功能测试主力,大厂PK获得双项第一。

背景

作为运维人员,做得最多的工作就是日常巡检、故障恢复。公司集群规模越庞大,故障发生率和故障实例数也在成倍增加。每天来到公司,第一件事儿就是要看看有哪些机器坏了?坏哪儿了?集群存储还够吗?底层数据存储是否均衡?然后针对每个故障逐一解决。笔者亲身经历就是过年连懒觉都睡不成,集群故障了,一个电话过来立马清醒,然后默默地恢复故障。这样的经历我觉得每个运维人都含着泪经历过。

改变

通过采集分析Prometheus里的告警数据,利用fabric或ansible等多线程安全并发远程连接工具,执行相关角色实例的恢复工作。

7b52600e008cf589390b3ae04e92dd7d.png

fabric建立连接执行恢复命令。

999bbbe0d7d320ac657fc8b2ac12345d.png

目前集群规模将近5000台,其中两个大规模的集群节点数均为一千多台。

目前自动化恢复涉及的集群日常运维操作有:

  • 计算节点检测出使用swap交换分区,将会自动清理swap分区并关闭swap分区;

  • 计算节点检测出时钟偏差,将会自动纠偏时钟偏差;

  • Cloudera Manager 代理挂掉,将会自动重启;

  • 主机检测出有坏盘,坏盘更换完成后,自动恢复;

  • 角色实例检测出异常掉线,自动恢复上线(如NameNode、DataNode、ResourceManager、NodeManager等);

  • 集群存在多个节点多块磁盘存储剩余空间不足,自动进行磁盘级别的数据Balancer;

  • 集群存储达到阈值,自动进行节点级别的数据Balancer。

自动化恢复的适用场景很多,但一定要做到严谨地对症下药,并且要考虑清楚问题的严重性和普遍性。

以上7点自动恢复是集群常见故障,该类故障频发且影响范围较小,并不会影响集群的可用性,因此可以实施自动化恢复。

对于平台罕见故障,且该故障有一定概率会对平台造成部分功能性能影响的,最好的办法是做好告警和应急处理。

下面分享几个自动化恢复实践:

1)计算节点检测出使用swap交换分区,将会自动清理swap分区并关闭swap分区。

根据监控数据,获取swap开启的计算机点,远程连接进行swap分区关闭。

def recover_HOST_MEMORY_SWAPPING(self,list):

com=("swapoff -a")

for i in range(len(list)):

con = Connection(list[i]['ipAddress'], port=22, user=user, connect_timeout=360, forward_agent=True,

connect_kwargs={'password': self.password})

con.sudo(command=com,password=self.password,shell=False,hide='stderr',encoding='utf-8',pty=True)

con.close

2)Cloudera Manager 代理挂掉,将会自动重启。

根据监控数据,获取agent异常下线的计算节点,远程连接进行agent上线操作。

def recover_HOST_SCM_HEALTH(self,list):

com=("/opt/cm-5.13.1/etc/init.d/cloudera-scm-agent restart")

for i in range(len(list)):

con = Connection(list[i]['ipAddress'], port=22, user=user, connect_timeout=360, forward_agent=True,

connect_kwargs={'password': self.password})

con.sudo(command=com,password=self.password,shell=False,hide='stderr',encoding='utf-8',pty=True)

con.close

3)计算节点检测出时钟偏差,将会自动纠偏时钟偏差。

由于集群资源每天有将近16小时处于打满状态,容易造成集群部分计算节点负载过高,导致节点上的DN、NM掉线。这时候需要重启计算节点,但重启节点会造成机器时钟偏差,通过监控告警我们检测到了时钟偏差,接下来通过读取Prometheus中的时钟偏差节点信息,来进行时钟源同步操作。

751041abd0ec62473bd1b4c132efe146.png

具体时钟偏差恢复的代码实例如下:

from fabric import Connection

def recover_HOST_CLOCK_OFFSET(self,list):

com=["systemctl stop ntpd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值