文档章节

运维的福音,深度剖析腾讯云自动运维平台

OSC源创君
 OSC源创君
发布于 2016/11/17 15:01
字数 3264
阅读 3431
收藏 109
点赞 3
评论 7

嘉宾介绍:祝海强,腾讯高级工程师。8年数据库经历,曾就职于第九城市、返利网任高级DBA。目前负责腾讯云CDB for MySQL运维团队,对MySQL、MSSQL等数据库运维、调优诊断具有丰富的经验。

一、自动运维平台的作用

1.CDB日常维护工作

CDB即云数据库(Cloud Database),主要具有以下特点:

(1)云存储服务,是腾讯云平台提供的分布式数据存储服务

(2)完全兼容MySQL协议

(3)提供了高性能、高可靠、易用、便捷的MySQL集群服务

(4)整合了备份、扩容、迁移等工具,同时提供CDB管理台,开发者可以方便的进行登录、数据库和表的增删查改等工作

(5)现网CDB的运营数据接近3PB,接入业务包括微信红包,腾讯彩票,腾讯话费充值,饿了么,微信电影票等等

CDB基本架构:

用户在计算机房或是阿里云上,自建的MySQL通过 HAproxy或者transfer去打通,就可以导MySQL导数据到CDB里边。下图为CBD的一个基本架构:

自动运维平台日常维护CDB的工作:

  • 设备初始化及大量的实例申请
  • 主机硬件故障、过保设备下线、机房裁撤
  • 大量业务扩容支持/低负载成本优化
  • 实例主从切换、备份、高负载等case处理

2.扩容/缩容

由于腾讯云正在飞速发展,目前大概已有六万多的实例,靠人工去进行升级实例、迁移、切换是无法支持的,所以引入了自动化的运维平台。微信红包就是一个典型的例子,春节的量非常大,一扩容可能就是上千台机器,而过完年以后就需要缩容。这些工作量都是非常大的。

二、平台四大模块

1.资源管理模块

(1)设备初始化持续部署

  • 不同机型环境的初始化

不同的机型做了哪些事情或者进行了哪些参数的调优。

  • MySQL、TGW、cdb_report、AJS等基础服务安装

包括 MySQL server 在机器上的部署,还有TGW(异常容灾切换)、cdb_report(性能采集agent)、AJS(任务运行agent)这些主键的安装,用来维护后端发起的迁移任务。这些主键将会在后面讲到。

(2)资源监控

  • 根据近3个月的申请量监控各规格实例的buffer情况
  • 实时分析异常指标进行诊断作相应处理
  • 资源数据可视化为月度报备设备的核心指标

一是在不停的扩容和缩容的过程中需要进行监控。例如运维人员不在的情况下线上的实例少于设置的阀值,用户可能在购买实例的时候遇到断货的情况,资源监控的作用就是当实例数量少于阀值的时候自动从buffer池里拿出来上架。

还有就是统计每个月新增机器的数量。比如每个月消化了一百台机器,那么下个月报废设备的时候,在不考虑特殊服务的情况下就是增加一百台机器的量,资源监控做出每个月甚至每天消耗机器统计的报表。

(3)资源循环

  • 同地区集群之间资源共享
  • 已迁移和已下线实例自动回收机制

例如用户购买实例,如果业务下线了需要退掉实例,资源管理模块会对用户下线的实例进行自动回收。

2.运维操作模块

人工运维的时候,MySQL需要做哪些操作?

(1)申请实例

用户研发的时候需要实例,一般是找两台机器,安装MySQL,搭建一个主从,提交给研发用,这个过程需要手工去申请;

(2)主从切换

最早的版本没有HA切换,主从挂了以后,告警出来需要手工去切;

(3)迁移实例

用户申请实例发现内存不足,需要进行的升级;

(4)数据回档

假如用户改错数据了,需要通过手工去找回来;

(5)下线实例

实例不用了的时候,需要人工去下线。

实例操作模块就是负责这些手工操作的模块。运维工具十分庞大,但其实都是从日常的手工操作发现需要做哪些事情,哪些事情人工做的比较多,必须减少运维的哪些手工操作等等演化过来的。

比如做MySQL的运维人员都了解的这个例子:用户主机挂了,然后切到从机上服务,就会发起迁移,通过备份导到新的master上面,再新构建一个主从,通过HA方案切到新的主从识别上去。

3.平台监控模块

