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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM