海量存储第一弹 - 自动化运维

作者简介:裴泽良,2010年加入架构平台部,一直从事运营系统相关的建设工作,历经了腾讯海量存储及CDN服务的运营体系从入门到初级再到较为完善的各个阶段,目前专注于提升腾讯云上业务的运营质量,以及建设新一代高效与安全的自动化运维体系。

运营体系

在介绍我们的运营体系前,有必要先简单介绍下我们的业务及其特点,方便大家更好的了解我们的运营体系为何是这样。

图1架平所服务业务的特点

架构平台部(后面简称架平)承载的业务涵盖了腾讯主要的海量存储、CDN场景,譬如微信聊天图片&视频、朋友圈图片&小视频、空间相册图片&视频、腾讯视频点播&直播、腾讯云、微云等的文件、图片、视频、语音等场景,在全球拥有数十万台服务器、数百个机房、几十Tbps的下载带宽、EB级存储量,为全球用户提供上传、下载等服务。

TFS类存储系统提供了类似于文件系统的文件存储服务,譬如微云里面的文件、朋友圈图片均存储在此,TDB类存储系统提供了KV存储服务,譬如QZone空间的feed、说说,以及TFS的索引数据等均存储在此。TFS/TDB类存储系统相关的内容会在本系列其他文章中有详细介绍,这里不再描述。

图2架平运营体系

架平的运营体系主要包括基础配置CMDB、成本预算核算、报表&流程&测试、质量监控、现网操作这五大块,这五大部分组合成一个完整的运营体,为部门业务安全可靠高效的运营保驾护航。

CMDB:基础性的配置管理,包括了设备、机房、业务等基础信息,主要提供设备资源提前报备、到货验收初始化、高危端口管理、设备转移退役等功能;

成本预算核算:部门承载了公司海量的存储、CDN服务,每年的运营成本占了公司总运营成本的相当一部分,必然要有全面、严谨的成本管控核算;

报表&流程&测试:业务多报表多,需要有个报表系统来统一管理,现网变更的管理、突发事件产生后的跟进需要流程系统,以及对现网质量关键的保障--自动化测试;

质量监控:我们的眼睛,时刻盯着数十万台服务器、成百上千个业务,一旦出现异常,最快秒级主动通知到负责人,降低对业务的影响时长;

现网操作:几十台机器的时候,不需要建设复杂专用的现网操作管理系统,几百台甚至上千台的时候还可以依靠ssh+expect这类脚本来搞定,但如果服务器达到数十万台、分布在各种不同运营商、甚至海外机房、aws等场景时,就必须要有一套专用系统来支撑对现网安全、高效的操作。

我们今天主要讲的就是海量设备、海量业务服务场景下的现网操作。

在安全与效率中追求极致的自动化运维

一、自动化运维的背景

这里说的自动化运维主要是探讨与现网操作相关的内容,譬如业务扩容、变更、异常的分析与处理等,这里面都会涉及到对生产机的操作,譬如要登录到生产机、要修改文件内容、要执行相关命令等。

当整个服务只有几十台机器、很少数业务的时候,可以不需要CMDB,也不需要专用的扩容/变更等系统,直接采用excel记录机器模块关系+ssh一台台登录到生产机的方式就能够满足日常的管理变更等需求,其实很早期的QQ后台也就是这么玩转的。

当机器规模上升到几百台、业务开始多元化的时候,很显然就需要建设规范化的CMDB,以及要借助专用的管理工具,譬如expect、ansible等,否则效率极低同时又极易出错引发人为事故。

但当机器规模上升到数万台、数十万台,且分布在全球各个区域、不同运营商,业务数量增长到以百计、千计时,这些开源的自动化运维工具也不可能无法满足我们的需求,我们就需要根据业务特点建设专用的运营管理系统。

二、 我们业务对自动化运维的诉求