平台的监控模块的作用在于发现实例是否有正常,或者有什么异常:

拨测Svr的作用就是模拟用户连接和读写CDB实例,如失败,则告警,并将失败错误码和错误内容返回。

如果拨测连不进 MySQL server,拨测就会跟另一个模块DB master打交道 ,DB master通过一个长链接一直连到MySQL ,DB master就会进去看连接是不是满了或者有没有死锁,看完以后就会提交告警,并且下发到Apd Netman。

Apd Netman 会做一些监控、告警的收敛,如果用过CBD还可以通过采集 MySQL 性能数据的工具cdb_report 看到监控曲线,所以这个系统是旁路监控系统的一个重要模块。

cdb_report相关监控项:

以上几个模块就是整个 CBD 系统的看门狗,检测这个看门狗是不是能正常工作就需要用到另一个旁路系统——平台自身的监控系统来监控这些主键是否正常运行,查看所有模块的健康状态。

4.平台自愈模块

监控出现问题以后就交给人去处理,但是线上那么多实例,单靠人工很难维持,所以平台加了一个自愈的模块,把经常出现的异常加入到故障的自愈列表里,出现故障以后先到自愈模块去走一遭,如果走不通,再通知运维去干。

这个自愈模块包括一些MySQL经常会出现的问题:

1)复制异常

由于MySQL主从的架构,可能出现从机跟主机的通信被中断的情况,大概有以下四种:

  • Could not parse relay log event entry  ->refetch_relay_log

问题:第一种就是relay_log在从机损坏了,如果没有及时处理,这时主机的relay_log被干掉,bug被修复以后可能会丢数据,做过DBA都知道一般主机、从机重启会导致relay被损坏 。

解决:可以通过一个方法开启relay_log,就是从第二个起就不要了,重新拿一次主库的relay_log再回来回放就好了;

  • Incorrect key file for table  ->repair_table

问题:用过MySQL的应该也会经常碰到,如果一个表在操作,如果机器断链了,或者如果操作被kill掉了,它没有自动回滚的,然后再起来服务以后它就会报这个表是损坏的状态。

解决:数据异常以后对这个表做repair_table;

  • Delete_rows event on table ->skip
  • Duplicate entry  ->skip

问题:这两个比较像。如果主从数据已经不一致,如果对数据进行修改,在主机上面给一条数据的时候发现从机没有,它就会报找不到这个表。

解决:暂时跳过,然后对于主机上有的数据从机上没有的就以主库为主,再引入另外一个工具 table-sync 自动修复从机的数据。

  • 记录配置DB&发送报表

无论是发现的自愈,还是自愈后的补救措施都会记录到配置DB里,第二天再通过邮件发报表告诉运维人员复制异常自愈模块做了哪些工作,让他们知道这些东西要再跑一个脚本去看这个模块是不是在正常工作。

2)备份异常

备份异常和修复方法:

  • Got error 32 on write hadoop ->retry

问题:这个是典型某个节点挂了,或者是当时网络有瞬断,会报的一个32管道的错误,由于那么大的量,各种网络上抖动等错误不能避免。

解决:一旦发现备份失败,平台立马就会去重试备份。另外冷对系统有异常的时候,也会报错,虽然错误可能不是一样的,但是具体的操作都是重试。

  • Mysql has gone away ->retry

问题:如果MySQL自己出现了异常,比如在备份的时候,然后这个备份的selection被牺牲掉了,或者是业务进程把select给kill掉了,

解决:当捕捉到这个异常也是进行重试。

  • Incorrect key file for table ->repair table

问题:这个跟复制异常的那一点也很像,其实就是把表损坏了。

解决:在复制异常的时候会去做表的修复。

3)最大连接数

  • Check_lock ->kill select

问题:如果拨测的时候发现连接跑满了导致MySQL进不去。

解决:由于DB master 是一直通过长链接在MySQL上面的,所以拨测检测到异常的时候仍然可以进去,就可以去check-load,是什么东西导致了所有的连接数跑满,然后select,假如发现它是表锁了,就针对这种select牺牲掉它,让整个MySQL server恢复正常。

  • Check_sleep ->reset timeout

问题:另一种是没有锁的情况,只是业务单纯的sleep 导致连接满了,这是因为实例规格不同,对最大连接数的设置也是不一样的。

