了解最新公司动态及行业资讯
京东云作为京东集团对外输出能力的窗口,实现京东能力+云平台赋能客户。其产品涵盖IaaS层、PaaS层以及以此为基础的电子商务、物流、金融、保险等领域的服务和解决方案。本文主要从保障这些服务的稳定性和效率的角度来讲解京东云自动化运维系统的构建和实现。
2017年12月1日至2日,由51CTO主办的WOTD全球软件开发技术峰会在深圳中州万豪酒店举行。
京东云高级架构师在主会场与来宾分享了《京东云自动化运维系统建设》的主题演讲。以下是演讲稿。
说到京东云,我们最看重运维,需要一个自动化的运维平台。这方面有几个关键问题,主要围绕安全、部署变更、网络管理、监控管理……使用自动化运维来提高平台架构的稳定性和人员的开发效率。
在京东云的整体环境中,除了我们的技术团队管理和维护的云应用外,还启用和提供了各种SaaS服务。
如何在云端维护客户业务的稳定性?我们对此进行了深入的研究和探索,我们将分四个部分进行说明:
京东云自动化运维基础组件
针对以上问题,我们从四个方面入手:
如上图所示,京东云运维平台的大致建设路线图是:基础组件→客户端系统→部署系统(包括:各种发布系统、任务调度系统、监控系统),最后完善运营和维护平台。,以便更好地服务于我们的客户。
服务和资源管理
首先我们来看第一个基础组件:服务组织资源的管理it运维,也就是利用CMDB来实现所谓的配置管理。
通过CMDB的“服务树”概念,我们可以把握以下三个方面:
因此,“服务树”主要涉及到系统中服务的实时信息,包括:哪个服务在哪台机器上,哪些实例,属于哪个App,内部有哪些逻辑进程,以及如何申请所需的外部权限,以及我们如何对其进行监控等。这些都需要从服务器获得。
其次,可以解决服务之间的解耦关系,即服务与实例的关系,以及服务对外提供的窗口。
上图右侧为“服务树”与名称服务的示意图。底部显示了从应用程序到实例的解耦关系,顶部是客户端的退避()。
任务调度管理
第二个基本组成部分是任务调度管理。在实际场景中,无论我们是想协同操作、在线发布,还是部署和分发文件。
这些都需要系统调度目标机器完成相应的任务,也就是我们必须要求指定的机器能够按照指定的策略执行指定的命令。由于该过程的实时性、批处理性和共生性,支持该系统极具挑战性。
同时,我们需要通过策略来定义不同类型的并发。比如我们要发布一百台机器,那么我们不会同时部署,而是批量并发。
因此,我们需要指定每个并发的具体任务,判断成功与否的逻辑关系,检查具体的完成程度,还要找出那些超时的状态。由于这些是通过底层架构构建的各种服务,它们的调度逻辑其实是一样的。
此外,所有执行操作都需要可追溯,包括能够知道谁、何时以及执行了哪些操作。可见的安全性和标准化非常重要。
而如果出现故障,我们需要及时截取输出来定位问题。这些是任务调度系统基于服务树求和需要实现的基本逻辑。
监控平台
第三个基本组成部分是监控平台。监控无非是一个从数据采集、到数据聚合、再到存储和处理的过程。
与通常的数据监控不同,我们构建了一个时间序列数据存储(TSDB)。由于要查询的数据点比较多,所以我们将每个查询和收集到的监控点信息按顺序存储。
另外,我们的系统具有“少读多写”的特点,即“写”(写数据)比较均衡;而“读取”(读取数据)是突发的。
例如,检查一个监控的状态是一个随时都要做的操作。一般这样的写操作需要1秒、10秒或1分钟作为获取间隔,这是一个比较频繁的过程。读操作是突然发生的,所以我们需要分离读写。
因此,我们基于 ES() 实现 TSPD,其中涉及到两个封装:
监控数据的另一个特点是自动采样。有时,一些频繁的查询涉及很大的时间跨度。
例如:一个月甚至一年。由于我们的数据采集间隔是1秒、10秒或者1分钟,如果直接查询所有的数据点,需要产生海量的数据,这当然是很难实现的。
因此,我们自动对写操作进行采样。当查询超过15天的数据时,我们会按分钟或每小时汇总数据,放入数据库,然后查询一个月的数据。
通过自适应路由,我们可以找到有限的一小时数据,同时我们的数据库和业务系统速度也可以有更快的水平。
另外,对于那些实时数据处理,我们主要采用基于JNS的多地点部署和多调度流程,从而实现多维实时计算。
客户
第四个基本组件是客户端。由于所有业务都需要客户端,对于京东这样大的公司,会细分为部署类(如JNS)、监控类、初始化等客户端类型。
想象一下,如果我们需要加载、部署或升级 100,000 台机器,工作量是可想而知的。
即使我们只维护一个几十万台机器的Agent,由于环境复杂,多个IP的存在,根据一个“何时何地出问题”来处理会很费时费力。单一维度。
所以这里我们介绍一下Agent资源溢出的重要概念。比如对Agent的监控,由于占用了一些计算资源,当前的服务可能会被关闭,所以这种服务外的监控会影响服务本身的稳定性。
可以看出,Agent客户端需要做以下事情:
在具体实现中,我们使用 ifrit 进行控制。也就是当一台机器在引入服务时,负责管理的agent会在我们的ifrit服务器上注册,告知它当前的分机房和使用的agent的版本。
然后其对应的客户端就可以相应的下载这些信息包,从而掌握最新版本的Agent等信息。这导致了一个简单的客户端架构。
京东云自动化运维部署介绍
有了上述客户端和组件系统的构建基础,我们进一步构建部署和发布任务就相对容易了。
我们先来看看应用的部署系统。除了实现应用部署外,它还管理各种服务的维护和资源,以及访问的过程。
如上图所示: 除了编译构建“”之外,我们还实现了流量访问“”。
如上图所示,这里的Agent有一个核心需求:实现跨平台。由于京东整体平台环境复杂,我们有不同的虚拟机、物理机,需要整合上面提到的各种操作。
因此,我们需要实现以下容错功能:
对于上述功能的实现,我们将部署分为两种:
大体流程是:编译构建自己的产品库(包括代码包和代码项)→通过部署服务和上述调度系统的部署服务发布(物理机和容器都可以实现)→部署完成并开始运行→对运维(尤其是镜像日志的收集)→通过日志服务进一步分析。
同时我们在前端做好了流量接入,中间还提供了一个LB(负载均衡)网络。通过以上两种部署方式,我们可以根据服务的实际需求进行按需升级。
此外,我们这里使用的是基于 NS 的服务自动化和资源管理。它不需要关心当前服务的具体流程是如何实现的,只关注:当前的容量,需要什么资源,可以获得的资源。
京东云自动化运维监控系统
除了上面提到的部署,我们还非常重视监控系统。监控最重要的作用是能够在出现问题时及时恢复。
为此,必须完成以下工作:
因此,面对虚拟机和复杂环境,为了保证服务器不停止运行,我们在上线过程中采用了-分层发布。
它可以监控一个服务是否在机器层、服务层、外部流量访问层,甚至网络层。这些都是监控需要解决的问题。
上图是监控的整体架构,展示了从底层数据抽象,到数据采集,再到数据处理和离线处理的全流程。
数据采集方式包括:采集代理、外部检测和API推送。
同时,处理逻辑包括:如何判断异常类型,对异常做出何种告警,运维沟通或研发沟通的方式。这些步骤都是提前计划好的。
当然,这些失败本身就是事件类型。因此,我们需要考虑如何存储事件以方便查询和进一步决策。
由于之前的事件可能会影响到后续的事件,如果你有一个好的事件库,那么你可以让系统下游知道上游发生故障的时间和地点,这对于下游故障排除非常有用。都非常有帮助。
同时,我们也会对监测到的数据进行一些离线处理,通过各种高效算法反馈给相应的告警计算。最终以趋势图或各种事件、报警的形式显示各种数据。
在之前的基础上it运维,我们构建的京东云监控系统由以下四种监控类型组成:
其实这个问题对于京东来说会很严重,因为它会直接影响到用户流量甚至用户订单的流失,所以我们需要从用户层面做黑盒检测。
基本监控
具体而言,对于机器监控,我们将机器连接的整个过程自动化,从采集到计算,再到报警,从而避免人工干预。
同时,我们为各种报警指标设置了默认值。例如,通过发现某台机器的cpu.idle小于10%,我们可以从服务名知道它所属的服务,以及谁是维护者,然后向它的维护者发送告警信息,并通过报警信息,可以大致了解相关数据,从而实现后台联动。
生存监测
对于生存监控,主要检查进程和端口是否存活。为了实现部署联动,我们指定进程和端口的部署路径。
通过进程的路径,我们可以知道进程的类型和对外开放的端口,从而实现自然监控。
性能监控
再来看看性能监控,主要关注服务的外部指标,一般来自日志。
为了统一,我们规定、规范、约定了一种日志格式,从多个维度读取日志信息中不同的标签(tag)值。
比如,从宏观层面来看,京东整体流量是稳定的,但通过多维度聚合可以发现,某省机房流量存在细微的底层波动。
当然,除了主动从日志中抓取,我们还可以从程序和用户的告警中学习。
业务监控
业务监控就是从用户那里检查服务是否正常。比如电商中常用的就是通过模拟全国用户访问,找出分省、分运营商或分机房的访问情况。
这是使用外部网络或自定义方法来测试业务。此外,我们还将使用模拟云操作的方法来监控云服务。
例如:模拟用户登录云网站→购买主机→部署镜像→发布。
让我们判断一切是否正常。通过这种方式,我们能够在用户之前从用户的角度识别、处理和解决问题。
总结与展望
如上图所示,我们最终在上一个的基础上搭建了京东云自动化运维平台方舟。
在界面上,它可以提供:
综上所述,我们的监控自动化平台通过各种技术的应用,基本实现了服务化,实现了全生命周期。
面对大量的 SaaS 客户,我们的解决方案为他们提供有保障的交付效率、成本节约以及对各种可能出现的问题的准备。
组织/夏立成 上海蓝梦创始人兼CEO,湖北IT公司副总裁,致力于为企业客户提供IT外包网络维护服务,帮助他们创新、迭代和进化。
蓝盟1999年成立于上海,致力于为企业客户提供IT外包、弱电工程(网络布线、机房建设、门禁考勤、视频监控、电话交换机、多媒体会议室)、系统集成(网络搭建、网络改造)、WIFI覆盖、数据备份、病毒防护、文件权限、虚拟化等)、云服务(微软云、阿里云、企业邮箱等)“一站式”IT外包解决方案。, 咨询。