海量业务下高效运维最佳实践——智效平台

前言

随着信息技术的高速发展,云计算、物联网、移动互联网、大数据、人工智能、VR等概念层出不穷。众彩纷呈的概念背后实际上仍然离不开最基础的IT系统,而IT系统正在向更大规模、更复杂、更高级的方向演进,而越来越复杂的系统,对运维的要求就越来越高,海量业务通常需要高实时处理,并且更加关注用户体验,重视响应时间、可用率等性能指标,例如我们常常说的系统可用性达到四个九。各种各样的操作都要在安全的前提下同时拥有最高的效率,而传统运维方式已愈发难以满足业务敏捷需求。因此,我们通过构建自动化运维体系来实现标准化、提高工程效率和运维质量。自动化运维的收益不仅是提高了效率、解放运维,而且提升了产品交付效率和质量,最重要的是降低了运维成本。

运维自动化平台的实践之路

京东作为互联网企业,其信息系统时时刻刻都要经受海量并发访问和大规模订单的考验,同时还实现应用的快速部署、上线。其技术运营服务也在不断演进,简单来讲我们的平台主要经历了批量化阶段、自动化阶段、平台化发展以及持续化改进四个重要的阶段,不断加速自动化运维的转型。

工欲善其事,必先利其器。 从业务需求和集团内部环境角度考虑,在实现自动化转变的过程中,选择合适的工具极为重要。 我们根据平台自身要解决的问题和期望出发,经过对主流的底层开源工具进行了深入的了解和研究,我们选择了SaltStack技术,它是一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,且扩展性好。 很容易管理上万台服务器,速度够快,服务器之间秒级通讯,并且底层采用动态的连接总线, 使其可以用于编配、远程执行、配置管理等等。 但仅靠开源工具无法满足用户个性化需求。 因此,在此基础上,我们结合自身自动化运维能力的基础,通过开源+自研的技术方案、针对运维实践场景和特性,把诸多运维经验比如日常巡检、命令执行、配置管理等运维操作进行可视化、平台化,从而服务更多的用户。 将其打造为集团的运维自动化平台,即智效平台,它是面向研发、测试、运维团队一站式运维自动化管理平台。

智效平台可实现批量指令执行、批量脚本执行、配置管理、任务发布等功能, 实现了自动化管理,大幅提升工作效率,助力企业快速实现DevOps,支撑企业业务快速稳定发展。

平台执行命令次数数以万计,支持上千个服务发布、管理数万个容器,内部支撑多个平台。通过统一的操作平台,打破了开发和运维团队之间的障碍,提升了应用的上线和部署效率。同时,平台可统一收集操作日志,支持快速查询和检索,帮助快速定位问题,保障了业务系统运行的稳定性,并且能促进开发、运维和质量等各部门之间的沟通、协作与融合。实现高效并发,分布式发布、并发不排队、一键部署等功能,同时方便上线,可一键取消,快速回退,支持一次部署多台主机,支持多账户同时操作,简化了运维工作,提升运维效率。

批量化+自动化,让重复的工作不再枯燥

以往企业常采用小规模的集群服务器,在日常管理中难免需进行重复操作,如更新上百台服务器上的文件、批量应用启动/停止、备份上百台服务器上的配置文件等等。同时管理成千上万台主机是对运维工程师智力与体力的双重考验。而在自动化运维时代,这个工作不应再“如此枯燥”。智效平台为运维工程师提供自动化的脚本执行和文件分发服务,是一种轻量化的批量执行方法,能有效提高运维工作效率。命令执行的功能相对而言比较简单,调用salt/ansible本身的API即可,诸如cmd或shell,平台再通过一些封装兼容salt和ansible。平台提供统一的web管理界面,操作规范化、集中化、批量化及自动化,提供简单、快捷、无错、高效、可靠、安全协同的运维服务,极大地提升运维效率和稳定性,同时提供统一易用的运维API给上层业务,上层业务无需关注底层实现,即可通过平台界面来完成自动化运维工作。

极度简化的发布流程

随着公司业务的不断发展,IT规模越来越大、服务器数量越来越多,从初期的几十台服务器发展到庞大的数据中心,新业务不断上线,应用版本不断迭代更新,运维工作量成倍增加,单靠人工登录服务器,通过脚本发布代码的方法越来越无法满足业务要求,而且传统发布流程非常复杂,稍有不慎就会造成严重问题,影响业务的正常运转,不但效率低下,且无法保证运营质量。然而,对于智效平台而言,这并不是什么难事,它提供了一个极简的发布流程,不用再输入大量 命令和编写复杂的脚本,只需在界面上“指指点点”,即可完成服务的发布和上线。

智效平台在设计之初就规划了两种发布类型,即服务类和非服务类,服务类如C、GO等服务的发布需研发自编译代码,再通过web界面上传代码包,界面上还提供发布与回滚功能;非服务类如脚本类的发布可直接通过git获取代码。此外,被定义为预发布环境的机器除了支持发布和回滚外,还支持合并分支、提交分支、打包。而且发布权限可直接交给开发成员,运维只需要创建好服务、管理好权限、确保系统稳定即可,这样发布不仅安全而且高效。