解决:为了避免运维凌晨起来,就可以把time out设久一点,比如sleep如果默认是八个小时,比如第一次设到一个小时,如果还缓存不了,就设到60秒,如果还缓存不了,运维人员再去处理。

  • Reset max_conn

问题:如果通过time out也解决不了问题。

解决:可以在这个服务器负载允许的情况下,就是内存容纳还够的情况下扩大它的最大连接数。

4)锁等待

问题:锁等待就是发现死锁以后怎么去做:

  • Check_active_conn

解决:一种就是通过活动连接这个最直观的方法,如果锁很多的时候活动连接就会很多;

  • Check_lock  ->kill select

第二种就是通过运用DB自身的系统库去做一些判断,如果检查到连接数是一样的情况下,就像刚才一样表锁了就指定牺牲掉;

5)极端高负载

  • Check_load
  • Auto_repair

问题:如果机器负载很高。

解决:平台会做一些高负载的修复方法,比如看到某一个实例的负载很高,平台就会判断MySQL是不是可以通过加索引去解决,如果可以,线上就会自动去加一个索引先修复,运维人员可以在第二天上班时间再去跟进。

三、平台的总体架构

平台的总体架构共分为四块:

1.Web Server

Web Server就是一个可视化的界面,后端提供一些API的服务,例如从主机到从机发起的迁移就是一个常任务,可能需要两三天的时间。

2.后台作业系统

常任务里包括数据对比这些东西,有一个作业系统进行管理,负责协调前端或者后端通过API发起的任务到公众模块的衔接;

3.功能模块

包括资源分配、备份中心、数据迁移、HA模块以及提供给客户的接口,客户通过API就可以拿到最大连接;

4.基础服务组件

  • 任务运行agent:AJS
  • 性能采集agent:cdb_report
  • 异常容灾切换:TGW

基础服务组件包括腾讯内部的一个AJS系统;后端cdb-report是自研的一个采集器;还有异常切换需要用到腾讯的Tencent GateWay(TGW)。

平台总体架构图:

© 著作权归作者所有

共有 人打赏支持
OSC源创君

OSC源创君

粉丝 4543
博文 58
码字总数 128282
作品 0
深圳
加载中

评论(7)

wkl17
wkl17
没有相关工具下载或介绍?
­_           ..
­_ ..
Jvvjnbbb
吉哥
吉哥
CBD
读一不二
信息爆炸的时代,提高文章的阅读的效率,就是迅速拉到页面底部,没有下载链接就换下一篇
飞天萝卜
飞天萝卜
说那么多,哪里下载?怎么搭建使用?就是秀一下是吗?不放代码下载的开源都是扯淡!
滔哥
滔哥
阿里云?腾讯云?工具放出吗?
ccmv
ccmv
用户在计算机房或是阿里云上,自建的MySQL通过 HAproxy或者....

为啥有个“阿里云”?
释放技术的想象:揭秘支撑腾讯游戏亿级用户的云端架构技术

近两年,“野蛮生长”的国内游戏市场开始趋于成熟,开发者将面临更激烈的用户争夺。但开发者往往在突破核心玩法、提升游戏品质、保障运维质量、抵御恶意攻击等方面,遇到诸多挑战。同时,国内...

云加社区
01/04
0
0
SDCC 2017·上海站震撼来袭,首批讲师和议题大公开

时隔一年,2017年3月17-19日,SDCC 2017·上海站震撼来袭,特开设了三大主题会场,分别是互联网运维开发实战峰会、数据库核心技术与应用实战峰会和互联网应用架构实战峰会,为期三天,为软件...

玄学酱
04/19
0
0
Gdevops广州站火爆落幕,敏捷思维引领运维革新(附PPT)

金秋九月,在广州的艳阳下依然宛如盛夏,而热度最高的地方当属Gdevops全球敏捷运维峰会广州站的现场!收获了各领域名企大咖精彩的演绎,以及各路技术精英爆场的热情,Gdevops广州站于9月23日...

2016/09/26
0
0
如何运营亿级QPS的Redis系统

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:冯伟源,高级工程师,腾讯云Redis系统运维负责人。6年DBA经验,一直从事SQL优化、实例调优、数据库架构、海量数据库集群运...

腾讯云加社区
06/05
0
0
走进腾讯,聊运维干货(第一期):海量运维实践大曝光

欢迎大家前往腾讯云社区 ,获取更多腾讯海量技术实践干货哦~ 《走进腾讯,聊运维干货》系列 (1)是由腾讯云主办的互联网运维实践系列技术分享沙龙,将在北京、上海、深圳、广州、厦门、成都...

