葉遠清
(廣州市第十二人民醫(yī)院 廣東省廣州市 510620)
現代化智慧醫(yī)院需要部署眾多信息系統(tǒng),為充分利用物理服務器資源,通常采用虛擬化平臺創(chuàng)建虛擬機進行部署,但商業(yè)的虛擬化平臺費用高昂,一種替代方案是采用開源虛擬化平臺OpenStack。OpenStack 的基礎核心服務如虛擬機管理、虛擬網絡構建、塊存儲管理等都很成熟穩(wěn)定,但平臺自帶的控制面板服務Horizon 功能過于簡陋,其Web 操作界面并不能滿足生產環(huán)境的使用要求,如缺乏靈活的權限配置、缺乏訂單計價體系、監(jiān)控體系不完整等[1]。為了解決以上問題,本文基于OpenStack 設計了一套云管平臺,通過OpenStack 的RESTfulAPI 接口,將底層云化管理的工作依托于OpenStack 實現,而上層的業(yè)務相關操作控制臺則重新搭建。
OpenStack 是由美國國家航天局NASA 和Rackspace 共同發(fā)起的開源云計算軟件,由OpenStack 社區(qū)共同維護,提供IaaS(InfrastructureasaService)層服務,常用于企業(yè)搭建私有云平臺。通過OpenStack,可以對計算、存儲、網絡等基礎設施物理資源進行虛擬化管理[2],并以服務的形式提供給用戶或者PaaS(Platform as a Service)層服務使用。
經過開源社區(qū)多年發(fā)展,OpenStack 軟件日趨完善,目前已經發(fā)布22 個穩(wěn)定版本,核心服務都已非常穩(wěn)定。各核心服務的邏輯關系[3]如圖1所示。
Nova:計算虛擬化管理服務,管理虛擬機的整個生命周期;Neutron:網絡虛擬化管理服務,為其它服務提供網絡連接;Cinder:塊存儲管理服務,為虛擬機提供塊存儲;Swift:對象存儲管理服務,為其它服務提供對象存儲管理,如為Glance 提供鏡像存儲服務,為Cinder 提供卷備份管理服務;Keystone:認證管理服務,為平臺提供身份認證和訪問策略;Ceilometer:測量管理服務,為計費和監(jiān)控以及其它服務提供數據支撐;Glance:鏡像管理服務,提供虛機鏡像上傳、檢索、管理服務;Horizon:控制面板服務,為其它服務提供Web 界面管理,簡化用戶操作。
經過對需求的收集和甄別,確定整個云管系統(tǒng)需要如下子系統(tǒng):
圖1:OpenStack 核心服務邏輯關系
權限子系統(tǒng):靈活地對用戶、角色賦權,管控資源訪問;用戶子系統(tǒng):按部門、角色管理用戶;計費子系統(tǒng):對各用戶和部門的資源使用計費;價格子系統(tǒng):對資源標定價格,對訂單做總價核算;訂單子系統(tǒng):對資源創(chuàng)建形成訂單,加入審批流程;搜索子系統(tǒng):對資源、訂單、日志、監(jiān)控信息檢索和分類;安全子系統(tǒng):接入安全產品,如WAF、防火墻、日志審計等;設備子系統(tǒng):方便地添加物理服務器,擴容平臺計算節(jié)點;VPN 子系統(tǒng):提供VPN 接入服務;鏡像子系統(tǒng):管理系統(tǒng)鏡像;監(jiān)控子系統(tǒng):管理各種監(jiān)控信息;日志子系統(tǒng):收集分析各類服務日志。
在用戶層面,提供瀏覽器和手機APP 兩種使用方式,同時管理員和租戶分別使用管理端控制臺和租戶端控制臺。整個云管系統(tǒng)設計如圖2所示。
鑒于整個系統(tǒng)較復雜,功能繁多,本系統(tǒng)采用分層與微服務相結合的架構[4],設計如圖3。
圖2:云管平臺系統(tǒng)設計
圖3:云管平臺架構設計
整個系統(tǒng)分為界面表示層、接口匯聚層、應用業(yè)務層、數據層和云化層。
界面表示層是用戶入口,處理界面展示和操作相關功能,采用VUE 框架實現;接口匯聚層是網關,統(tǒng)一管理與前端的API 接口。應用業(yè)務層實現具體的業(yè)務邏輯,包含各個子業(yè)務的具體實現,架構設計上采用微服務架構,基于SpringCloud 微服務框架,各微服務通過基于http 協(xié)議的RPC(Remote Procedure Call 遠程過程調用)進行交互。
應用業(yè)務層包括多個微服務,每個微服務實現一個對應的子系統(tǒng),如:Account Service 實現用戶子系統(tǒng),Order Service 實現訂單子系統(tǒng),Search Service 實現搜索子系統(tǒng),Monitor Service 實現監(jiān)控子系統(tǒng),Device Service 實現設備子系統(tǒng),Security Service 實現安全子系統(tǒng)等等。
其中特別的是Cloud Service,該微服務位于其它Service 與OpenStack 平臺之間,作為其它Service 與OpenStack 的溝通橋梁。Cloud Service 微服務通過RESTfulAPI 接口與OpenStack 交互。為了明確云管平臺與OpenStack 的技術邊界,方便后續(xù)開發(fā)維護,只有Cloud Service 才與OpenStack 交互,其它微服務通過Cloud Service 與OpenStack 交互。通過這種隔離設計,在系統(tǒng)內構建一層云化抽象層,只需調整Cloud Service 即可應對OpenStack 的接口變動。
應用數據層負責業(yè)務數據的存儲和管理,采用Mysql 負責持久化存儲,Redis 負責緩存管理,ElasticSearch 則處理需要檢索的各類數據,如日志、監(jiān)控數據、資源明細等等。應用數據層只負責應用業(yè)務數據的存儲和處理,不包括OpenStack 平臺的數據。
云化層是獨立部署的OpenStack 平臺,為整個系統(tǒng)提供計算、網絡、存儲等資源的虛擬化管理,相關功能都通過豐富的RESTfulAPI 接口提供給CloudService 調用。
本云管平臺在系統(tǒng)功能層面添加了賬戶、訂單、計價、權限、搜索、安全等功能,已能滿足大部分生產環(huán)境需求。在架構設計上采用了分層+微服務的模式,帶來如下好處:
(1)界面表示層與接口匯聚層分離:界面表示層獨立開發(fā)、部署、測試,降低了開發(fā)期團隊內的溝通成本,與接口匯聚層通過API 交互,在瀏覽器和手機端共用一套API 接口,減少開發(fā)工作量,也便于后期維護;
(2)應用業(yè)務層與云化層分離:隔離了OpenStack 技術棧的復雜性。后續(xù)OpenStack 平臺做版本升級,云管平臺只需要根據OpenStack 新版本的接口變動,對CloudService 做適配修改即可;
(3)各微服務功能明確,任務單一,降低構建整體系統(tǒng)的復雜性;
(4)采用微服務的開發(fā)模式,開發(fā)團隊管理上可圍繞業(yè)務功能組建小開發(fā)團隊,更加符合企業(yè)的分工和組織結構;小開發(fā)團隊更加關注自己的成果,方便管理;
(5)微服務橫向擴展方便,微服務實例是無狀態(tài)的,狀態(tài)信息保存在應用數據層,靈活地增減微服務實例即可擴展/縮小系統(tǒng)的處理能力,彈性應對實際使用環(huán)境;
(6)微服務結合docker,方便容器化[5],結合K8S 平臺,統(tǒng)一編排,更加方便運維。
采用分層+微服務架構,小版本更新不影響業(yè)務連續(xù)性,只需要啟動新版本微服務,再關閉老版本微服務即可。隨著系統(tǒng)實施,功能增多,微服務間調用關系越來越復雜,如何讓調用關系更可控合理,是下來要優(yōu)化考慮之處。