腾讯 杨利东-复杂业务的自动化运维精髓

宝星泽

2018/05/13 发布于 技术 分类

来自腾讯内部的海量社交业务自动化运维案例,真实数据分享,全方位剖析自动化运维的理念、能力和孵化过程。

文字内容
1. GOPS 全球运维大会 2018 2018.4.13-4.14 中国·广东·深圳·南山区 圣淘沙大酒店(翡翠店) GOPS 全球运维大会2018·深圳站
2. 复杂业务的自动化运维精髓 杨利东 腾讯QQ平台运维负责人 GOPS 全球运维大会2018·深圳站
3. 消费场景 无人运维 一键运维 织云 一体化运维平台 灰度发布 KPI预测 根因分析 舆情监控 智能客服 异地容灾 基础运维 初始化 通 知 用户密码 中 系统运维 心 , 虚拟化集群 日 场景化工具 志 中 心 公共组件服 务数据采集 OLAP平台 容器服务 用户权限 调度系统 持续部署 包管理 配置发布 流程引擎 一致性 工具链 织云平台API层 架构组件 接入组件 TSF TDSQL CNAS 织云路由 监控体系 舆情分析 用户端监控 服务端监控 组件监控 基础监控 流程与服务 事件管理 变更管理 场景化管理 发布管理 资源管理 AIOPS 关联分析 AI算法 数据模型 数据驱动 文本分析 数据银行API层 CMDB配置管理 软件包 配置文件 权限记录 硬件属性 地域分布 监控属性 业务属性 架构层 测试用例 运营状态 IAAS(硬件设施与网络) 网络设备 服务器 机房设施 CDN 虚拟化 设备采购 操作系统 多云管理 LVS DNS GOPS 全球运维大会2018·深圳站
4. 目录 1 讲一讲我们的故事 2 包管理系统的来世今生 3 CMDB资源镜像与流程自动化 GOPS 全球运维大会2018·深圳站
5. 运维复杂业务的痛 厘米秀 农牧场 个人空间 QQ GOPS 全球运维大会2018·深圳站 研发团队开发语言、架构多样 业务发展快,需求多且急 研发人员:运维≈10:1 运维人员能力参差不齐 离职、出差交接难 改造推动困难
6. 我们的运维故事 18岁全民“致青春”晒照片  图片下载量峰值达到平日晚高峰的4倍,且 70%以上都聚集在冷存储。图片上传量达到 平日晚高峰的4倍。  带图说说峰值达到平日晚高峰的12倍。  几小时扩容上千台设备 GOPS 全球运维大会2018·深圳站 春节红包活动:10天800模块3W设备
7. 目录 1 讲一讲我们的故事 2 包管理系统的来世今生 3 CMDB资源镜像与流程自动化 GOPS 全球运维大会2018·深圳站
8. 前传-先讲研发组织结构 中心型 多中心型 离散型 集权式,统一研发框架 可控、全面;改造成本高 要求先知先觉或强大改造意愿 不同产品不同研发团队 敏捷迭代;低改造成本 环境大体一致 研发差异大无法求同存异 灵活;低成本 运维有较强二次开发能力 框架型运维体系 √标准、效率型运维体系 工具型运维体系 GOPS 全球运维大会2018·深圳站
9. 建设历程:渐进、模块化 06~08年 3K设备 10+人 包管理能力 08~10年 2W设备 10+人 SPP框架组件 10~13年 5W设备 20人 名字服务 调度能力 GOPS 全球运维大会2018·深圳站 13~16年 10W设备 50人 CMDB资源 镜像 条带化 自动化流程 16~Now 20W设备 ?人 数据银行 智能运维  改造不可一蹴而就  不同时期交付不同的 运维能力
10. 主题:包管理系统的背景 每天有十几号开发轮番 轰炸你 重启命令是什么? 日志文件在哪里? 清理策略是什么? 依赖的库在哪里? 我X,命令行敲错了! GOPS 全球运维大会2018·深圳站
11. 包管理系统的诞生 统一研发框架 • 改造量太大 • 多个团队无法 统一 GOPS 全球运维大会2018·深圳站 统一管理框架 • 管理是目的, 不侵入 • 统一文件目录 • 统一脚本功能
12. 包-从文件管理说起 Start.sh Admin Stop.sh 文件 Bin 管理 进程 管理 Conf 版本 管理 包 实例 Lib 管理 发布 管理 Log ~/data/log Client 插件(业务 逻辑) GOPS 全球运维大会2018·深圳站
13. 文件管理:后置脚本 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
14. 文件管理:公共文件 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
15. 文件之后是-包进程启停 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站 启动自定义,充分发挥灵活性 停止需谨慎,按照默认的方式
16. 进程的自监控 安装 文件 管理 进程 管理 版本 管理 死机? Core? 写文件 实例 误杀? 管理 发布 管理 写 Crontab 启动 写标记位 什么也不做 无 有无标 记位 有 执行拉起 动作,失 败则告警 标记位 读 Crontab 现网PS (3分钟一次) 写 GOPS 全球运维大会2018·深圳站
17. 迭代利器-包版本管理 可升级 文件 管理 进程 可降级 管理 版本 可撤销 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
18. 问题来了,这么多版本怎么管理 Q1:存储1K个包*100个版本*100MB=9.5T? 文件 管理 进程 管理 Q2:V1.1(100MB)V1.2(120MB),100个IP版本升级,那 版本 管理 么传输消耗是12000M还是2000M? 实例 管理 发布 管理 Q3:上面的升级出问题了,需要100个IP从V1.2回退到V1.1版本, 那么网络传输消耗是? GOPS 全球运维大会2018·深圳站
19. 版本怎么存 我们的方案 文件 管理 包worker 下载缓存 进程 管理 版本 请求 Diff 管理 实例 管理 SVN Server 发布 管理 CEPH RBD 我们的数据: 包数量:4W+个 包版本数量:60W+个 包存储:3T GOPS 全球运维大会2018·深圳站
20. 版本间文件级diff 织云包 ServerA_1.0:/data/serverA/ 文件 管理 File1 File2 进程 管理 +File 3 版本 管理 ServerA_1.1:/data/serverA/ 实例 管理 File1 File2 File3 发布 管理 -File 3 +File 4、5 ServerA_1.2:/data/serverA/ File1 File2 File4 File5 镜像包 Base Image 多消耗了 File1、2 ServerA:1.0: /data/serverA/ File1 File2 +File1、2、3 ServerA:1.1: /data/serverA/ 多消耗了 File1 File2 File3 File1、2 +File 1、2、4、5 ServerA:1.2: /data/serverA/ File1 File2 File4 File5 GOPS 全球运维大会2018·深圳站
21. 版本回滚 文件 V1.1.0 V1.1.1 管理 进程 管理 版本 管理 Diff 实例 管理 内容 发布 管理 版本回滚 GOPS 全球运维大会2018·深圳站 一切都是增量! 包操作任务:2W+次/天 包任务耗时:10-20S/次 包任务成功率:4个9 本地目录
22. 包实例管理 √屏蔽命令行 √减少运维对象 √防呆设计 √支持排序 √快速过滤 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
23. 一个集群包实例管理的问题? ServerA集群 V1.0 V1.0 V1.0 V1.0 V1.1 V1.1 V1.2 V1.2 V1.3 V1.3 V1.3 V1.3 文件 管理 进程 管理 这种情况确实存在 版本 管理 实例 管理 问题: 发布 管理 1. 这个情况合理吗? 2. 高版本可能会把低版本的特性夹带出去,引发事故 3. 运维扩容的时候懵逼,以哪个为准? GOPS 全球运维大会2018·深圳站
24. 允许多版本存在 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理  金丝雀发布 GOPS 全球运维大会2018·深圳站 灰度发布 蓝绿部署咧?
25. 版本夹带 文件 管理 进程 管理 版本 A开发 管理 实例 管理 发布 管理 B开发 配置V1.0 配置V1.1 Diff? 配置V1.2 IP集群1 IP集群1 IP集群1 V1.0 V1.0 V1.0 V1.0 V1.1 V1.1 V1.0 V1.0 V1.0 V1.0 A开发灰度中 V1.0 V1.0 B开发“夹带”着将1.1版 本的特性灰度后全量发布 V1.2 V1.2 V1.2 V1.2 V1.2 V1.2 GOPS 全球运维大会2018·深圳站
26. 集群实例管理的约束和多数原则 ServerA集群 V1.0 V1.0 V1.0 V1.0 V1.0 V1.0 文件 管理 V1.0 V1.0 V1.0 V1.1 V1.1 V1.1 进程 管理 版本 管理 实例 管理 发布 管理 约束:识别到存在2个版本则拒绝 发布第三个版本。直到全部版本一 多数原则:扩容的时候需要 选择比例大于50%的版本来 致。 扩。(why?) GOPS 全球运维大会2018·深圳站
27. 多数原则存在的原因 “Nginx包”部署在5个IP上 IP_1 包版本1.1 IP_2 包版本1.1 IP_3 包版本1.1 IP_4 包版本1.2 IP_5 包版本1.2 选旧的 优点:旧版本跑了那么 久,扩这个一定是稳定 的 缺点:我新版本都灰度 了80%的机器了,你还给 我自动扩旧的再让我升 级一遍???体验不好 • 选多的 优点:多的版本一定是稳定的,至少是经过灰度 验证的 • 缺点:少的版本(一般是新版本)也很稳定了, 为什么不给我选少的(新的)呢?也是体验问题 选新的 优点:旧版本无法兼容xx功能, 新版本能解决 缺点:新版本有bug,扩容相 当于扩大了bug范围,本来是5 级事故,扩容导致变成了2级 人工定义 优点:包的作者来定义到底哪个版本是正式版,基本靠谱 缺点:万一作者忘记定义了呢?每次发布强提示的话,体验又不好了… GOPS 全球运维大会2018·深圳站
28. 发布管理-面临的挑战 文件 管理 迭代 进程 管理 频繁 版本 管理 实例 管理 发布 管理 规模 巨大 GOPS 全球运维大会2018·深圳站 回滚 紧急 文件 众多
29. 发布管理-谁来发布 开发环境 测试环境 预发布环境 生产环境 开发 测试 产品 运维 运维发布 瓶颈 GOPS 全球运维大会2018·深圳站 开发 测试 产品 运维 有收益也 有风险 开发环境 测试环境 预发布环境 生产环境 全民发布
30. 发布管理-变更日志 • Git存储 • 增量更新 秒级 发布 • 变更日志 • 快速回滚 日志 可查 • 本地备份 • 一键操作 秒级 回滚 海量 并发 • 下载缓存 • 异步执行 GOPS 全球运维大会2018·深圳站
31. 发布管理-变更日志 GOPS 全球运维大会2018·深圳站
32. 发布管理:灰度的强制 Q:金丝雀发布的节奏、时间怎样强制? 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
33. 灰度发布管理:发布计划 文件 管理 进程 管理 版本 管理 实例 管理 发布 管理 GOPS 全球运维大会2018·深圳站
34. 包管理的特点 包是一种管理框架,千人 一面 包是DevOps中连接各角 色的桥梁,简单而敏捷 包是一个精细化运维管理 对象,但改造门槛低 能解决60%的问题 文件管理 进程管理 GOPS 全球运维大会2018·深圳站 版本管理 发布管理
35. 包管理与Docker对比 操作系统 资源隔离 发布速度 交付管理 对象管理 环境管理 综合 包管理 支持python 无 基于Git版本Diff的增量发布 极快! 标准交付,所有业务都一样 逻辑运维对象 一般  业务属性更多 GOPS 全球运维大会2018·深圳站 Docker 内核开启CGroup 基于CGroup隔离技术 基于文件系统分层的增量发布 较慢! 不一定 物理运维对象(风险?) 优秀  基础属性更多
36. 包管理的思考:标准化 灵活 效率 目标 节奏 分工 可用率 强约束 多数原则 非包不发 全民发布无审批 所谓标准化,就是一个组织中各 角色达成一致的契约 GOPS 全球运维大会2018·深圳站 老板 研发 研发的老板 QA/测试/产品 规则 约束
37. 目录 1 讲一讲我们的故事 2 包管理系统的来世今生 3 CMDB资源镜像与流程自动化 GOPS 全球运维大会2018·深圳站
38. 复杂业务的另一个表现:架构复杂 非标准协议的“微服务架构”? GOPS 全球运维大会2018·深圳站
39. 程序以外的信息 权限 IP AppId 命令字 配置文件 文本 共享内存 设备 创建VM 初始化 机型 名字ID Set信息 权重 负载 文件分发 环境文 件拷贝 验证服务 测试用 例 AI异常 判别 其他接口 屏蔽告 警 上报日 志 地域信息 GOPS 全球运维大会2018·深圳站
40. 文档是靠不住的 • 文档是离线的,无法由人来保证数据一致性 • 文档用来传达理念和思路比较合适,不适合做数据依据 GOPS 全球运维大会2018·深圳站
41. CMDB”资源”镜像模型 IP资源 标准模 型 机架、 IDC 网络、服 务器设备 织云 CMDB 地域、 SET 包、配 置 模块资 源模型 权限、 架构层 测试用 例 其他接 口 GOPS 全球运维大会2018·深圳站 一切皆资源
42. CMDB镜像的维护:一致性 现网数据 配置数据 数据对比 一致性上报 触发流程 告警or自动 修正 GOPS 全球运维大会2018·深圳站
43. 基于资源镜像的一键扩容 1.获取参数列表 2.屏蔽负载事件通知 3.查询设备调度接口 4.根据模块ID查域名 5.获取资源配置 6.申请权限接口 7.获取设备IP地址 8.屏蔽告警 9.同步文件 10.安装程序包 11.获取CC参数 12.发配置 13.执行脚本 14.主调扩容 自 动 申请设备 执 行 流 程 灰度上线 21.L5被调扩容 22.变更体检监测 22.告警屏蔽解除 23.开启负载事件通知 GOPS 全球运维大会2018·深圳站 获取资源 发布部署 业务测试 发布自检 18.查询授权结果 19.自动化测试 15.启动软件包 16.进程端口扫描 17.上报变更日志
44. 基于资源镜像的一键扩容 GOPS 全球运维大会2018·深圳站
45. 自动扩容 决策树(高负载) 1. 平均负载 2. 设备总数 3. 高负载设备数 4. 最高负载 5. 高负载阀值 6. 路由一致 7. 上线时间 决策树(低负载) 1. 平均负载 2. 设备总数 3. 持续天数 4. 路由一致 5. 最低负载 业务请求 负载均衡 组件 10% 10% 50% X 100% 扩容设备 权重调节 灰度系统 成功率上报 GOPS 全球运维大会2018·深圳站
46. 变更体检 GOPS 全球运维大会2018·深圳站
47. 综上 √ 建设思路 程序管理 持续部署 模块资源 自动化流程 … 持续集成 权限系统 配置管理 文件分发 流程引擎 运维组织 事件管理 资源管理 API平台 业务架构 GOPS 全球运维大会2018·深圳站
48. 结语 耐操 型 织云Lite全新发布 极 致 简 约, 让 运 维 变 得 简 单 深度 型 受欢迎 的运维 全局 型 GOPS 全球运维大会2018·深圳站
49. Thanks GOPS 全球运维大会2018·深圳站 高效运维社区 开放运维联盟 腾讯运维体系专场 荣誉出品
50. 想第一时间看到高效运维社区 的新动态吗? GOPS 全球运维大会2018·深圳站