不仅如此,智效平台还支持在线编辑yaml格式的sls文件,其核心功能salt states可以理解为配置管理,它基于pillar模块,pillar可以理解为一个定义minion数据的各种接口,诸如端口、路径、变量、密码等等。因此用户可以通过编辑sls自定义一个发布的命令集,再通过pillar获取动态变化信息,从而完成服务的发布,使整个发布过程更加灵活高效。

统一的产品树配置管理

配置管理功能是整个管控功能中十分重要的一环,它利用单文件多服务器的文件分发方案,主要应对配置文件(或启停脚本等)的发布、更新、在线编辑等场景,通过提供界面化的简易操作,规避scp/ftp/rsync等传统方式,简化操作流程,提升开发、运维人员效率。

配置管理提供创建、拉取、查看、在线编辑、分发、删除等核心功能,可以用于灵活管理自己的配置文件、启停脚本等;用户可以通过拉取功能拉取Prod或者Beta环境的配置文件,然后在线编辑修改,通过分发功能同步到指定设备的指定目录,几步简单操作即可完成线上多机配置文件的生成。如下是配置管理视图

配置管理操作界面

①打通CMDB,以CMDB数据为基础、以应用为维度,以组织架构树的方式呈现,方便定位;另外,系统会根据用户ERP,在用户首次进入时,自动定位到其所负责的应用。

②配置文件区分正式环境和预发布环境,同时根据不同类型,对文件进行分类管理, 打通 J-one(集团内部平台),通过应用成员来进行严格的权限管控,确保不同应用间配置文件的隔离性、安全性。  

③针对不同的操作,对应有不同的文件状态,不同的文件状态,又会对应不同的操作,根据文件状态,我们会对配置文件进行操作管控。比如说,状态码为2000和2002的文件,是不能被编辑的,因此也就不会被授予编辑权限。

在配置管理中,我们引入ansible, 它配置简单、功能强大、轻量级,无需在客户端安装agent并且支持API及自定义模块特性,通过Playbooks可定制强大的配置和状态管理。下面是配置架构系统图以及工作原理介绍:

配置管理系统架构图

Ansible Worker架构图

①系统操作请求到达REST API后,发送给异步调度celery模块,celery后端对接的是消息中心,实现任务的异步分布式调度。ansible拿到执行任务,连接远程主机执行运维操作,然后将执行结果发送消息中心,前台界面即可将执行结果回显给操作用户。

②基于Playbook开发,它是ansible用于配置、部署和管理托管主机剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远程主机达到预期状态。因此,我们通过 Playbook来定制不同功能场景的配置。

③引入Supervisor完成对ansible worker进程的守护,使其能够持续稳定地提供文件分发服务。

配置管理模块功能虽然不是很复杂,但其应用场景广泛,极大提升工作效率。另外,自动化运维工具ansible的引入使用,也为我们智效平台提供了更多的选择,可以根据任务的时效性差异化要求选择不同工具。

精细化权限管理及日志审计能力

智效平台依托精细化权限管理及日志审计能力,提供安全、高效运维通道,保障运维工作权限可管控、操作可审计,不仅提升运维日常工作效率而且降低安全风险。

1.权限管理

智效平台是一种基于团队协作的工作模式,需要通过权限控制来约束团队成员的行为,以实现安全运维的需要。智效平台采用基于RBAC的权限管理模型来实现权限控制,具体来说,是将授权模型划分为功能授权和资源授权两个维度,在两个维度基础上进行用户授权。

2.操作日志审计

运维安全是IT管理中不可或缺的一环,智效平台除了在安全层面通过事前权限授权、事中敏感指令拦截外,还为用户提供了事后运维审计的特性,审计日志分为操作日志和发布日志两个维度,用户在智效平台上所进行的命令执行与服务发布操作均会以日志的形式进行记录,针对每一条命令执行或服务发布记录,可以详细了解执行的细节信息以及执行状态和结果,方便运维通过日志对用户操作进行审计,从而达到安全、可控、合规的目的。

小结

以上仅仅是智效平台的一些实践能力介绍,人无完人,技术亦如此,要打造一个好的电商能力平台,必须能做到因需而变,要基于公司的实际业务场景,不断的对平台进行优化升级,把运维人员从纷繁复杂、过度依赖人工的工作中彻底解放出来,不断提高运维产能和效率,实现真正的无人值守、高效运维。

未来,随着大数据、人工智能的发展,我们将一如既往,不断的摸索和研究最新技术和算法,将人工智能与运维相结合,通过机器学习的方法,不断提升运维效率,最终实现运维的智能化发展。

盖亚技术服务提升平台是集业务监控、运营工具、质量分析、工程效率于一体的一站式技术服务平台,提供从”需求->测试->发布->运维->质量跟踪”一站式的工具支撑,平台中各种工具和监控系统组成一个技术服务生态圈,为研发、测试、运维等用户提供全方位的优质服务,全面提高产品的用户体验。平台中的工具和监控系统,都经历了618、双11的严格考验和日常的不断打磨,不仅为部门提供了持续集成、持续测试、持续部署服务,也提供了合理的流程管理、质量管理、统一监控告警功能。在加强团队的协作,助力前台团队的快速创新迭代和研发效能升级起到了重要的作用。无论你是产品经理,项目经理、开发人员、测试人员还是运维人员,这个平台对于你来说都会有一定的帮助!

合作请联系:gaea@jd.com