海量业务服务下的运维理想中的效果就是各种各样的操作都能在安全的前提下同时拥有最高的效率。这里面的核心目标就是安全与效率,但这两者常常难以兼得,要操作效率那就不能任何操作行为都受到限制,否则就谈不上效率,要安全那就要求任何操作行为都提前审批、预定义好,但在复杂多变的业务场景下这就谈不上效率了。

当然了理想状态可能难以达到,但是我们可以靠近理想状态,通过建设自动化的运维体系从体系层面来保障安全,同时做到尽量减少人工参与,提升操作效率。

三、自动化运维的体系建设

图3生产机权限管理体系

架平数十万台服务器的安全管理,需要有专用的安全管控系统,目前我们采用了TEG安全平台部的铁将军+架平自身研发的权限层级授权体系来综合管控服务器的权限。

铁将军主要提供了登录鉴权、shell解析器劫持等功能。架平的权限授权体系主要包括了对虚拟业务平台、业务平台内的权限组、部门内部人员与权限组的对应关系、虚拟业务平台与CMDB业务模块以及机器之间的关联关系的管理,同时可对具体的权限组授权可执行命令白名单,然后把这些基础信息推送到铁将军。

在用户实际ssh登录到某台机器的时候,铁将军便按照这个规则来判断该用户是否有登录这台机器的权限,以及当用户成功登录进去之后输入shell命令开始执行时,铁将军也会判断用户所提交的命令是否包含在白名单内,不在白名单内的命令是无法被执行的。

通过这种权限管控体系,可以把不同业务的负责人相互隔离开,不同业务的负责人是无法相互登录到对方所负责的服务器,降低登录的随意性,以及虽然负责人能够登录到所负责的服务器,但也没有传统意义上的root权限,而是只能执行白名单内的命令,进一步降低随意操作的风险。这种方式拥有了一定的灵活性,同时也保证了一定的安全性。

图4自助化运营体系

上面主要描述了登录生产机的管控,但很多时候登录生产机本身就是一个低效率的行为,但用户仍然有对生产机操作的诉求,譬如异常的分析与处理,能不能不登录生产机就可以对生产机进行既安全又高效的操作呢?针对此需求,我们构建了全新的自助化运营体系。

如上图,该体系主要包括固化后常见生产机的操作场景(定义为工具)、快速搭建业务专用的操作场景(定义为流程)、操作的安全分级等部分组成。每个对生产机操作的功能都可以同时批量应用到指定的多台机器上,相较于直接一台台登录生产机,操作效率提升明显。

安全分级主要描述了每个操作的安全风险,高风险的操作每次执行时都需要相关人审批,低风险的操作每天会有操作机器数量的限制,操作数量内无需审批即可执行,超出数量后则需要审批才能执行,保证了安全的同时,也拥有了一定的灵活性。

常见生产机的操作场景是指我们把用户经常操作的场景固化到系统里面,譬如增加crontab项、减少crontab项,这样用户就不需要一台台登录生产机,通过自助运营系统就可以安全高效的完成操作,在系统内部该能力也称之为“工具”。

快速搭建业务专用的操作场景是指我们可以把已经固化到自助运营系统里面的工具自由组合成一个“流程”,由多个工具来共同完成一个复杂的操作场景,譬如业务模块的一键上架、异常的自动分析&处理等,我们在下面会详细介绍。

图5业务模块的一键上架

所服务的业务形态多,各种业务必然会有少许差别,对应在运营的某些环节,也可能会有细微的差别,譬如业务模块的扩容。某些业务模块的扩容不仅仅只是部署程序模块,同时还要申请TGW(腾讯内部使用的类似LVS的外网ip收敛负载均衡系统)、CL5(腾讯内部使用的名字服务负载均衡系统)、报备高危端口等,通过为该场景建设专用的流程,就可以实现该业务专用的安全高效的一键扩容的效果。

图6异常的发现&分析&处理全流程

