乐趣区

关于开源:Agent生命周期管理框架EasyAgent正式开源啦


2018 年,袋鼠云技术团队决定在技术社区上开源我的项目,为开源社区贡献力量。

同年 FlinkX、FlinkStreamSQL 相继上线,通过三年的倒退,Star 数别离达到 2.2k 和 1.5k,位列 Flink 生态畛域前茅,取得宽泛的社区反对。

三年多的工夫里,袋鼠云数栈技术团队始终以技术为外围,保持开源凋谢、将数字化技术红利回馈社区的理念,一直的为大家分享成绩。

在往年 4 月份的 ArchSummit2021 年寰球架构师峰会上,数栈技术团队为大家分享了《云原生大数据系统架构的实际和思考》,并承诺将陆续开源数栈在云原生方面的实际。

一、EasyAgent 是什么

EasyAgent 是为近程对立治理主机端 Agent 生命周期而设计的零碎,从 2017 年上线至今,已累计在金融、政企等生产环境安稳运行超过数千万小时。

在大规模日志收集零碎里,通过 EasyAgent 能够集中管控 10000+ 数量的日志采集器(如 elastic filebeat),实现采集器的装置、降级、启停治理和配置更新。

在数栈运维管家 EasyManager 里,通过 EasyAgent 能够实现数栈服务的装置、降级、卸载、启停和配置管理。EasyAgent 是数栈运维管家的要害组件,是实现数栈自动化部署的根底组件。

二、EasyAgent 解决了什么问题

如果说当初“煊赫一时”的 kubernetes 是容器的编排调度者,那么基于 EasyAgent 则能够实现对传统主机过程(服务)的编排调度。EasyAgent 如同部署在各个主机上的 Daemonset,以 Sidecar 的形式管控所纳管过程(服务)的生命周期。

在 Linux 里,通过 service 和 systemctl 能够实现服务(过程)的开机自启和手动启停治理,开源库 supervisor 也能实现对服务(过程)的守护和手动启停,然而这两者都无奈原生反对对服务(过程)的近程调度和管控。

对于零碎级服务(可打进 OS 镜像)的服务,应用零碎原生和 supervisor 等开源计划根本能够满足需要,但在须要动静对服务过程进行调度(装置、卸载、迁徙)、启停、变更配置时,零碎原生和 supervisor 的计划就无奈满足了。

EasyAgent 就是在这样的需要背景下产生的,它在服务端和网络主机之间买通了一条链路,实现对指标主机服务(过程)的编排和生命周期的治理。

在企业级软件系统交付行业里,交付软件的第一步是部署,如何疾速实现自研商业软件的自动化部署和运维,往往代表着一家 ToB 企业的交付效率和交付老本。

成熟的商业公司抉择自研自动化部署和运维工具。EasyAgent 是实现数栈云原生部署的根底组件,解决了部署和监控等环节的自动化问题。

三、EasyAgent 如何解决上述问题

EasyAgent 是为指标主机和下层利用之间搭起一座桥梁。接下来,咱们从下层利用和指标主机的角度来阐明如何解决上述问题。

1、从下层利用角度

EasyAgent 初衷是为近程对立治理主机端服务(过程)生命周期提供一种解决方案,所以咱们首先对服务(过程)的生命周期进行了形象。

参考 service 和 supervisor 等,咱们把服务(过程)的生命周期形象为查问、装置、配置、启动、进行、执行、卸载七个过程,对应的咱们封装了七个 API 供下层业务零碎调用,下层业务依据业务要求,组织并调用对应的 API 来满足需要,如自动化部署平台业务视角。


2、从近程主机角度

主机端运行的 Sidecar 采纳 Golang 语言开发,可同时兼容多种 OS 和 Arch 的主机。为了升高对网络策略的要求,EasyAgent 采纳 Push 模式,主机端单向注册到 server 端。

主机端 sidecar 的部署过程即是主机的接入过程,主机接入之后 sidecar 与 server 端建设 TCP 即可实时响应 server 端发送过去的管控指令。sidecar 和 server 之间通过 gRPC 进行通信,次要有三个通信接口,详情请参考:

https://github.com/DTStack/ea…

syntax = “proto3”;

service EasyAgentService {

rpc registerSidecar (RegisterRequest) returns (RegisterResponse);

rpc readyForControl (ControlRequest) returns (stream ControlResponse);

rpc reportEvent (Event) returns (EmptyResponse);

}

下层业务通过 install 装置的服务,在指标主机上以 sidecar 的子过程模式存在,sidecar 守护并管制服务过程的启停。

同样,下层业务通过 exec 和 config 接口可近程实现服务的配置查看和更新。在 sidecar 端实时采集的服务状态 / 性能等信息通过接口 reportEvent 实时同步到 server 端,server 端可选择性把服务状态 / 性能数据同步到第三方存储,例如 Elasticsearch、influxdb 等,这样能够实现对服务状态的动静观测。
四、如何体验 EasyAgent

EasyAgent 开源我的项目地址:

https://github.com/DTStack/ea…

如果你想要更好的理解 EasyAgent 我的项目,返回学习 Quick Star(老手教程),三步理解 EasyAgent 应用办法:

https://github.com/DTStack/ea…

如果你有任何对于扩大 EasyAgent 的微妙想法,欢送返回 github 社区通过 Issue 来进行探讨。

数栈是云原生—站式数据中台 PaaS,咱们在 github 和 gitee 上有一个乏味的开源我的项目:FlinkX,FlinkX 是一个基于 Flink 的批流对立的数据同步工具,既能够采集动态的数据,也能够采集实时变动的数据,是全域、异构、批流一体的数据同步引擎。大家喜爱的话请给咱们点个 star!star!star!

github 开源我的项目:https://github.com/DTStack/fl…

gitee 开源我的项目:https://gitee.com/dtstack_dev…

退出移动版