一、計畫介紹
WeCube 是一套開源的,一站式 IT 架構管理和運維管理工具,主要用於簡化分布式架構 IT 管理,並可以透過外掛程式進行功能擴充套件。
二、起源
微眾銀行在分布式架構實踐的過程中,發現將銀行核心系統構建於分布式架構之上,會遇到一些與傳統單體套用不同的痛點(例如,伺服器增多,部署難度大;呼叫鏈長,全鏈路跟蹤困難;系統復雜,問題定位時間長等),在逐步解決這些痛點的過程中,總結了一套 IT 管理的方法論和最佳實踐,並研發了與之配套的 IT 管理工具體系。WeCube 就是將該套方法論和最佳實踐,從微眾內部眾多 IT 管理工具體系中提煉出來,整合成一套開箱即用的 IT 管理解決方案。
三、設計理念
WeCube 的設計理念與 IT 系統生命周期管理基本一致。可以透過「六個維度和一個核心」來闡述。
一個核心:透過註冊新外掛程式持續擴充套件 WeCube 的功能,透過如下 5 個能力實作外掛程式註冊及協作。外掛程式註冊詳見「外掛程式註冊」。
選單布局:WeCube 提供前端 UI 基座和前端開發規範,使各個外掛程式的前端互動能夠無縫整合到 WeCube,進而形成一個統一平台。
許可權模型:WeCube 的許可權模型提供「使用者-角色-選單」三級許可權模型,並提供統一認證方案。數據許可權及 API 許可權,由外掛程式自身控制。
流程編排:WeCube 內建一套標準的 BPMN 流程引擎,可以透過客戶自訂編排驅動外掛程式協同工作,減少人工幹預。編排設計詳見「編排設計」。
數據模型:外掛程式需要將自身需要提供給其他外掛程式使用的數據模型註冊到 WeCube 的統一數據模型,然後透過標準的 CRUD 介面提供數據存取服務。
系統參數:WeCube 的全域參數、外掛程式需要客戶修改、外掛程式需要暴露給其他外掛程式使用的參數,需要註冊到 WeCube 的系統參數內。
六個維度:透過定義六個維度的選單,並將外掛程式功能有組織性的插入這六個維度選單中,形成對 IT 系統全生命周期的有效管理。
任務:匯聚多種型別任務,形成一體化的工作平台。工作內容清晰可見,輕重緩急一目了然。
設計:定義模型和規範,形成標準化設計語言。透過規範化設計及圖形化展示,清晰、準確地描繪出對分布式架構的期望。
執行:透過各類自動化、標準化任務的執行,將分布式架構的期望設計變成現實存在,消除人員能力參差不齊導致的實作差異。
監測:定義全方位的監測項指標,透過持續收集監測數據,精確反映現狀,並行現現實與期望的差異項。
智慧:套用機器學習等技術,賦予智慧能力。透過數學建模,制定應對監測發現的差異項的處理策略。
調整:透過執行處理策略來不斷進行動態調整,最終保持現實與期望的對等,進而使系統穩定執行。
四、技術實作
WeCube 分為核心功能模組和外掛程式模組。
核心功能模組使用 Java/MySQL/VUE 開發,主要負責工作流程,視覺化和核心數據儲存。
外掛程式模組用於功能擴充套件,分為資源管理、數據整合、功能增強三類外掛程式。對於外掛程式,WeCube 定義了一套介面規範,外掛程式開發者可以在遵循規範的前提下,自行選擇開發語言。目前已有的外掛程式使用的開發語言包括 GO 語言和 Java。
五、系統架構
WeCube 2.x 版本
元件間詳細關聯圖:
1, Portal web:瀏覽器客戶,客戶與 WeCube 互動的入口。
2, Portal nginx:接收客戶端存取請求,如果請求靜態資源,返回 Core 或外掛程式的靜態資原始檔。如請求動態服務,轉發到後端 API gateway。Portal nginx 建議采用負載均衡實作高可用,也可以使用 keepalived 做主從高可用。
3, API gateway:負責 Portal nginx 或其他外部系統的動態服務請求的路由分發。
A) 登入認證請求,轉發到 Auth server,使用使用者名稱密碼換取 Token。Token 采用非對稱加密,包含使用者名稱、角色、選單許可權資訊。
B) Core 服務請求,轉發到 Core。比如角色添加、外掛程式註冊、編排設計等等。
C) Plugin 服務請求,轉發到對於的 Plugin。比如 CMDB 配置管理、監控數據查詢、任務管理等。
建議負載均衡實作高可用,也可以使用 keepalived 做主從高可用。
APIGateway 啟動時透過 Core 獲取外掛程式例項列表,並建立路由規則。
同時 APIGateway 會監測 Core、Auth Server、Plugins 的狀態,實作 Core、Auth server、Plugins 例項的主從型別的高可用。
4, Auth server:主要負責使用者認證服務,並返回含有用於認證的 token。由 API gateway 實作主從型別的高可用。
5, Core:WeCube 的核心模組。提供外掛程式註冊、編排設計、許可權管理、批次任務、外掛程式執行資源管理、數據模型、系統參數等核心功能。由 API gateway 實作主從型別的高可用。
6, MYSQL:WeCube Core 和 Auth server 的資料庫例項。建議 MYSQL 主從實作高可用。
7, S3:外掛程式包映像檔的儲存。外掛程式註冊是寫入映像檔,外掛程式例項啟動時讀取映像檔。
8, Plugin instance-Docker:外掛程式執行的容器母機,可以配置多台母機,執行多個外掛程式例項,提供高可用。
9, Plugin instance-MYSQL:外掛程式執行所需要的資料庫例項,為每個需要資料庫的外掛程式建立獨立資料庫。建議 MYSQL 主從實作高可用。
10, Plugin instance-S3:外掛程式執行所需要的物件儲存,為每個需要儲存檔的外掛程式分配單獨的桶。
11, Plugin instance-Squid:外掛程式存取外部資源的代理伺服器,按網域名稱放通白名單。在安全要求較高的時建議部署。
以上 11 個元件組成 WeCube Platform。
六、功能簡介
WeCube 的功能選單設計與設計理念保持一致。分別是任務、設計、執行、監測、智慧、調整、協同、系統。
系統: 系統參數:管理 WeCube Platform 執行所需的系統參數。資源管理:管理 WeCube 提供的資源如容器母機及資源上執行的例項。許可權管理:管理 WeCube Platform 的使用者,角色和選單,可以對許可權進行選單級別的管控。高危規則配置:管理高危命令的檢測規則,當使用平台執行功能時命中規則將彈窗提示進行二次確認。
協同: 外掛程式註冊:選擇外掛程式包上傳,外掛程式包需聲明本外掛程式的依賴、所需選單、數據模型、系統參數、許可權設定及執行資源,註冊後透過容器執行,支持多例項,可以檢視外掛程式執行的日誌。選擇外掛程式服務,透過外掛程式執行的參數關聯 CMDB 數據模型的內容值,形成註冊。任務編排:比如設計一個 VPC 建立的編排。包括建立 VPC、建立子網路、建立 VM。流程的每個執行節點需要關聯外掛程式。
設計: 規劃設計:用於設計機房結構。資源規劃:用於例項化一個機房,特別是兩地三中心結構。套用架構設計:用於設計一個套用的邏輯架構。套用部署設計:用於實際部署一個套用。支持灰度釋出。CI 數據管理/查詢:透過模型圖形進入單個數據管理以及查詢。CI 綜合查詢管理/數據綜合查詢:用於配制多 CI 內容報表。比如一個套用使用到了哪些主機。
執行 : 編排任務執行:在選擇編排後可對選擇目標物件執行編排,支持灰度操作。比如重新開機某個資源集的 5 台主機。物料管理(Artifacts 外掛程式提供;管理應用程式的包。可以定義各種檔,可以配置環境差異導致的變量替換規則,不需要人工處理。批次執行:透過配置綜合查詢並選擇目標。在透過特定外掛程式來執行任務。比如某個套用的所有主機,執行一個使用者許可權變更。
任務: 工作台:ITSM 工單發起、任務處理的統一入口,按照 ITSM 五大流程劃分場景;樣版管理:新建、釋出、變更模版;樣版組管理:新建、管理模版分組。
監測: Agent 管理: 註冊、啟動、停止;數據管理: 提供數據采集配置, 數據查詢等功能;告警管理: 提供閾值配置、日誌監控、告警觸發等功能;檢視管理: 提供圖形配置和自訂檢視功能。
智慧: 容量建模:透過多元回歸分析建模,獲取業務量指標和資源消耗之間的系數關系。容量預測:將預測的業務量指標輸入到模型中,獲取合理的資源容量配置建議。
七、核心流程
外掛程式註冊時序圖:
編排任務執行:
原始碼下載地址:
https://gitee.com/WeBank/wecube-platform.git
看到最後,如果這個計畫對你有用,一定要給我點個「 在看和贊 」。