本文整理自:EasyAgent正式開源啦丨開源送「糉」禮git
2018年,袋鼠雲技術團隊決定在技術社區上開源項目,爲開源社區貢獻力量。github
同年FlinkX、FlinkStreamSQL相繼上線,通過三年的發展,Star數分別達到2.2k和1.5k,位列Flink生態領域前茅,得到普遍的社區支持。網絡
三年多的時間裏,袋鼠雲數棧技術團隊一直以技術爲核心,堅持開源開放、將數字化技術紅利回饋社區的理念,不斷的爲你們分享成果。架構
在今年4月份的ArchSummit2021年全球架構師峯會上,數棧技術團隊爲你們分享了《雲原生大數據系統架構的實踐和思考》,並承諾將陸續開源數棧在雲原生方面的實踐。運維
1、EasyAgent是什麼
EasyAgent是爲遠程統一管理主機端Agent生命週期而設計的系統,從2017年上線至今,已累計在金融、政企等生產環境平穩運行超過數千萬小時。ide
在大規模日誌收集系統裏,經過EasyAgent能夠集中管控10000+數量的日誌採集器(如elastic filebeat),實現採集器的安裝、升級、啓停管理和配置更新。工具
在數棧運維管家EasyManager裏,經過EasyAgent能夠實現數棧服務的安裝、升級、卸載、啓停和配置管理。EasyAgent是數棧運維管家的關鍵組件,是實現數棧自動化部署的基礎組件。性能
2、EasyAgent解決了什麼問題
若是說如今「煊赫一時」的kubernetes是容器的編排調度者,那麼基於EasyAgent則能夠實現對傳統主機進程(服務)的編排調度。EasyAgent如同部署在各個主機上的Daemonset,以Sidecar的方式管控所納管進程(服務)的生命週期。學習
在Linux裏,經過service和systemctl能夠實現服務(進程)的開機自啓和手動啓停管理,開源庫supervisor也能實現對服務(進程)的守護和手動啓停,可是這二者都沒法原生支持對服務(進程)的遠程調度和管控。大數據
對於系統級服務(可打進OS 鏡像)的服務,使用系統原生和supervisor等開源方案基本能夠知足需求,但在須要動態對服務進程進行調度(安裝、卸載、遷移)、啓停、變動配置時,系統原生和supervisor的方案就沒法知足了。
EasyAgent就是在這樣的需求背景下產生的,它在服務端和網絡主機之間打通了一條鏈路,實現對目標主機服務(進程)的編排和生命週期的管理。
在企業級軟件系統交付行業裏,交付軟件的第一步是部署,如何快速實現自研商業軟件的自動化部署和運維,每每表明着一家ToB企業的交付效率和交付成本。
成熟的商業公司選擇自研自動化部署和運維工具。EasyAgent是實現數棧雲原生部署的基礎組件,解決了部署和監控等環節的自動化問題。
3、EasyAgent如何解決上述問題
EasyAgent是爲目標主機和上層應用之間搭起一座橋樑。接下來,咱們從上層應用和目標主機的角度來講明如何解決上述問題。
一、從上層應用角度
EasyAgent初衷是爲遠程統一管理主機端服務(進程)生命週期提供一種解決方案,因此咱們首先對服務(進程)的生命週期進行了抽象。
參考service和supervisor等,咱們把服務(進程)的生命週期抽象爲查詢、安裝、配置、啓動、中止、執行、卸載七個過程,對應的咱們封裝了七個API供上層業務系統調用,上層業務根據業務要求,組織並調用對應的API來知足需求,如自動化部署平臺業務視角。
二、從遠程主機角度
主機端運行的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等,這樣能夠實現對服務狀態的動態觀測。
4、如何體驗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