腾讯云社区
2017/12/12
0
0
从传统IT运维到云运维,浙江移动是这样炼成的!

随着云计算概念的逐步落地,越来越多的企业拥抱“云”。一方面,云计算的快速发展打破了竖井、应用和平台解耦的界限,而另一方面,也对企业如何加强自身核心能力掌控、统一管理建设运营、提升...

郭岳
2016/06/16
0
0
新华三U-Center智能运维平台问世

新IT转型趋势下,为支撑业务敏捷、稳定、创新发展,IT运维的重要性已日益凸显。IT运维业务定位也从传统支撑中心、服务中心逐步向价值中心转变。伴随着IT运维管理目标、管理范围、管理对象,管...

玄学酱
04/13
0
0
揭秘腾讯云Supermind智能网络,百万级设备的网络高效运维

网络数据中心正在不断向人工智能(AI)时代演进,在Gartner发布的《2017数据中心网络魔力象限报告》中,将分析和基于意图的网络(Analytics and Intent-Based Networking)是八大市场趋势之一,...

腾讯云社区
2017/11/28
0
0
揭秘腾讯云Supermind智能网络,百万级设备的网络高效运维

网络数据中心正在不断向人工智能(AI)时代演进,在Gartner发布的《2017数据中心网络魔力象限报告》中,将分析和基于意图的网络(Analytics and Intent-Based Networking)是八大市场趋势之一,...

腾讯云技术社区
2017/11/27
0
0
2018 Gdevops成都站:确认过干货,是你想要的PPT!

4月21日,2018 Gdevops全球敏捷运维峰会以成都为起点,拉开了本年度新一轮精彩技术巡演的序幕!峰会当天虽然下着绵绵细雨,但这显然阻碍不了童鞋们对技术学习的渴望,大家都如约而至,热情燃...

Gdevops
04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之开发拦截器(21)

序言:几乎所有项目都需要拦截器,所以小伙伴们必须要掌握这门技术哦,不然只会mybaits增删改查那是实习生干的活呀。 1、创建拦截器类,implements HandlerInterceptor public class MyInce...

木九天
10分钟前
0
0
(转)SQL语句的执行顺序

(7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (......

Avner
19分钟前
0
0
1.14 救援模式

确保开机启动时连接镜像文件,如果是真机服务器,就需要:U盘或光盘镜像启动进入BIOS 不同主板进入bios按键不同,一般是F12或Esc 光标:移动到Boot(开机启动项) 减号移动:光标选中行,按-...

小丑鱼00
27分钟前
0
0
ES11-全文检索

高级别全文检索通常用于在全文本字段(如电子邮件正文)上运行全文检索。 他们了解如何分析被查询的字段,并在执行之前将每个字段的分析器(或search_analyzer)应用于查询字符串。 1.term查...

贾峰uk
30分钟前
0
0
java 复制对象有哪些方式

java 复制对象有哪些方式 Apache的 Common beanutils库 org.apache.commons.beanutils.BeanUtils.copyProperties(dest,origin); Springframework 的BeanUtil 依赖: <dependency> ......

黄威
45分钟前
1
0
jstack的简单使用

公司测试反应, 一个java应用的机器, 即使不做交易, cpu始终是30%多, 于是想到了jstack, 实践步骤记录一下: 1, 找出java应用的进程号 ps -ef|grep 应用名|grep -v grep 2, 找出pid下的cpu占用...

零二一七
52分钟前
1
0
导入CSV文件就行数据整理分析

#-*-coding:utf-8-*-import csv,os,re,mathlocalPath=input("请输入所有群文件的根目录:") #所有QQ群文件的物理根目录路径def info(): info_dic=[] dirList=os.listdi...

Kefy
今天
5
0
CoreText进阶(六)-内容大小计算和自动布局

CoreText进阶(六)-内容大小计算和自动布局 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更...

aron1992
今天
1
0
一个Unity高人的博客,涉猎范围很广,深度也很深。

https://blog.csdn.net/ecidevilin/article/list/

爽歪歪ES
今天
0
0
Spring Cloud Config-Git后端

EnvironmentRepository的默认实现使用Git后端,这对于管理升级和物理环境以及审核更改非常方便。要更改存储库的位置,可以在Config Server中设置“spring.cloud.config.server.git.uri”配置...

itcloud
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部