当前位置: 首页 > 科技观察

腾讯十年运维老手:运维团队的五把“杀手锏”

时间:2023-03-22 10:17:55 科技观察

【.com原创文章】回顾十年运维,若有机会重来,最重要的是什么?团队应该优先考虑什么?只有这样,才能支撑我们在未来更好的前行。“十年”精心运维之路加入腾讯十年运维老将赵建春,回顾这十年:2004年:加入腾讯开发贺卡;2005年:加入QQ空间开发团队,负责留言板模块;2006~至今:公司组织架构调整,接触运维工作。期间带领运维团队负责QQ延伸的各个社区的运维,包括Q空间、QQ音乐、QQ会员、QQ秀等一系列QQ产品。该团队由89人组成,维护着100,000台服务器。经历的重大事件包括:红米QQ空间发布90秒销售10万台,获1亿点赞;天津爆炸事件迅速将2亿多活跃用户从天津转移到深圳和上海;春节准备红包。2016年红包访问量较2015年增长10倍,5000台设备快速扩容,最新访问量达到每秒477万次。不要让自己成为一名运维消防员。最重要的是保证你做的系统是可靠的,不会轻易出错。不要让自己成为一名消防员。靠谱之后,就要花更多的时间去解决效率问题,让工作更有效率,追求更高的目标。团队合作最好的地方是什么?资源管理:对编写的程序和代码进行清晰的划分和分类,以不同的形式构建每个资源;容错解决方案:在海量服务维护和运维过程中出现故障时,保证项目服务和服务器不受影响,做到及时处理;统一架构CMDBA:将所有依赖资源注册到一个业务模块上;同时,如果要快速决策和调度,还需要有效的监控。DLP:内部定义的非常关键的监控。出现这个点后,就可以知道是哪里出了故障;入口监控:告知故障根源。容错解决方案的L5用于解决容错、灰度、路由等。运维团队的五个“杀手锏”,全球管理服务器最多的L5系统,管理着上亿台服务器。上下文很清楚,完全不会混淆。L5系统(上图)也类似于DNS系统,可以提供一排服务模块来解决单点问题。L5是如何做容错的?L5-主机/接口级容错原理L5由两部分组成:L5,DNS和L5,代理。CGI给模块提供ID,根据模块下设备的成功率和延迟,通过IP+PROT反馈给CGI。接入后通过成功率和时延将数据上报给L5agent,然后进行统计。当发现故障率特别低时踢出。当发现成功率和失败率下降到一定程度时,会降低访问权重,实现容错和负载均衡。可以注册一个模块,添加多个设备,形成容错效果。如果你发现一台故障率很高的机器,就把它踢掉。它的成功率已经恢复了,可以加回去了。新增一台服务器,设计权重为1,如果之前的是100,可以逐步上线。你也可以给它打分,当分数下降时,迅速踢掉它。L5具备灰度、容错、路由、负载均衡能力。L5如何帮助运营团队?日常故障减少80~90%;无需频繁更换ip+port(也是故障根源);同名便利服务线上线下打通;通过权重灰度上线;模块访问关系有助于定位故障根源;Interface延迟和故障率可用于监控;它集成了容错、负载均衡、路由、灰度和监控功能。统一的框架和架构团队有数千名开发同仁,每年都有大量的毕业生加入,还有社会同仁。进来之后,他们都希望能为平台多做代码贡献,展示自己的技术实力,或者提升自己。那么,问题来了。在开发过程中,如下图所示,有管道、消息队列、信息文件锁、记录锁、文件映射内存、迭代服务器SelectpollIo等,这些都是各种技术结合产生的代码,交出来的对团队维护来说,几万台各有千秋的服务器,想要很好地掌握它,了解它的工作机制和原理,更好地维护它,基本上是不可能的。那我们该怎么办呢?将网络通信部分列为标准框架,提高其通信效率,统一维护。统一框架的业务逻辑部分采用SO动态库方式编写,与框架分离部署,类似于Web服务器上的CGI。接入层使用QZHTTP,逻辑层是SPP和SF的框架。作为社区服务,虽然用户热点不是很集中,但是数据量和访问量还是非常大的。大量的CKV用于存储,同时对于访问量非常大的问题,比如没有开空间的用户、游戏用户、会员等,后期会进行定位形成高访问模块。如下图所示,是一个架构体系:接入层为TGW,流量从中进出;中间层使用L5进行调度;存储层,因为每个存储模块都需要切分,所以增加了接入,从上到下,技术架构已经统一规范,同时组织上也衔接了逻辑操作和维护层进行标准化维护。统一框架如何助力运维?网络框架和业务逻辑SO分开管理,大大降低运维人员的学习成本,大大提高框架的稳定性,可以跨业务统一维护,提高运维效率最多10次。资源打包管理如上图所示。资源打包管理是对开发的程序包进行标准的打包操作。开发的程序具有不同的特性。有的需要添加银行参数,有的需要依赖目录,有的需要前期准备和后续工作。.把它全部放在一个袋子状的包装里,放在一个盒子里。然后提供一个标准的操作界面,如安装、卸载、启动、停止操作等,这些操作使它们具有相关性。资源打包管理如何助力运维?部署规范统一,再也不用为找不到而发愁了。操作界面标准化,易于学习和掌握。它支持脚本前和脚本后准备以及对在进程级别运行的所有资源的完整镜像。资源注册——CMDB虚拟镜像资源注册到从CMDB,形成服务的虚拟镜像。除了传统的基本配置信息外,一个模块所依赖的所有资源都记录在二级CMDB中,形成一个模块的虚拟镜像。CMDB+资源=虚拟镜像CMDB虚拟镜像如何助力运维?一个模块运行的所有资源的“完整镜像”记录了该模块运行的所有资源,不需要文档。决策调度——智云自动化部署平台团队内部有智云自动化部署平台,从应用设备获取资源,发布部署,检测,测试,上线。每个环节还有一些详细的步骤,比如申请设备时屏蔽告警事件,发布时同步传输文件,发布后检查程序的打包进程是否启动,启动后进行业务测试等。智云自动部署流程的23个步骤如下图所示,是智云内部自动部署的平台。流程开发完成后,所有依赖的资源都打包在一个盒子里,盒子里的东西放在资源仓库??里,一些模块都注册在CMDB里。如果腾讯智云的自动化运维系统需要部署模块A或扩容,可以手动触发,也可以自动触发。控制手动系统的运行,从资源仓库中部署模块1上模块旁边的三个资源,通过L5系统注册,即可自动启动该模块。之后,将注册回一个模块,并对其进行自动化操作。每个块是一个步骤。这一步执行完之后是绿色的,执行失败是红色的,没有执行是灰色的。如果执行成功,可以看到可以做自动扩容、日常练习、回收。智云全自动扩缩容运维规范推广流程如下图所示,为运维规范推广流程。这似乎是自然而然的。但实际上这个过程并不那么容易。注:本文整理自WOT互联网运维暨开发者大会主题分享《如果运维可以重来一次》赵建春赵建春,腾讯社交网络运营部总经理助理,技术运营频道总裁,专家级工程师。2004年加入腾讯,先后从事研发、运维、数据建设与管理工作,积累了丰富的海量技术运营实战经验。IT技术群,期待你的加入后台回复“进群”审稿受邀【原创稿件、合作站转载请注明原作者及出处为.com】