vivo业务高可用建设实践 周甲黎|vivo互联网业务运维总监 二、可用性能力建设 三、可用性阶段建设 四、可用性结果与展望 一、问题与挑战 物理机总数 2017 2018 2019 2020 2021 2022 物理机总数 在线服务数量 2017 2018 2019 2020 服务个数 2021 2022 机器的规模不断增长服务数量不断增长 1、业务变更中存在手工变更场景 2、单次发布时间较长 3、存在业务迁移的场景 变更挑战 能力建设 故障挑战 1、机房级故障风险 2、业务快速增长对容量需求大幅增加 业务稳定性 二、可用性能力建设 三、可用性阶段建设 四、可用性结果与展望 一、问题与挑战 MTTRMTTF 故障发生故障发现故障响应故障恢复故障复盘故障发生 MTBF 关键点 ①故障预防 ②故障发现 ③故障治愈 ④故障复盘 故障①✖️时间②③故障避免+最快解决 输入 服务 服务方面:软件bug等 硬件方面:主机硬件、机房、网络等 输出 从单服务的稳定性来看:硬件的不稳定、软件变更引入bug、业务的请求突发都会引发服务的异常 输入 服务A 服务B 服务层:配置异常等 上下游依赖:关键服务异常 从全链路的稳定性来看:上下游依赖、容量不足和服务配置异常等都是影响稳定性的重要因素 变更异常 做好变更管理:有流程、有平台 基础设施异常 高可用架构,去除单点风险,做好冗余容灾 单元化 实现服务在本机房内调用 多入口 建设了IDC和公有云的多入口 过载保护 接入层建设了过载保护能力,突发流量主动拒绝 熔断降级 对依赖的服务做熔断降级,屏蔽异常服务带来的影响 接入层业务逻辑层中间件层存储层基础设施层 客户端监控 服务端监控 自建了拨测系统,通过旁 路的模拟用户访问的方式, 监控各服务的可用性情况 包括域名监控、日志监控和服务之间的调用监控,按照监控的实现方式主要是metrics/logs/trace 基础监控 监控主机的硬件资源使用情况,主要是metrics方式 故障 分析 和监控系统联动,支持基础服务故障分析、域名可用性分析等 故障处理 故障预案建设,包括预案的制订、演练等等 基于业务SLA分级,有的放矢;做相应的故障记录、改进和验证能力建设,不断改进 业务分级 分级保障,将有限运维资源分类重点保障 口碑 营收 日活 故障记录 提高复盘的效率,并且提供线上故障跟踪和分析的能力 故障改进 基于混沌工程做后向的验证 IDC自建机房 公有云 自建机房为主,公有云为 辅,具备弹性上云的能力 物理机 虚拟机 容器 云主机 预算管理需求管理采购管理存量运营管理 建设了基于混合云的资源保障能力,极大提升了资源弹性能力 建设了资源的全生命周期的管理机制,保障资源的供应及使用效率最大化 二、可用性能力建设 三、可用性阶段建设 四、可用性结果与展望 一、问题与挑战 标准化:基于全链路的标准化建设,包括机房、网络、应用等等 降低业务的运维复杂度,进而降低运维的成本 机房标准化网络标准化 -公网 -主动上网 -内网专线 OS标准化 硬件 软件 主机环境标准化服务目录标准化Agent标准化 接入nginx集群标准化 服务能力标准化(中间件服务) 流程化与规范化:将运维过程中的好的实践与方法沉淀成流程、机制和规范 业务稳定性保障过程尽量有序、可控 运维军规 故障响应机制规范 公共事项规范 大型活动保障规范 平台与系统化:将好的流程/机制/规范更进一步的做成平台化,实现自动化 以cmdb为底座,建设了包括变更平台、监控平台、服务工具平台等等,支撑业务稳定性 持续交付 •CICD平台 •作业平台 监控服务 •日志监控 •域名加农 •主机监控 CMDB 变更管理 •Nginx变更 •流量调度 •CDN变更 工具服务 •DNS管理平台 二、可用性能力建设 三、可用性阶段建设 四、可用性结果与展望 一、问题与挑战 业务可用性达标趋势 99.95% 99.95% 99.99% 99.99% 99.99% 0 0 0 10 22 24 2 13 8 9 30 25 100.20% 100.00% 20 15 10 5 0 201820192020 达标不达标SLA 2021 2022 99.80% 99.60% 99.40% 99.20% 99.00% 故障发现 客户端监控服务端监控基础监控 高可用能力建设 故障预防 故障治愈 预案建设 故障复盘 业务分级 复盘改进 能力 可用性 标准化 硬件标准化网络部标准化主机标准化服务标准化 流程/规范化 运维变更 运维告警处理 平台/自动化 CMDB平台CICD平台监控平台 阶段 机房A 接入层 业务层 存储层 机房B 接入层 业务层 存储层 容器/云原生 公有云 虚拟机 物理机 异地多活能力构建不同基础架构的高可用能力 可用性保障 •故障预防 •故障发现 •故障治愈 精细化运营保障 成本管理 •预算管理 •需求管理 •存量资源运营 THANKYOU!