小米的运维理念是NoOps,就是希望把运维的日常工作尽可能的自动化起来,减少手工运维操作。做为一个运维人员,没有人愿意每天重复那些繁琐的运维操作;更没有人愿意每天处于高度紧张的精神状态,随时准备应对线上故障。
小米运维系统通过借鉴和使用开源软件、并按照具体的场景进行优化,同时也逐步将一些通用的运维组件进行开源,目前发展已经趋于成熟。本次51CTO记者特别采访了【WOT2016互联网运维与开发者峰会】特邀讲师、小米运维高级工程师黄继,他将分享小米运维发展中的关键节点和对自动化发展的未来期许。
讲师介绍
小米运维高级工程师 黄继
黄继,目前在小米运维部负责主机资源虚拟化和业务部署自动化相关工作,构建私有的类PaaS平台,旨在实现业务部署和容量管理部分的自动化、资源利用率的最大化;涉及业务的部署发布、容量管理和调度,资源的虚拟化等。
小米运维在最初就提出了NoOps的思想作为工作开展的核心,因此高效的、体系的、高程度自动化的运维系统是运维工程师一直致力和追求的目标。他们不断在努力和尝试将任何低效高风险的人工管理转换为高效可靠的自动化管理,并提高运维的效率和业务的稳定性。
所谓NoOps就是完全的通过自动化系统来管理和运维线上业务,自动的完成发布上线、故障诊断、容量调整等。从简单到复杂的运维工作,不再需要运维介入干预。而这需要有相当程度的业务标准化支持、众多的基础设施依赖和体系化的运维系统建设。所以,这个愿景的实现是一个任重道远的过程。
前期,小米运维工程师主要是通过部署系统和服务树系统建设来规范和标准化线上业务,整合业务的编译、打包、发布、启停、主机与业务程序之间对应关系的自动维护。这个可以说是关键点之一,因为运维规范和标准化的抽象程度不仅决定了部署/服务树系统实现的复杂程度,还决定了是否给业务架构的发展变化留有足够空间,如果抽象的不够,很可能出现系统覆盖不了业务变化,面临重新调整标准还是重新设计系统的两难。小米运维在这块花费了大投入,他们的部署和服务树系统实现方案目前管理和支撑着大部分的小米服务,同时起着整合周边系统、提供其他自动化所必须数据的至关重要作用。
其次,小米监控系统是小米NoOps道路上的一个大事件。open-falcon是小米公司从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界的一些大的互联网公司做监控、用监控的思考出发,设计开发出的监控系统。这一系统的目标是做最开放、最好用的互联网企业级监控产品。
目前,open-falcon已经成为大家熟知的开源版本,大概有50多家互联网公司在使用。这套系统除了解决小米庞大规模的业务/主机数据采集、监控、绘图等基础监控功能外,通过与服务树系统的整合,实现了监控-主机-业务之间关联关系的自动维护,而这个工作在传统人工运维中需要消耗相当大的人力成本。
安装了falcon-agent的机器,可以实现自动开始采集各项指标,主动上报,不需要用户在Server做任何配置(这和zabbix有很大的不同),这样做的好处,就是用户维护方便,覆盖率高。当然这样做会给Server端造成较大的压力,不过open-falcon的服务端组件单机性能足够高,同时都可以水平扩展,所以自动多采集足够多的数据,破解了SRE和DEV的事后追查难题。
最后,就是容器化引入和动态部署系统的构建,在资源利用率提升和时间成本节省上已初有成效,这次黄老师将在4月份的互联网运维和开发者峰会上,分享小米在业务的自动发布和动态调度方面的一些实践经验,其中也包括目前行业比较关注的Docker/Mesos等开源软件在小米运维系统中的应用等。
目前,小米的运维自动化着重解决了人-主机-业务-监控这几个运维基本元素自身以及相互之间关联互动的管理,还仍然在不断的发展和完善过程中,未来希望不仅可以实现自动化管理,还可以较智能化的辅助人工完成某些决断、完成和处理一些复杂的问题。
另外,黄老师提到了对他优秀的运维工程师的理解,那就是优秀的运维工程师首先是不守旧,能折腾,敢于尝试和改变;其次是追求完美,有打破砂锅问到底、不达目的不罢休的精神;最后是专业能力和素养,对技术的执着和热爱。欢迎志同道合的同学加入小米,一起来NoOps!