海量业务的运营过程中,硬件的故障、网络的异常、软件的BUG等等各种各样的问题都很常见,所有异常如果都告警出来并由人来处理,那效率就会非常低。针对这种情况,我们建设了异常的发现(监控)->分析(分析系统)->处理(自动处理系统)全流程的体系。目前对于单机不可服务、硬盘故障或者某些常见的业务异常,已做到告警产生后,会自动触发分析流程,由具体的分析结果决策是自动调用处理流程,还是通知负责人来人工处理,在某些场景下已做到了完全不需要人工干预,提升异常分析&处理的自动化运维效率。

架平的海量存储对应了几十万级别的硬盘,行业内硬盘故障率约月千成之三,由此可知坏盘对于我们来说是再常见不过的情况,坏盘的处理流程涉及“发现->停现网服务->迁移数据->通知现场换盘->确认换好盘->初始化->加入服务”这些环节,如果每一块坏盘都需要人工介入处理,则效率极其低下。针对该场景,建设了坏盘自动化处理系统,除了实际换盘还需要人工处理之外,其他各环节已是全自动运转,大大提升了这种常见运维的处理效率。

关于体系建设这块儿已基本介绍完了,我们总结下介绍了架平的自助运营体系,生产机权限管理体系,以及几种常见运维场景下的安全化高效化的实践。通过自助运营体系把常见的现网操作集成进来,大大减少人工直接接触生产机、使用“黑字符”的频率,通过生产机权限管理体系,把不得不登录生产机的场景安全化管理起来。

四、移动化

移动化时代的今天,对现网的操作也同样有移动化的强烈需求。

当我们小伙伴在外面一起聚餐时出了一个故障需要处理,在以往我们要以最快的速度回到电脑前,当我们夜里睡觉的时候出了一个故障需要处理,在以往我们要以最快的速度打开电脑登录VPN,当...

而现在我们将自助运营的能力通过企业号的方式下放到移动端,让用户通过手机就可以与生产机交互,完成常见的现网操作,让我们即使不在电脑前出现故障时也可以很从容。

文章来源公众号:腾讯架构师(TencentArchitecture)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯云数据库(TencentDB)

腾讯云数据库智能化海量运维的建设与实践

作者介绍:鲁越,腾讯云数据库架构师团队负责人,主要负责腾讯云数据库MySQL、Redis、Oracle等数据库售前架构、运维、调优等工作,曾就职于网易和尼比鲁。

1.1K370
来自专栏JAVA技术zhai

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

509120
来自专栏美团技术团队

数据库智能运维探索与实践

近些年,传统的数据库运维方式已经越来越难于满足业务方对数据库的稳定性、可用性、灵活性的要求。随着数据库规模急速扩大,各种NewSQL系统上线使用,运维逐渐跟不上...

21810
来自专栏我的安全视界观

【企业安全】企业安全项目-测试环境内网化

23550
来自专栏媒矿工厂

优化延迟的最佳视频传输方案(二)

上一篇文章《优化延迟的最佳视频传输方案(一)》介绍了在整个视频传输系统中的分发链前端和媒体内容准备方面的延迟优化方案,本文将继续介绍传输系统的接下来的优化方案,...

22120
来自专栏小巫技术博客

如何开发一个App

46730
来自专栏大数据架构师专家

运维所需技能体系

产品研发有自己的生命周期: 设计阶段---开发阶段---测试阶段---部署阶段---线上运行阶段---下线或者回滚阶段。

21720
来自专栏互联网数据官iCDO

【实战101】手把手教你寻找并排除虚假异常流量!

引言:本文结合了作者丰富的互联网数据分析实战经验,深度剖析了如何运用GA来发现,分析并排除虚假和异常流量。

13120
来自专栏知晓程序

冲击传统搜索服务!微信上线「搜索直达」功能,百度你怎么看?| 微观

19220
来自专栏ThoughtWorks

2015.1 技术雷达 | 技术篇

许多项目都存在外部代码依赖,这些依赖中很大一部分是由开源项目提供的。为了确保构建过程可被重现,我们总是与固定版本的外部依赖进行集成。但这就意味着我们与这些类库的...

36270

扫码关注云+社区

领取腾讯云代金券