Skip to content

Instantly share code, notes, and snippets.

@liuyu
Created September 17, 2014 08:29
Show Gist options
  • Save liuyu/75b772686309957a00d4 to your computer and use it in GitHub Desktop.
Save liuyu/75b772686309957a00d4 to your computer and use it in GitHub Desktop.
梁定安:解密腾讯SNG云运维平台"织云"

梁定安:解密腾讯SNG云运维平台”织云“

SNG是腾讯体量最大、内部势力也最大的一个事业群,其覆盖了QQ、手机QQ、腾讯开放平台、腾讯云平台、广点通、移动分发平台应用宝在内的多条业务线。可见SNG的运维体系的庞大,早在2013年QCon北京大会上,腾讯业务运维T4专家、总监赵建春就在QCon分享过《海量SNS社区网站高效运维探索》,当时引起了运维界的广泛关注;而整个SNG的运维又是如何运作的呢?

梁定安,2009年加入腾讯运营部,先后从事系统运维、业务运维、运维规划和运营开发的工作,目前是社交平台业务运维组Leader,可以说是整个SNG云平台的缔造者,也是今年QCon上海2014大会自动化运维的讲师,届时将分享《腾讯SNG织云自动化运维体系》的话题。

为什么会有织云?织云重点解决什么样的问题?面对错综复杂的业务,织云又是如何自寻突变的呢?梁定安会全面介绍这个平台的特性、底层技术组成、以及给SNG所带来的价值。

InfoQ:梁定安你好,织云是什么时候开始做的?

梁定安:时间补充。 织云是腾讯SNG的内部云管理系统,定位是为SNG自研业务提供虚拟化管理和自动化运维的平台,几乎所有SNG的业务(Qzone、QQ秀、QQ相册、QQ音乐、QQ等等)的运维操作都基于织云平台完成。

InfoQ:织云定位为内部的自动化运维平台,那么它具备那些特征呢?

梁定安:织云最大的特色是”一键上云“帮助SNG自研业务快速实现上云的目标;而”自动调度“则实现了标准化自动调度操作;最终为了保证服务的一致性,我们针对自动调度中的资源进行一致性监控。织云的核心模块有:资源管理,包管理,配置管理,自动流程,一致性监控,中心文件源。

InfoQ:”一键上云“实现没有那么容易吧?非标准化业务应该是很难接入,在实现这一目标时,你们又遇到那些难题?

梁定安:首先,一键上云这个概念是在2013年提出的,当时为了实现SNG自研业务快速实现上云(虚拟化)的目标,在织云平台中实现的一个重大功能:即把原实体机的模块用虚拟机扩容,并把实体机下线。其次,一键上云的对象是无状态的WEB层和逻辑层(数据层在腾讯内部有专门的云存储解决方案)。主要思路是,对每个模块(集群)的部署行为,我们都能抽象为将不同的软件资源(包、配置文件、权限、目录)部署到对应的设备资源(实体机或虚拟机),并通过名字服务使其上线到运营状态。

一键上云的成功,得益于SNG自研业务的标准化运维管理的良好基础,我们所有程序的包管理(pkg包系统)、配置文件svn管理(CC系统)、目录管理(中心文件源)、权限管理、名字服务(L5)的高覆盖率,都可以经过轻量的改造即可成为织云平台的功能之一。再辅以流程引擎,将上云的步骤串成自动化的流程。用户只需在织云平台上管理好模块与依赖资源的关系,织云便可以一键式的完成整个迁云的过程。

的确,整个上云的过程我们也并非一帆风顺的,由于个别业务开发/运维的标准化操作意识不足,经常会发生现网篡改的现象,即织云的资源配置与现网实际运营不一致的情况,一致性监控就是在这个背景下诞生,用于监控配置与现网的一致性情况。一致性监控基于C/S架构,利用linux内核inotify通知机制对资源进行监控,并采用了动态上报的架构,优化了海量规模数据上报处理的瓶颈问题。

InfoQ:织云的自动调度是实现业务动态扩缩容?你们又是如何控制”雪崩“的?面对业务的大量突发,是全自动,还是人工干预?�

梁定安:是的,我们认为当一个模块可以灵活的实现扩容自动化时,它便具备了跨IDC/城市迁移的调度能力。同理,我们对运维的业务按核心功能的不同分别抽象成不同类型的SET/服务视图(包含多个模块),当整个SET的标准化程度且SET内的模块都具备自动调度的基础能力时,我们便可以对整个SET进行调度操,目前Qzone、说说、广点通等重点业务的SET已经具备快速调度能力。

补充

InfoQ:一致性,包括应该是多个方面的,上面有提到一致性监控,还有织云的另一大特色服务一致性管理,这里的关系与具体包含的内容都有那些?

梁定安:服务一致性管理不同于一致监控点。这里的管理对象是我们自动调度中依赖的资源,包括:包、配置文件、目录、权限、后置脚本。而之前所说的监控是通过inotify实现。

针对管理对象我们采用不同的一致性保证策略: 包:版本,进程名,运行状态 配置文件:版本与md5 目录:md5 权限:通过不同权限接口查询IP/模块的授权情况 后置脚本:md5

InfoQ:织云的核心模块有:资源管理,包管理,配置管理,自动流程,一致性监控,中心文件源。对于开发团队而言,在织云做这些操作,和不使用织云有什么区别? 大体的操作流程是什么样子的?

梁定安:

InfoQ:在织云上的业务部署监控、日志收集是如何实现的?而运维”织云“这个平台运维工程师又是如何保证平台的稳定性?

梁定安:

InfoQ:你是从研发转到了运维,而大部人都认为运维不如研发,而你又为什么想要转岗呢?你又是如何看待这两者之间的关系的?

梁定安:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment