新浪微博平台自动化运维演进之路


内容来源:2016年12月16日,微博产品资深运维架构师王关胜在“GIAC全球互联网架构大会”进行《新浪微博平台自动化运维演进之路》演讲分享。IT大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。
阅读字数: 2557 用时: 4分钟


摘要

新浪微博是一个由新浪网推出,提供微型博客服务类的社交网站。用户能够经过网页、WAP页面、手机客户端、手机短信、彩信发布消息或上传图片,是当下中国最火热的社交APP。微博产品资深运维架构师王关胜给咱们分享新浪微博平台自动化运维演进之路。docker

嘉宾演讲视频

Sina Weibo业务介绍

微博业务简介


微博平台是属于偏后端的一个产品,它所提供的服务就是固定量的接口,好比信息流里的接口、用户接口、关系接口等等。小程序

微博核心业务


微博最核心的产品就是信息流,以信息流为中心出发,它周边的用户、关系以及通知等主路径的服务都在内部平台,属于核心服务。后端

微博业务部署结构


咱们对于核心业务要求多机房部署,电信和联通机房都部署了完整的链路。服务器

服务保障——服务治理(开发主导)


在这样一个复杂的架构下,运维和开发须要紧密配合。咱们内部组织架构调整后,运维团队属于开发团队,配合起来就很是紧密。架构

内部分为了两个方向。第一个方向的部分是开发主导,运维参与。好比创建完善的SLA体系,咱们这个SLA体系作在应用层上,从开发和运维层面在代码上作一些改造,在数据层面上作收集。降级/封禁也是类似的方法,开发在代码上作降级/封禁的入口,具体提供的功能和平台是在运维作的系统里。负载均衡

服务保障——防护体系(运维主导)

第二个方向就是由运维全程主导,开发参与。例如容量、监控、干预还有运维的部署架构。框架

架构要作到极简、稳健、美丽;运维

监控要求具备实时性,报警快、准,覆盖全面;分布式

容量的性能要好,冗余足够,能快速动态扩容,有压测、容量预警;工具

干预的预案要全,手段多,操做快速,方案细致,要作到干预行之有效。

总体的防护体系要由标准化转化为可视化、自动化,最后升级到智能化。

微博平台运维进化历程

微博平台的运维进化历程大概分红四个阶段。

最先是人工阶段,全部的脚本都要依赖于人工,也就是所谓的脚本时代;

第二阶段是工具系统。当规模有必定的成长以后,作到了工具系统化和运维标准化;

下一个阶段就是综合运维平台。要把不少运维系统作成一个运维平台,就须要让系统平台化、数据API化和运维服务化;

目前咱们比较推崇的是利用混合云DCP的思路来作一些系统。

百台规模运维标准化

百台规模——一切皆需求

这个阶段主要的工做就是平常的需求对接、完善监控警报、代码的发布和回滚、还有服务的扩缩容以及以前的一些配管工具。

这些工做都要作到快速迭代、快速上线、快速响应。

百台规模——需求达成

当时只须要利用Python、Perl、Shell等去写各类脚本,平常的需求基本都能达成。

咱们也在研究一些开源的工具。当时在业务部署的层面最开始是用脚本,后来发现脚本比较麻烦,就改用配管。

百台规模——标准化梳理

配管是该阶段比较核心的内容,需求通过抽象可分为三类,机器上的基础配置、机房相关和业务相关。

全部配置要能经过标准化的配管工具管理起来,每一类服务都进行标准化梳理,就能达到咱们这个阶段的目标了。

百台规模——CMDB&配管


新浪在不少部门都会用到Puppet来作配置管理工做。咱们当时借鉴了这样一套配管工具,把全部能经过Puppet作的需求在标准化以后尽可能用到Puppet。这样就能基本上知足那个阶段的需求。

百台规模——配管UI化


在三大需求之上,咱们也给Puppet作了完善管理的UI。与Puppet相关全部配置的需求再也不须要经过手工管理,直接UI化,就能够在页面上修改配置,把配置管理起来,再经过Puppet的API下发。知足了当时的需求。

千台规模平台化&可视化

千台规模——挑战性加大

咱们面临了不少的挑战:服务器规模线性增加;业务单元线性增加;系统变动及代码上线次数线性增加;大型运营活动及三节保障;每日不定时段的PUSH。因此要作一些工具来知足需求。

但同时也出现了人力成本线性增加、差别化加重致使认知成本线性增加的问题。

千台规模——构建运维平台

咱们当时内部作了一套比较完善的运维管理系统Jpool。它是一个通用的集群管理平台,核心模块包含了用户权限、资源管理、配置管理、部署管理、任务管理、Nginx变动管理、降级/封杀管理和日志查询平台。

Dispatch和Puppet Master组成了这个平台里最核心的部分。Puppet Master管理了配管方面,Dispatch是一个分布式的命令通道。

千台规模——运维平台Joopl框架


千台规模——Joopl核心组件


Dispatch是一个分布式任务调度引擎。在Dispatch里有三大任务线程,任务处理线程、与agent链接的通讯协议层及通讯线程和主线程。

千台规模——统一运维平台

整合工单流程变动、统一配管系统、统一负载均衡系统、持续集成和监控报警系统这些工具系统,造成完整的运维平台。

平台建成后还能在上面作一些平常的变动手段,例如Puppet/Nginx变动、服务的部署变动、服务降级/封禁、扩容/缩容以及业务docker化。还有其它的像流量切换、限流、数据修复等等都是能够在运维平台上完成的。

万台规模自动化&智能化

万台规模——面临的核心挑战

针对一些突发的娱乐事件,咱们须要有峰值应对才能保证服务的稳定。

在这个阶段咱们要设置混合云系统,主要从四个点出发。

最核心的是峰值应对,能够进行快速扩容,及时回收;

其次是成本优化,可伸缩的业务利用公有云,私有云的内部进行弹性部署;

打通多语言环境,全公司统一平台,作到运维统一化;

业务快速迭代,基础设施标准化,提升发布效率。

万台规模——峰值应对——混合云DCP


峰值应对:目标“无人值守”的扩缩容

因为近几年突发的爆炸性事件增多,因此咱们要作到扩缩容“无人值守”。

基于运维自动化之上再作“无人值守”就须要各类各样的业务指标,而咱们的监控能够收集全部的业务指标。有了详细指标就能够作到“无人值守”。

总结:自动化核心——任务调度引擎

一个产品要想发展壮大,必须得有一套完整的任务通道。利用任务通道把全部运维相关的操做抽象为标准化的操做库,加上流程引擎,而后再作统一的任务编排。

有了这四大核心内容,再作平台或自动化思路就比较方便了。

今天要分享的就是这些,谢谢你们!


原文地址:t.cn/R9frEKf

相关文章
相关标签/搜索