???
年,袋鼠云技术团队决定在技术社区上开源项目,为开源社区贡献力量。同年FlinkX、FlinkStreamSQL相继上线,经过三年的发展,Star数分别达到2.2k和1.5k,位列Flink生态领域前茅,获得广泛的社区支持。
三年多的时间里,袋鼠云数栈技术团队一直以技术为核心,坚持开源开放、将数字化技术红利回馈社区的理念,不断的为大家分享成果。
在今年4月份的ArchSummit年全球架构师峰会上,数栈技术团队为大家分享了《云原生大数据系统架构的实践和思考》,并承诺将陆续开源数栈在云原生方面的实践。
今天我们来兑现承诺了我们宣布EasyAgent正式开源!
之后我们将继续开源其他的云原生实践
EasyAgent是什么
EasyAgent是为远程统一管理主机端Agent生命周期而设计的系统,从年上线至今,已累计在金融、*企等生产环境平稳运行超过数千万小时。在大规模日志收集系统里,通过EasyAgent可以集中管控+数量的日志采集器(如elasticfilebeat),实现采集器的安装、升级、启停管理和配置更新。
在数栈运维管家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进行通信,主要有三个通信接口,详情请参考: