在 5 月 28 日百度主办,InfoQ 策划组织实施的第 14 期百度技术沙龙活动上,来自百度的运维部技术委员会主席付晔以及腾讯产品运维副总监赵建春分别分享了各自公司运维实践的相关话题,包括自动化运维平台以及速度与成本共赢的运维实践等。本文针对他们各自的分享做简单回顾,同时提供相应的资料下载。
主题一:自动化运维平台让万台服务器共舞(视频,MP3 和 Slides 等资料下载)
在百度运维部技术委员会主席伏晔的演讲中,先是从运维面临的挑战说起,在企业运维工作中,核心的目标是保证服务持续稳定的高效运行,目前主要面临的挑战有:
- 突发的流量变化
- 复杂环境的关联影响
- 快速迭代的开发模式
- 运维效率、运维质量以及成本之间的平衡
紧接着在自动化运维技术的部分,伏晔分享了百度现有的运维技术框架。从架构图中不难看出,运维机制建立在运维标准之上,同时,监控管理、安全控制和灾难管理贯穿于整个运维活动的始末。此外,在分布式集群和传统集群的支持下,通过上层的容量管理、关联关系、任务管理和自动部署等这四大核心组件有力地保证了自动化运维的实施。
最后,伏晔讲解了自动化监控的技术框架和手段,这也是本主题的重点。他先由监控技术框架说起,然后结合具体的异常捕获实例,进一步介绍了百度是如何进行有效地监控、如何进行智能分析以及故障自动处理的相关原理和实践。其中,以“百度知道”产品为例,详细介绍了语义级别的监控原理和方法。伏晔提出了关于如何把运维工作做到以守为攻:
一个服务能够被用户所使用,是多个层级共同协作的结果。任何层级出现问题都会导致服务质量下降,甚至不可用。要在用户感知到服务质量下降前发现问题、定位问题、解决问题。其实是源于多视角及多类型的监控方法。
所谓多视角是要从用户和系统两个层面对服务进行监控。包括用户层面是通过模拟用户行为对服务的访问速度、流量变化、页面内容等进行监控。优点:可以定位对用户的影响,缺点:不知道哪个部分导致的。
系统层面则是使用丰富、多样的监控方法,覆盖每个层级的各个部分。对其运行状态进行全面监控。优点:可以定位哪个地方出现了问题,但不知道对用户的影响是什么。
两种视角相辅相成,结合使用可以快速的了解影响,定位问题。
自动化监控中另外一个重点是如何实施智能分析,智能分析主要包含两部分的内容:异常根源分析及如何进行波动性预警。比如在三个异常报警周期内,异常次数达到用户设定报警阀值的两倍这种机制。对于日常的运维来说,智能分析之后,紧接着要做的事情就是如何去处理异常。在伏晔的分享中,他提出故障自动处理过程中使用的三个有效手段,分别为:
- 联动处理(涉及流量切换预案、磁盘数据清理、系统重启及执行预设命令等)
- 报警去重(主要分为服务器维度、策略维度以及多纬度)
- 滑动时间窗口
这些手段都是在日常维护中需要频繁面临的问题,在分享中伏晔介绍了他的经验以及通过具体的性能监测图表,来帮助大家理解百度的运维方法。
主题二:速度与成本共赢的运维之道(视频,MP3 和 Slides 等资料下载)
这一部分的分享嘉宾是来自腾讯互联网运营平台部的赵建春,他的分享主要包含三个部分:关于运维工作的思考、成本与速度的案例以及如何固化速度与成本收益。
赵建春以一个问题作为开场白:究竟应用运维指的是什么?在经过“思考者”与“速度与激情”的启发下,他最终回答了这个问题:应用运维就是在公司与用户之间,不断地去均衡速度、质量、成本、效率这几者之间的关系。
接下来赵建春提出“长度”和“宽度”都是成本,此外还通过具体的数据说明了请求数、流量以及速度三者之间的关系。在介绍完毕相关的概念之后,他提到了腾讯内部的几个案例,包括音乐 miniportal 产品、QQ 空间中的信息中心、日志贴图,以及如何通过给图片“减肥”来提升用户体验的问题。
最后的部分是如何固化速度与成本收益,这也是运维人员都非常关注的话题。赵建春提出了非常关键的几个问题:
- 你的站点,有多少个请求?
- 你的站点,总大小是多少?
- 你的站点,什么最消耗资源?
- 如何知道全量用户的速度情况?
- 如何持续提升和保持?
此外,赵建春还针对数据监控体系做了介绍,并分享了监控机制的原理:自动抓包、获取日志、统计入库、展现。此外,还提出了一些问题与新的尝试,比如图片控制体系,长 Cache 工具以及度量考核体系等,并针对工作机制与优化方法进行了讲解。
Open Space(开放式讨论环节)
和以往的环节一样,为了让参会者能够有更多的时间进行相互的交流,本次活动依然设置了 Open Space(开放式讨论)环节。除了讲师付晔、赵建春外,开源领域的专家、现在奇艺网负责运维的黄冬也参与了小组讨论。在 Open Space 的总结环节,几位嘉宾也分享了每个小组讨论的话题:
伏晔:现在是一个分布式和虚拟化的时代,服务器的规模很大,相对来说,对于服务器硬件的质量要求会不是很高。比如一万台的服务器规模,如果突然坏了 100 台,不去处理会怎样或是每周集中处理又会怎样?其实对服务是没有影响的。此外他还与小组成员深入探讨了运维模式如何去适应未来的分布式和虚拟化技术等问题。
赵建春:针对自动化运维平台进行了讨论,涉及监控、调度、容错容灾等方面。结论是,服务要尽可能模块化,集群化,一致化,同时在一组服务中的某台服务器遇到问题时,要能做到主动探测并且将故障服务器自动卸载,然后自动上线健康的机器,从而达到免维的目标。
黄冬:介绍了峰值的计算方法:峰值有三种,5 分钟采样点的 5 分钟均值的峰值、5 分钟采样点的 1 小时均值、5 分钟采样点的 2 小时均值。视频服务质量的分析方法:在 Server 端 Apache 的 Access Log 中,利用 Bodysize 和 Bodysend 的时间,再利用视频的满流的比较,即可判断出用户播放视频时是否是流畅的了。如何利用调度系统去自动化的做调度、以及通过简单的运营商结构分析来实现将用户跳转至正常的网络服务器上访问。以及如何分析出不同个省份不同机房各自带宽的简单算法。
会后新浪微博 ID 为 @seadragonnj 的参会者分享了他的感受:
百度的演讲总结:1、最大化的自动化运维,自我修复和自动切换;2、监控是运维的根本所在;3、运维是一个系统工程,包括网络、DNS、端口、程序等;4、感觉互联网行业的运维比开发的责任更大;6、在项目开发的时候就把运维考虑进去;7、报警。
腾讯的演讲总结:1、运维的速度和成本是相辅相成的;2、固化运维的速度和成本的理念;3、通过在页面中加入时间方法,来统计各地加载页面所需要的时间;4、分析 access.log 文件;5、图片压缩;6、减少 http 的请求数。
有关百度技术沙龙的更多信息,可以通过新浪微博关注 ** @百度技术沙龙,或者加入百度技术沙龙微群 **,InfoQ 上也总结了过往 14 期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读。
评论