腾讯 张黎明--万台服务器一人挑的实战技巧

汉莹洁

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

本次分享以QQ、Qzone等社交业务一人运维2万台设备的实战经验为基础,从社交业务的基础架构解密海量服务是如何保证高可用和快速流量切换;在接入层和逻辑层我们坚持了哪些原则去实现服务的整齐划一和高效维护;在面对社交业务春节红包和零点高峰等场景,我们是如何实现近万台设备的快速上线的。

文字内容
1. GOPS 全球运维大会 2018 2018.4.13-4.14 中国·广东·深圳·南山区 圣淘沙大酒店(翡翠店) G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 1
2. 万台服务器一人挑的实战技巧 张黎明 组件运维团队负责人,8年运维 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 2
3. 海量服务运维过程中的挑战 1.8万个域名、3000个业务模块、4万台设备,单人运维设备超2万 • 上万域名如何保证就近接入,如何应对运营商出口网络故障 • 上万域名的https证书如何高效统一维护 • 服务器宕机如何保证业务无损和故障自愈 • 如何维持现网服务的整齐划一,实现自动化能力 • 如何有效应对大型活动事件几百模块、上万设备的快速缩扩容 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 3
4. 目录 1 海量服务的基础架构 2 运维实践中总结的几个原则 3 支撑大型活动事件的实战技巧 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 4
5. 海量服务的基础架构 1. 名字服务实现没有调不走的流量 2. 容错做到没有不能宕机的设备 3. 统一框架提升研发运维效率 牛顿说:“如果我看得比别人更远些,那是 因为我站在巨人的肩膀上.” 我说:“我们只是站在巨人的肩膀之上, 踮起脚尖,做了一次身高一米八的眺望” Web层 逻辑层 GS LB TGW/STGW … 基 础 架 织云路由 构 图 … 织云路由 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 数据层 5
6. 巨人的肩膀:GSLB GSLB 是英文Global Server Load Balance的缩写,GSLB 是腾讯的自研DNS服务,通过识别 LocalDNS出口IP的国家+省份+ISP属性,然后给对应请求返回相应的IP,实现就近接入 域名接入面临的问题: 1、跨运营商通信网络差,要尽量避免 2、运营商出口网络故障要能快速切换 GSLB强大的基础数据: 1、全面而精准的IP地址库 2、拥有各IDC机房对各地用户覆盖质量的实时数据 用户GSLB查询过程 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 6
7. 巨人的肩膀:TGW TGW,全称Tencent Gateway - 腾讯网关系 统。具备以下功能特点:  负载均衡  支持多运营商接入  外网IP收敛  支持4/7层,业务接入透明 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 运营支撑系统 生产系统 BG OSS Internet 数据流 控制流 TGW接口层 TGW管理系统 DB 交换机A 心跳 转发 LD LD LD LD TGW集群 心跳 转发 RS RS RS RS 业务服务器 TGW 软件架构图 交换机B SNAT SNAT NAT集群 主动外联 7
8. 巨人的肩膀:STGW STGW是在TGW基础之上构建的支持https的 网关系统,“stgw=tgw+https加解密集群” 具备以下特点:  证书统一集中管理,完全托管  SSL加速,计算资源共享  多协议接入及适配  安全防攻击 STGW TGW四层代理 SSL计算集群 Nginx 7层代理 RS STGW架构图 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 8
9. 巨人的肩膀:织云路由 织云路由是应用层实现的一套兼具负载均衡和自动容错的内网名字服务系统,能有效解以下问题:  缺乏一套稳定的内网服务注册,服务发现方案,调用方写死ip导致无法快速切换  业务多地部署缺乏一套就近访问,异地自动容灾切换的解决方案  同一个服务下的各个服务器负载不均衡,不能较好的做到能者多劳,物尽其用  单机故障会导致服务可用性受影响,需要运维人员半夜进行紧急变更  业务压测,灰度时需要引流,限流  业务需要过载保护,防雪崩 织云路由 织云路由 织云路由 织云路由 织云路由 织云路由 接入层 逻辑层 存储层 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 9
10. 巨人的肩膀:织云路由 织云路由功能:  名字服务  负载均衡  过载保护  有状态路由  就近访问,异地容灾  服务可用性和返回码监控 写入配置变更 Web管理系统 DB 读取配置变更记录 路路由由sesrevrevrer 配置更新 路由 Agent GetRRoouuttee获报R取e调suip用l:tpU结oprtd果a路te上由api 业务进程 路由api 业务进程 根据ip:port请求 返回 主调机器 被调服务集群 目前织云路由已支持私有化交付,可以方便的对接客户的CMDB和OA认证系统,也可以和织云一整套自动 化运维解决方案打包交付,有意向的客户可以联系contactus_zy@tencent.com G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 10
11. 织云路由与其他负载均衡组件对比 对比功能项 就近访问寻址 故障风险 负载均衡 容错能力 过载保护 监控统计 部署维护 使用门槛 织云路由 LVS/F5 DNS 支持 LVS不支持/F5 GTM支持 支 持 , 根 据 不 用 国 家 、 省份、运营商进行调度 只提供寻址,不转发业 务数据;有缓存机制, 故障对业务几乎无影响 需集中转发业务数据; 故障对业务是致命的 (通过规范标准的集群 容灾规避整集群故障) 有缓存机制;故障对业 务有影响 基 于 业 务 应 用 层 反 馈 , 负载均衡 算法 比较简 单 。 基于简单的轮询机制 可靠性更高;支持权重, 动态自适应调节; 支持RS自动容错,恢复 支持自动容错; 无 有 无 无 基于API上报,对服务的 请求量、成功率和返回 码进行统计,实现服务 质量的精细化管理 主调机器安装agent即可 无法提供业务纬度的精 细监控 需要专用设备,或对系 统进行特殊配置 无法提供业务纬度的精 细监控 系统缺省提供 低,需业务代码调用API 无,VIP方式,对业务透 低 , 需 业 务 调 用 域 名 查 明 询API G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 11
12. 巨人的肩膀:逻辑层统一框架SPP Spp是SNG使用最广泛的健壮、高性能通用逻辑框架,开发可以只实现几个回调函数就搭建起自己的逻辑server。 统一框架对于运维的意义:  跨业务实现维护策略统一,是后续自动化运维的基础  网络框架和业务逻辑 SO 分离管理,运维具备快速升级框架的能力  运维专业度提升,具备比开发更强的troubleshoot能力  Controller对proxy和worker具备监控和起停的能力,服务稳定性提升 插件 handle_init 初始化 handle_input 数据接收 handle_route 路由 handle_init 初始化 handle_process 数据处理 框架 Proxy recv send WWoWorkorekrerkrer Controlle r G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 12
13. 目录 1 海量服务的基础架构 2 运维实践中总结的几个原则 3 支撑大型活动事件的实战技巧 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 13
14. 名字服务原则 名字服务带来的流量快速切换和自动容错对于运维意义重大:  每年上万台设备,上千个VIP的裁撤  调度演习、发布、灰度和缩扩容而产生流量调度是常态  对于近十万台设备,每天几十台设备宕机成为常态  自动化运维的基础之一 名字服务如何在研发侧落地执行:  联合QA建立质量考核体系,对业务研发进行考核  后台框支持RPC,对业务开发封装路由寻址的过程  织云路由在内网支持DNS协议 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 14
15. 一致性原则 包 名字服 务 织云CMDB模 块 配置文 件 权限 一致性包含两个方面:  织云CMDB录入与现网机器上的是否一致  同模块下的各个IP资源是否一致 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 模块资源一致性 业务包: 回收非公共包安装权限 配置文件: 支持key-value;定期和中心对比,开启 强一致 权限: 推动常用权限管理维度模块化 名字服务: 梳理并推动业务模块的名字服务接入一致 性;不一致对操作人派发工单 15
16. 无数据原则 接入层和逻辑层设备无数据原则是告警自动化处理的重要基础 • 无cache内存型服务,对于重启服务恢复故障意义重大 • 设备要求简化,无raid,硬盘故障之后直接换盘重装 • 磁盘在保存尽可能多日志的前提下实现自动化清理 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 开始 Ping/agent上报超时、硬 盘只读 是否接入逻辑层设备 是 调用接口是否重启 结束 退役流程 否 是否可修复 重启是否修复 否 是 探测自动恢复流量 派单驻场 是 结束 单机故障自动处理流程,简单才会可靠 16
17. 统一原则  统一后台服务框架SPP  统一名字服务织云路由  统一配置中心  统一数据上报通道  统一包发布系统PKG 统一原则带来的维护对象的减少和对上层系 统呈现出来的简单可以大大提升上层自动化 系统可靠性,并降低其复杂度 织云 统一API网关 配置中心 名字服务 后台框架 CMDB 数据通道 PKG 命令通道 监控 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 17
18. 目录 1 海量服务的基础架构 2 运维实践中总结的几个原则 3 支撑大型活动事件的实战技巧 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 18
19. 大型活动的挑战  扩容设备量大、模块多、扩容状态跟进难、设备采购交付周期长,留给扩容部署的时间紧 刚刚过去的2018年春节和红包活动,组件运维团队扩容641次,涉及535个模块,15701台设备, 扩容操作要求在设备交付后的一周内完成  步骤繁多,各个系统之间跳转,沟通和单独操作消耗量巨大 资源申 请 资源交 付 资源管理系统 设备生 产 扩容部 署 织云 验证灰 度 全量上 线 织云路由&监控系统 设备隔 离 资源归 还 织云 资源管理系统 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 19
20. 织云自动部署流程 • 检查一致性 • 检查设备连通性 • 获取资源 • 屏蔽告警 1:部署 准备 2:发布 部署 • 申请权限 • 安装程序包 • 发配置 • 同步文件 • 一台灰度10% • 调用变更体检 • 全量接入 4:灰度 上线 3:发布 自检 • 启动软件包 • 进程端口扫描 • 执行测试工具 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 织云扩容流程截图 20
21. 基于织云之上的批量部署系统 批量部署系统: 1.集中展示和管理:各个步骤封装成原子接口,在统一界面操作 2.对接各个系统:打通资源系统、织云和监控系统,扩容流程自动发起,自动上线 3.规模效应:批量操作上百个业务模块 4.状态自动跟进:状态自动更新 黑色箭头代表批量系统打通的隔断 织云监控 织织云云路路由由 资源 管理系 统 资源评估 资源提单 资源采购 资源交付 资源退还 织云 部署系 统 部署流程(近20 项) 全量上线 设备隔离 灰度接入 容量评估 剔除流量 批量部署系统打通的环节 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 21
22. 18年春节数据 一周内组件层共扩容641次,涉及535个模块,15701台设备 其中,单人最高扩容310次,涉及272个模块,9757台设备 组件层总体成功自动上线522次,涉及414个模块,10599台设备 春节期间组件团队共41556台设备,其中单人最多名下21069台 G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 22
23. Thanks GOPS 全球运维大会2018·深圳站 高效运维社区 开放运维联盟 腾讯运维体系专场 荣誉出品
24. 想第一时间看到高效运维社区 的新动态吗? G O P S4/13全/201球8 运 维 大 会 2 0 1 8 · 深 圳 站 24