Agent生命周期管理框架—EasyAgent正式开源啦
本文整理自: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/easyagent/blob/master/docs/protoc.md
#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/easyagent
如果你想要更好的了解 EasyAgent 项目,前往学习Quick Star(新手教程),三步了解 EasyAgent 使用方法:
https://github.com/DTStack/easyagent/blob/master/docs/quickstart.md
如果你有任何关于扩展 EasyAgent 的奇妙想法,欢迎前往 github 社区通过 Issue 来进行讨论。
数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据,是全域、异构、批流一体的数据同步引擎。大家喜欢的话请给我们点个star!star!star!
github开源项目:https://github.com/DTStack/flinkx
gitee开源项目:https://gitee.com/dtstack_dev_0/flinkx

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微软正在开发全新流媒体硬件:可连接电视,玩 Xbox 云游戏
微软认为,视频游戏的未来将是一种基于订阅的模式,人们每月支付一定金额的费用就可以获得足够多的游戏。微软 Xbox Game Pass 就是基于这样的模式,向玩家提供内部和第三方工作室开发的游戏。 但这主要还是数字下载,而微软去年又推出了 Xbox Cloud Gaming,增加了流媒体功能。新功能类似于“游戏界的 Netflix”,允许玩家访问托管在远程服务器上的游戏,这些游戏通过互联网传输给用户。其他一些公司也推出了类似的游戏流媒体服务,包括谷歌的 Stadia,以及亚马逊的 Luna。 如今,微软的目标是将其云游戏产品推向其他平台。今年 4 月,微软开始通过 iPhone、iPad 和 PC 上的网络浏览器,向一些用户推广 Xbox Cloud Gaming。。今日,微软又计划将其拓展到电视上。 微软计划的一种方式是,与制造商合作,将云游戏添加到智能电视中。此外,微软也在开发流媒体设备,用户可以插入电视或电脑显示器上,从云端以流媒体的方式进行游戏。 微软并没有详细说明这些设备会是什么样子,但这很容易让我们想起亚马逊的 Fire TV 和谷歌的 Chromecast 电视棒,这两款产...
- 下一篇
可笑!慕课网涉嫌抄袭开源项目至今没有道歉,而且在偷偷的“毁尸灭迹”
第一次为这件事情发声后,一个疑似课程讲师的人用一个微信小号加了我,我也收到了道歉。然后看他态度诚恳,我也心软了,答应他后面暂时不发文章了,也告诉他好好睡觉,别再做噩梦了,没什么大不了的。 我一直纳闷儿,慕课网怎么没有任何行动呢?昨天我才发现我想错了,他们已经在行动了。 2021年6月10日,我发现慕课网已经开始对涉嫌侵权的课程内容进行了修改,目前发现了他们在改预览网站和项目的源码包。原来,他们还是没有打算光明正大的处理这件事,对的,事件发酵了近一周时间,他们还在试图遮遮掩掩。虽然我之前也已经预料到了,但是实际的抓住他们的小动作,还是有些寒心的。 我大意了,没有闪 2021年6月7日发了文章然后收到了道歉,之后算是平静了两天吧。但是我后来发现了一些不对劲的地方:既然慕课网已经发现这个课程存在问题了,也让讲师来诚恳的道歉了,怎么涉嫌侵权的课程还在销售呢? 2021年6月10号,我收到了一些慕课网运营的广告消息,他们可能也没注意就发给我了。这些消息都是6.18的课程推广活动,然后我点进去发现了这个课程还在推广的前列,而且课程内容好像有一点点变动。 然后,我就琢磨了这两天的事情,讲师道歉,我答...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6