TWI795262B - 高可用服務之部署系統、方法及其電腦可讀媒介 - Google Patents
高可用服務之部署系統、方法及其電腦可讀媒介 Download PDFInfo
- Publication number
- TWI795262B TWI795262B TW111113056A TW111113056A TWI795262B TW I795262 B TWI795262 B TW I795262B TW 111113056 A TW111113056 A TW 111113056A TW 111113056 A TW111113056 A TW 111113056A TW I795262 B TWI795262 B TW I795262B
- Authority
- TW
- Taiwan
- Prior art keywords
- deployment
- cluster
- service
- control platform
- module
- Prior art date
Links
Images
Landscapes
- Multi Processors (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本發明揭示一種高可用服務之部署系統及其方法,其中,控制平台裝置基於欲部署之服務的內容以及網格內所有叢集之叢集資料,取得服務部署所涉及的叢集並排出部署順序,以根據所取得之參數及部署順序產生叢集內指令,叢集代理裝置取得叢集內指令後進行解析,以於本地端執行須於本地端執行之部署指令,以及透過控制平台裝置通知對應之叢集代理裝置來執行須於異地端執行之部署指令,直到所有叢集代理裝置完成部署後,將部署結果回報至控制平台裝置,以確認部署結果。本發明復提供一種電腦可讀媒介,係用於執行本發明之方法。
Description
本發明係關於網路服務部署之技術,尤指一種高可用服務之部署系統、方法及其電腦可讀媒介。
隨著網路科技進步與服務需求,許多服務部署與安裝都能透過系統來自動執行,降低了時間與空間的限制,對於服務提供者或營運商而言,不僅節省人力也能縮短時程,實屬技術上一大進步。
在網路架構的多元發展下,容器(Container)的概念顯然已成為必要配置,容器包含了讓應用程式能於不同環境下順利執行的要素,亦即,一種能讓應用程序代碼、運行過程、系統工具、系統庫以及相關配置納入一實體中的做法,而將應用程序的容器進行部署和組織的動作則稱為容器編排(Container Orchestration),目前市面上也有不少容器編排工具,例如Google所開發的Kubernetes(簡稱K8S)系統。對於共享軟體之部署與安裝的方案中,常見一個容器涉及到多個不同叢集,也就是一個服務會部署到多個叢集上,然於現有技術中,都僅能每一個叢集各別部署,該些叢集之間缺乏關聯性,導致安裝過程不便與繁
瑣,特別是對於高可用性(High Availability)的服務,通常須要多個叢集來執行,若僅是各別叢集進行服務安裝,恐有效率不佳且難以整體檢視等問題。
鑑於上述問題,如何找出一種網路服務之部署方式,可以讓涉及多個叢集之高可用性服務能更順利地進行部署與安裝,特別是,除了減少因各別部署所衍伸的問題外,同時也強化各叢集之間的溝通,此將成為目前本技術領域人員急欲追求之目標。
為解決上述現有技術之問題,本發明係揭露一種高可用服務之部署系統,係包括:控制平台裝置,係用於分析欲部署之服務的內容及獲取網格內之叢集資料,以得到部署該服務所需之參數及所需叢集之部署順序,俾依據部署該服務所需之參數及該部署順序產生叢集內指令並發送該叢集內指令;以及叢集代理裝置,係與該控制平台裝置通訊連接,用於收取並解析該叢集內指令,透過執行序(exec command)之執行以進行該服務之部署,以及回傳部署結果至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成。
於上述系統中,該控制平台裝置係包括:部署管理模組,係用於分析該服務的內容,以取得部署該服務所需之參數,以及依據部署該服務所需之參數及該部署順序而產生該叢集內指令;叢集網格模組,係用於取得網格內之叢集資料,以於確認部署該服務所需叢集之排序與關係後,串接出該部署順序;以及訊息模組,係用於傳送該叢集內指令,以及接收該叢集代理裝置所回傳之該部署結果而轉送至該部署管理模組。
於一實施例中,該訊息模組係用於管理各叢集之間的訊息發送與傳遞,且該些叢集之間所傳遞之訊息包含同步訊息及/或非同步訊息。
於上述系統中,該叢集代理裝置係包括:部署模組,係用於解析該叢集內指令以進行該服務之部署;執行序模組,係用於進行該叢集內指令中有關本地端之執行序的執行;以及傳遞接收模組,係用於接收來自該控制平台裝置之部署訊息、傳送各該叢集代理裝置相互之間的驅動訊息、以及回傳該部署結果至該控制平台裝置。
於一實施例中,該部署模組係確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為該異地端執行的部署指令時,令該訊息模組對異地端之叢集進行呼叫,使該異地端執行的部署指令於其對應之叢集內被執行。
於一實施例中,該控制平台裝置與該叢集代理裝置之間的訊息接收為非同步,各該叢集代理裝置之間的訊息驅動為同步或由該叢集代理裝置之網路應用程式介面(Web API)進行傳呼。
於一實施例中,該部署結果包括本地端和異地端之所有叢集的部署結果。
本發明復揭露一種高可用服務之部署方法,係由電腦設備執行該方法,該方法包括以下步驟:令控制平台裝置之部署管理模組分析欲部署之服務的內容,以取得部署該服務所需之參數;令該控制平台裝置之叢集網格模組提供網格內之叢集資料,確認部署該服務所需叢集之排序與關係,以串接出部署順序;令該部署管理模組依據部署該服務所需之參數及該部署順序,產生叢集內指令,以供該控制平台裝置之訊息模組傳送該叢集內指令;由叢集代理裝置之部署
模組解析該叢集內指令以進行該服務之部署,以及由該叢集代理裝置之執行序模組進行執行序的執行;以及令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成。
於一實施例中,該訊息模組係用於管理各叢集之間的訊息發送與傳遞,且該些叢集之間所傳遞之訊息包含同步訊息及/或非同步訊息。
於一實施例中,該控制平台裝置與該叢集代理裝置之間的訊息接收為非同步,各該叢集代理裝置之間的訊息驅動為同步或由該叢集代理裝置之網路應用程式介面(Web API)進行傳呼。
於前述方法中,由該叢集代理裝置之部署模組解析該叢集內指令以進行該服務之部署之步驟,係包括確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為該異地端執行的部署指令時,令該訊息模組對異地端之叢集進行呼叫,使該異地端執行的部署指令於其對應之叢集內被執行。
於前述方法中,令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成之步驟,係指該控制平台裝置透過該訊息模組接收該部署結果,以轉傳至該部署管理模組判斷部署是否完成。
於前述方法中,該部署結果包括本地端和異地端之所有叢集的部署結果。
本發明復揭露一種電腦可讀媒介,應用於計算裝置或電腦中,係儲存有指令,以執行前述之高可用服務之部署方法。
由上可知,本發明之高可用服務之部署系統及其方法,具體而言,控制平台裝置考量欲部署之服務的內容以及網格內所有叢集之叢集資料,找出本次服務部署所涉及的叢集並排出部署順序,之後,依據所取得之參數及部署順序以產生叢集內指令,叢集代理裝置取得叢集內指令後進行解析,若為本地端要執行的部署指令,則由該叢集代理裝置來進行,若為異地端要執行的部署指令,則經由控制平台裝置通知對應之叢集代理裝置來執行,等待所有叢集代理裝置執行完自身的部署後,再將部署情況回報至控制平台裝置,藉以確認部署結果。由上可知,本發明利用分散式部署方式將使用者服務同時啟動於服務網格內之多個叢集,藉以達高可用性服務備份與分流效果。
1:高可用服務之部署系統
11:控制平台裝置
111:部署管理模組
112:叢集網格模組
113:訊息模組
12、12’:叢集代理裝置
121、121’:部署模組
122、122’:執行序模組
123、123’:傳遞接收模組
501-507:流程
601-606:流程
701-706:流程
S401-S405:步驟
圖1係本發明之高可用服務之部署系統的架構圖。
圖2係本發明之高可用服務之部署系統於一實施例的架構圖。
圖3係本發明之高可用服務之部署系統具體執行時的示意圖。
圖4係本發明之高可用服務之部署方法的步驟圖。
圖5係本發明之高可用服務之部署方法於一具體實施例的流程圖。
圖6係本發明之控制平台裝置建構部署叢集的流程圖。
圖7係本發明之叢集代理裝置內部執行部署的流程圖。
以下藉由特定的具體實施形態說明本發明之技術內容,熟悉此技藝之人士可由本說明書所揭示之內容輕易地瞭解本發明之優點與功效。然本發明亦可藉由其他不同的具體實施形態加以施行或應用。
圖1係本發明之高可用服務之部署系統的架構圖。本發明係一種以服務網格(Service mesh)網路架構為基礎,以雲端容器平台服務為叢集架構,利用分散式部署方式將使用者服務同時啟動於服務網格內之多個叢集,以達高可用性(High Availability)服務備份與分流效果,如圖所示,高可用服務之部署系統1係包括控制平台裝置11以及叢集代理裝置12,其中,控制平台裝置11與叢集代理裝置12之間通訊連接,該控制平台裝置11主要對欲部署之服務進行管控,因為服務為高可用性,故會部署於數個叢集內,而叢集代理裝置12係表示數個叢集之其中一者,主要是接收來自控制平台裝置11之訊息以進行服務安裝。
控制平台裝置11用於分析欲部署之服務的內容,以得到部署該服務所需之參數,另外,還會取得服務網格(Service mesh)內之叢集資料,藉此以得到部署該服務所需叢集,以基於該些叢集之間的關係和排序,得到叢集的部署順序,最後,依據部署該服務所需之參數及該部署順序以產生叢集內指令,接著發送該叢集內指令,以供叢集代理裝置12接取該叢集內指令。
叢集代理裝置12於收取該叢集內指令後進行解析,透過執行序(exec command)之執行來進行該服務之部署,並且於部署完成後回傳部署結果至控制平台裝置11,俾供控制平台裝置11確認該服務是否部署完成。特別的是,叢集代理裝置12所收到之叢集內指令中會包含本地端和異地端所要執行的指令,本地端是指接收到該叢集內指令的叢集,而異地端則是指接收到該叢集內指令之叢集以外的其他叢集,易言之,每一個叢集只會執行自身所能處理或所須處理
的相關指令,其他的則會由控制平台裝置11再通知須要處理該指令的對應叢集,後面會再詳述此部分之技術細節。
於一實施例中,控制平台裝置11與叢集代理裝置12之間的訊息接收為非同步,各叢集代理裝置之間的訊息驅動為同步或由該叢集代理裝置之網路應用程式介面(Web API)進行傳呼。易言之,控制平台裝置11發送包含叢集內指令之部署訊息後,由叢集代理裝置12自行接取,此時控制平台裝置11無須等待叢集代理裝置12之回應即可執行其他事務,故兩者之間的訊息傳遞是非同步的。另外,叢集代理裝置12可包含多個代理不同叢集之代理裝置,在部署安裝程序中,可能甲代理裝置會要求乙代理裝置執行某些程序後才能繼續安裝,換言之,假若甲代理裝置未收到乙代理裝置回應前,無法繼續執行後續業務,即甲代理裝置須等待乙代理裝置之回應,故各代理裝置之間的訊息傳遞則屬於同步。
簡言之,於交換資料時,若為重要資料(例如金鑰),則可透過指定之訊息傳接模組來進行,但若為一般資料,假若在網狀網路(mesh)架構下,兩個叢集網路互通,則兩者可以直接API(例如server API)溝通,若兩個叢集網路不互通,則透過指定之訊息傳接模組溝通,所以控制平台裝置11一開始就知道叢集之間的mesh關係,則發出後,即可決定兩個叢集之間的溝通方式。
於一實施例中,叢集代理裝置12回傳之部署結果包括本地端和異地端之所有叢集的部署結果。簡言之,需要所有叢集代理裝置12皆回傳部署結果,才能知道此次服務的部署結果,舉例來說,控制平台裝置11發出部署訊息,由甲代理裝置和乙代理裝置接收並執行,其中,若是甲代理裝置為本地端的話,乙代理裝置可稱為異地端,另外,若甲代理裝置還要求丙代理裝置須先執行某項配置後才能進行安裝時,甲代理裝置要等丙代理裝置之回覆,故對於甲代理裝置
而言,要回報之部署結果包含丙代理裝置的部署結果以及甲代理裝置本身之部署結果,故統稱部署結果涵蓋本地端和異地端之所有叢集。
以整體架構來說,控制平台裝置11為系統平台叢集,叢集代理裝置12為服務網格內之叢集,於一具體實施例中,控制平台裝置11為系統主要執行的Kubernetes叢集,叢集代理裝置12為使用者需要部署的服務網格內的Kubernetes叢集。以下分別針對控制平台裝置11及叢集代理裝置12之技術細節進一步說明。
圖2為本發明之高可用服務之部署系統於一實施例的架構圖。如圖所示,當使用者欲對服務網格內之Kubernetes叢集進行部署時,由控制平台裝置11執行服務之部署與管理,另外,還需要驅動對應之叢集代理裝置12以執行部署,如圖所示,控制平台裝置11係包括部署管理模組111、叢集網格模組112以及訊息模組113,而叢集代理裝置12係包括部署模組121、執行序模組122以及傳遞接收模組123。
部署管理模組111用於分析欲部署之服務的內容,以取得部署該服務所需之參數,以及依據部署該服務所需之參數及部署順序以產生叢集內指令。具體而說,部署管理模組111負責分析服務啟動需要的部署內容、需要的指令和動作,包含對應到部署(kubernetes指令)或者是執行序(exec command)的執行,該部署管理模組111取得部署欲部署之服務所需之參數,以及來自叢集網格模組112提供的網格內之叢集關係,分析出此次部署要執行的叢集有哪些,並確認之間的網路關係與訊息溝通模式,包含非同步訊息驅動、同步訊息驅動以及叢集代理裝置12的服務Restful API呼叫等,最後產生叢集內指令,前述之Restful API係指符合或相容於表現層狀態轉換(Representational State Transfer,REST)的網頁伺服器或網頁瀏覽器的網路應用程式介面(Web API)。
叢集網格模組112用於取得網格內之叢集資料,以於確認部署該服務所需叢集之排序與關係後,串接出該部署順序。如前所述,部署管理模組111產生叢集內指令時,需要了解部署服務所涉及之叢集以及該些叢集之間的關係,因而叢集網格模組112即是用於取得網格內之叢集資料,並於確認部署服務所需叢集以及該些叢集之排序與關係後,串接出部署該服務之叢集部署順序。
訊息模組113用於傳送部署管理模組111所產之叢集內指令,以及接收叢集代理裝置12所回傳之部署結果而轉送至部署管理模組111。簡言之,訊息模組113係管理各叢集之間訊息發送與傳遞,包含同步訊息及/或非同步訊息,其中,同步訊息涉及到雙方傳輸且有逾時(timeout)時間,也就是呼叫者在發送訊息後會等待對方之回應響應才進行下一步,而非同步訊息在通過通道(channel)傳送時,呼叫者在發送訊息後,短時間內無須等待對方回應響應即可處理其他任務,採用何者可視設計需求調整;另外,所有叢集都需要透過註冊到訊息模組113才得到接收或傳遞訊息。
部署模組121用於解析來自控制平台裝置11之叢集內指令以進行服務之部署。簡言之,部署模組121於收到控制平台裝置11所發送之驅動訊息後,將進行容器指令或者kubernetes指令之執行,如前所述,該些指令中可包含本地端(即收到訊息之叢集)以及異地端(非本地端)所要執行之指令。
執行序模組122用於進行該叢集內指令中有關本地端之執行序的執行。具體來說,執行序模組122用於執行序(exec command)的執行,使用的是主機實體指令,亦即有關叢集內指令中本地端之服務安裝,將交由本地端設備(例如電腦主機、伺服器)來執行,此時即透過該設備內部實體指令來進行安裝。
傳遞接收模組123用於接收來自控制平台裝置11之部署訊息、傳送各叢集代理裝置相互之間的驅動訊息、以及回傳部署結果至控制平台裝置11。簡言之,傳遞接收模組123主要接收控制平台裝置11之部署訊息,以及用於各叢集代理裝置相互之間的驅動訊息之傳送,當叢集代理裝置12完成整個部署後,將部署結果傳回控制平台裝置11,如前所述,控制平台裝置11與叢集代理裝置12間之訊息接收為非同步,各叢集代理裝置之間的訊息驅動則為同步或者由叢集代理裝置服務RestfuL API進行呼叫,如此可加速部署叢集之間的執行速度。
於一實施例中,該部署模組121確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為異地端執行的部署指令時,令控制平台裝置11之訊息模組113對異地端之叢集進行呼叫,以使異地端執行的部署指令於其對應之叢集內被執行。因此,透過控制平台裝置11之訊息模組113來對不同叢集代理裝置12進行部署訊息之發送。
圖3為本發明之高可用服務之部署系統具體執行時的示意圖。如圖所示,部署管理模組111產生要進行服務部署之叢集內指令後,交由訊息模組113進行訊息發送,叢集代理裝置12由傳遞接收模組123收到部署訊息後,通知部署模組121進行叢集內指令之分析,屬於本地端之指令則轉交給執行序模組122來執行,若部署模組121發現叢集內指令中有異地端之指令時,則通知訊息模組113轉交給對應之叢集代理裝置12’,由叢集代理裝置12’之傳遞接收模組123’接收後,轉交給執行序模組122’來執行,並將部署結果回覆給叢集代理裝置12,同理,叢集代理裝置12’之部署模組121’發現叢集內指令中有異地端之指令時,會轉交給對應的代理裝置進行處理。當執行完部署安裝後,傳遞接收模組123會
回傳部署結果給予訊息模組113,訊息模組113再轉交給部署管理模組111,以供部署管理模組111該服務的部署情況。
圖4係本發明之高可用服務之部署方法的步驟圖,係說明在高可用服務進行部署時,能利用共享概念,透過叢集與服務解析,將高可用服務部署於多個叢集中,藉以達到異地備援的效果,於本發明之架構中,控制平台裝置與控制平台裝置之間通訊連接,控制平台裝置執行部署之規劃與管控,由叢集代理裝置進行各別的部署安裝,下面將對高可用服務之部署方法逐步說明。
步驟S401,令控制平台裝置之部署管理模組分析欲部署之服務的內容,以取得部署該服務所需之參數。本步驟係說明部署管理模組分析服務啟動需要的部署內容、需要的指令和動作,以取得部署欲部署之服務所需之參數。
步驟S402,令該控制平台裝置之叢集網格模組提供網格內之叢集資料,確認部署該服務所需叢集之排序與關係,以串接出部署順序。本步驟係說明叢集網格模組會取得網格內之叢集關係,接著,分析出該次要部署所涉及之叢集有哪些以及確認該些叢集之間的網路關係與訊息溝通模式,簡言之,找出服務部署到的叢集,了解該些叢集間之關係與通訊方式,以作為部署依據。
步驟S403,令該部署管理模組依據部署該服務所需之參數及該部署順序,產生叢集內指令,以供該控制平台裝置之訊息模組傳送該叢集內指令。本步驟係說明部署管理模組依據前兩個步驟取得之部署服務所需之參數及所涉及叢集之間的部署順序,藉以得到如何部署而產生叢集內指令,該些叢集內指令即是驅動代理裝置進行部署安裝之用,之後,叢集內指令由控制平台裝置之訊息模組發送出去。
步驟S404,由叢集代理裝置之部署模組解析該叢集內指令以進行該服務之部署,以及由該叢集代理裝置之執行序模組進行執行序的執行。本步驟係說明叢集代理裝置能透過其內部之傳遞接收模組收取到控制平台裝置之訊息模組所發送內含叢集內指令之部署訊息,之後,交由部署模組會進行分析以取得要進行部署安裝之內容,並由執行序模組作執行序之執行。
於一實施例中,部署模組解析叢集內指令而進行服務之部署時,復包括確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為該異地端執行的部署指令時,令該訊息模組對異地端之叢集進行呼叫,使該異地端執行的部署指令於其對應之叢集內被執行。簡言之,叢集內指令可能包含本地端和異地端的指令,若為本地端的指令時,即可由收到叢集內指令之叢集代理裝置直接執行,倘若為異地端的指令時,則通知控制平台裝置之訊息模組對異地端之叢集進行呼叫,接著轉交異地端的指令而使該些異地端執行的部署指令能對應之叢集內被執行。
步驟S405,令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,以供該控制平台裝置確認該服務是否部署完成。本步驟係指當部署模組完成自身叢集之部署安裝後,會產生部署結果並能透過傳遞接收模組將部署結果回傳至控制平台裝置,俾供控制平台裝置確認該服務之部署情況。於一實施例中,控制平台裝置透過其訊息模組接收該部署結果,並轉傳至部署管理模組以判斷部署是否完成。
於其他實施例中,訊息模組主要是管理各叢集之間的訊息發送與傳遞,而該些叢集之間所傳遞之訊息包含同步訊息及/或非同步訊息。具體來說,控制平台裝置與叢集代理裝置之間的訊息接收為非同步,也就是控制平台裝置
發送出部署訊息後,無須等待叢集代理裝置的回覆,即可再執行其他程序,另外,各叢集代理裝置之間的訊息驅動為同步或由叢集代理裝置之網路應用程式介面(Web API)進行傳呼,簡言之,為了確保各代理裝置之間的通訊溝通,各代理裝置之間採用同步方式來傳遞訊息,亦可由各代理裝置之網路應用程式介面(Web API)來進行溝通。
圖5為本發明之高可用服務之部署方法於一具體實施例的流程圖。
於流程501,解析服務。首先,Kubernetes(K8S)是一種能管理微服務(microservices)的系統,可自動化地部署及管理多台機器上的容器(Container),而Helm即是管理設定檔之工具,而一個服務可能由多個helm圖表(helm chart)共同產生,本流程即分析圖表(chart)的內容,以確認可能因為環境不同需要置換的參數。
於流程502,解析網格內部署叢集,以串出叢集序列。本流程係說明當服務部署於一個服務網格內時,會先取得網格內之叢集資料,找出主要叢集與次要叢集,確認叢集排序與關係,以據之串接出叢集之部署順序,其中,部署架構可為主叢集(主主(Master-Master)架構)或者不同階級的主次叢集(主從(Master-Slave)架構)之分。
於流程503,產生部署指令。本流程係指解析服務內的參數,例如是支援helm指令(helm command)、kubernets應用程式介面(kubernets api)、linux外殼命令(linux shell command)等,將指令順序依照服務設定並加上需要對應哪一個叢集執行加入,藉以產生叢集內指令。
於流程504,針對叢集序列發送出部署指令至各代理裝置。本流程係說明包含部署指令(即叢集內指令)利用訊息內容包裝,針對叢集之訂閱的訊息
通道發送,即可發送至訊息管理中心(即指本發明之訊息模組),使用非同步訊息,待叢集內的代理裝置收取訊息,即完成平台送出訊息。
於流程505,代理裝置部署執行。本流程係說明叢集內的代理裝置收取訊息後,分析為叢集內可執行的和非叢集內可執行的指令,叢集內逕行執行部署指令包含helm指令(helm command)、kubernets應用程式介面(kubernets api)、linux外殼命令(linux shell command)等,而非叢集內可執行的指令則於下一流程處理。
於流程506,多個代理裝置相互執行部署指令。本流程說明非本叢集內可執行的指令,可能是需要讀取或者得到另一叢集相關資料的指令,可利用同步訊息傳遞驅動另一叢集執行得到結果取得資料,在將此指令結果與原本叢集內的指令結果結合,產生此叢集代理裝置的部署結果。
於流程507,收集所有叢集訊息。本流程說明從代理裝置回傳部署結果至控制平台裝置,當控制平台裝置收集到所有部署結果後,據之判定是否完成一個服務的部署或者變更。
圖6為本發明之控制平台裝置建構部署叢集的流程圖。此流程圖是在主要的控制平台上,使用者進行一次服務部署或者更新所進行的流程,以下對於各流程分別詳細說明。
於流程601,解析服務。於本流程中,當使用者需要進行邊緣(edge)端部署或者更新時,先進行服務解析,確認有幾個服務更新,如何部署,那一些需要使用kubernets應用程式介面(kubernets api)進行調整,那一些需要使用主機命令(host command)。
於流程602,解析網格內部署叢集,以串出叢集序列。本流程為解析要進行服務安裝之邊緣端位處在哪一個服務網格內,逕行使用網格內已設定好的叢集資訊,解析叢集主副關係,叢集內容與需要部署的叢集和順序。
於流程603,產生部署指令。本流程為藉由上述兩個流程關聯得到的資訊,產生部署服務需要的指令集,內部有代理裝置對應各式連接器(adaptor),例如使用Restful API、kubernetes指令、主機linux外殼命令(host linux shell command)以及函式庫通用語言架構(lib cli)指令。
於流程604,針對叢集序列發送出部署指令至各代理裝置。本流程為利用流程603產生的指令集針對網格內的叢集序列發出非同步訊息通知,並對於發出之叢集訊息發出訂閱,等待此訂閱的回覆,並將服務狀態改為部署中,儲存於資料庫中。
於流程605,非同步等待代理裝置回應部署結果。本流程係於流程604中把服務送出時,會進入等待狀態,等待叢集內的所有代理裝置回覆訊息。
於流程606,解析服務部署,完成部署。本流程係於收到代理裝置回覆後,需要解析每一個叢集代理回覆內容,針對此服務在網格內的所有叢集進行分析,確認是否完成一次服務部署。
下面透過一個具體實施例之描述,說明本發明之技術內容。
當要在兩個叢集建立高可用mongo資料庫(mongo database)時,可設定一個叢集為主要的(primary),另一個叢集為次要的(secondary),而建立服務內容可對應到helm chart檔案目錄,亦即,在values.yaml(yaml為一種描述設定的文字格式)裡面增加可解析的連接器(adaptor)指令,可在部署服務前和部署服務後執行屬
於虛擬機器(VM)層級的指令、kubectl指令等,上述內容包裝後成為一個helm chart檔案,上傳到控制平台裝置上,經解析後建立方案。
控制平台裝置針對兩個叢集發送訊息,內容前述指令,叢集A收到訊息後,依序解析,分配指令執行者,並完成部署指令後,回覆訊息至控制平台裝置,叢集B收到訊息後,依序解析,分配指令執行者,並完成部署指令後,回覆訊息至控制平台裝置。控制平台裝置收到叢集A訊息,取回存在資料庫的部署資料,更新部署標的狀態為完成部署,控制平台裝置收到叢集B訊息,取回存在資料庫的部署資料,更新部署標的狀態為完成部署。平台裝置待兩叢集接傳回訊息後,即可對使用者發出部署完成的通知。
圖7為本發明之叢集代理裝置內部執行部署的流程圖。此流程圖是在叢集代理裝置所要執行的流程,以下對於各流程分別詳細說明。
於流程701,代理裝置接收部署訊息。本流程係指叢集代理裝置能接收訊息,亦即當此叢集加入平台建立網格後,就會與控制平台裝置上的訊息模組建立連線,等待訊息發送。
於流程702,解析訊息確認本地端執行。本流程係說明當收到部署訊息時會進入到訊息解析,確認是否為要在此叢集內執行的指令,若不是,則會利用訊息模組呼叫進入到流程703,若是,則會進入到流程704。
於流程703,其他叢集裝置同步執行部署指令並回覆。本流程係指當指令需要其他叢集來執行時,就會利用訊息模組的同步訊息功能作為呼叫模式,指定叢集呼叫,此時被呼叫的叢集代理則會執行其代理處理,即類似流程702收訊息後進行流程704之本地端部署指令執行等程序,以於完成後回覆呼叫端叢集。
於流程704,本地端執行部署指令。本流程係指針對代理本地端需要執行的部署指令作為,待所有代理本地端指令完成後進入流程705。
於流程705,確認指令完成,更改部署狀態。本流程須等待異地端與本地端完成回覆後再進行整個叢集的部署服務狀態判定,若其中有一個回覆失敗,則判斷整個叢集的部署失敗,若所有回覆都是成功的,則判斷整個叢集的部署成功,進行到流程706。
於流程706,代理裝置傳送部署訊息。本流程則是代理裝置負責將最後部署完的訊息回覆到訊息模組上,完成此次代理裝置所有任務。
此外,本發明還揭示一種電腦可讀媒介,係應用於具有處理器(例如,CPU、GPU等)及/或記憶體的計算裝置或電腦中,且儲存有指令,並可利用此計算裝置或電腦透過處理器及/或記憶體執行此電腦可讀媒介,以於執行此電腦可讀媒介時執行上述之方法及各步驟。
本發明之模組、單元、裝置等包括微處理器及記憶體,而演算法、資料、程式等係儲存記憶體或晶片內,微處理器可從記憶體載入資料或演算法或程式進行資料分析或計算等處理,在此不予贅述。易言之,本發明之高可用服務之部署系統可於電子設備上執行,例如一般電腦、平板或是伺服器,在收到資料後執行分析與運算,故高可用服務之部署系統所進行程序,可透過軟體設計並架構在具有處理器、記憶體等元件之電子設備上,以於各類電子設備上運行;另外,亦可將高可用服務之部署系統之各模組或單元分別以獨立元件組成,例如設計為計算器、記憶體、儲存器或是具有處理單元的韌體,皆可成為實現本發明之組件,即本發明可選擇以軟體程式、硬體或韌體架構呈現。
綜上,本發明之高可用服務之部署系統及其方法,係以服務網格網路架構為基礎,以雲端容器平台服務為叢集架構,利用分散式部署方式將使用者服務同時啟動於服務網格內之多個叢集,如此可達高可用性服務備份與分流效果,其中,當同一個服務部署於多個叢集內,需要不同的設定方式才可以使用主主(Master-Master)架構或者主從(Master-Slave)架構,因此,本發明利用部署指令差異化,代理裝置可透過接收與傳送指令到其他叢集或者於服務網格內RESTful API互通的方式,驅動其他叢集代理裝置調整設定,以完成服務高可用性部署機制。故本發明具有以下功效。
首先,本發明將所有叢集利用服務網格串連,利用網路連通的延伸,作為部署訊息的交換,藉此讓叢集間具有關聯性。
其次,本發明對於部署與更新,只要針對服務網格內的一個叢集,即可擴展到其他叢集,達到分散式部署效果。
再者,本發明利用代理裝置部署程式,可因不同的服務需求支援Restful API、kubernetes指令、主機linux外殼命令(host linux shell command)以及函式庫通用語言架構(lib cli)指令等,在服務內增加指令需求,亦可於代理裝置注入指令。
另外,本發明之叢集代理裝置可完成自我叢集部署,亦可透過同步訊息驅動其他叢集代理裝置取得相關資料,以協助原本的代理裝置完成設定。
上述實施例僅為例示性說明,而非用於限制本發明。任何熟習此項技藝之人士均可在不違背本發明之精神及範疇下,對上述實施例進行修飾與
改變。因此,本發明之權利保護範圍係由本發明所附之申請專利範圍所定義,只要不影響本發明之效果及實施目的,應涵蓋於此公開技術內容中。
11:控制平台裝置
111:部署管理模組
112:叢集網格模組
113:訊息模組
12:叢集代理裝置
121:部署模組
122:執行序模組
123:傳遞接收模組
Claims (12)
- 一種高可用服務之部署系統,係包括:控制平台裝置,係用於分析欲部署之服務的內容及獲取網格內之叢集資料,以得到部署該服務所需之參數及所需叢集之部署順序,俾依據部署該服務所需之參數及該部署順序產生叢集內指令並發送該叢集內指令;以及叢集代理裝置,係與該控制平台裝置通訊連接,用於收取並解析該叢集內指令,透過執行序之執行以進行該服務之部署,以及回傳部署結果至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成,其中,該叢集代理裝置係確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為該異地端執行的部署指令時,令該控制平台裝置對異地端之叢集進行呼叫,使該異地端執行的部署指令於其對應之叢集內被執行。
- 如請求項1所述之高可用服務之部署系統,其中,該控制平台裝置係包括:部署管理模組,係用於分析該服務的內容,以取得部署該服務所需之參數,以及依據部署該服務所需之參數及該部署順序而產生該叢集內指令;叢集網格模組,係用於取得網格內之叢集資料,以於確認部署該服務所需叢集之排序與關係後,串接出該部署順序;以及訊息模組,係用於傳送該叢集內指令,以及接收該叢集代理裝置所回傳之該部署結果而轉送至該部署管理模組。
- 如請求項2所述之高可用服務之部署系統,其中,該訊息模組係用於管理各叢集之間的訊息發送與傳遞,且該些叢集之間所傳遞之訊息包含同步訊息及/或非同步訊息。
- 如請求項1所述之高可用服務之部署系統,其中,該叢集代理裝置係包括:部署模組,係用於解析該叢集內指令以進行該服務之部署;執行序模組,係用於進行該叢集內指令中有關本地端之執行序的執行;以及傳遞接收模組,係用於接收來自該控制平台裝置之部署訊息、傳送各該叢集代理裝置相互之間的驅動訊息、以及回傳該部署結果至該控制平台裝置。
- 如請求項1所述之高可用服務之部署系統,其中,該控制平台裝置與該叢集代理裝置之間的訊息接收為非同步,各該叢集代理裝置之間的訊息驅動為同步或由該叢集代理裝置之網路應用程式介面(Web API)進行傳呼。
- 一種高可用服務之部署系統,係包括:控制平台裝置,係用於分析欲部署之服務的內容及獲取網格內之叢集資料,以得到部署該服務所需之參數及所需叢集之部署順序,俾依據部署該服務所需之參數及該部署順序產生叢集內指令並發送該叢集內指令;以及叢集代理裝置,係與該控制平台裝置通訊連接,用於收取並解析該叢集內指令,透過執行序之執行以進行該服務之部署,以及回傳部署結果至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成,其中,該部署結果包括本地端和異地端之所有叢集的部署結果。
- 一種高可用服務之部署方法,係由電腦設備執行該方法,該方法包括以下步驟: 令控制平台裝置之部署管理模組分析欲部署之服務的內容,以取得部署該服務所需之參數;令該控制平台裝置之叢集網格模組提供網格內之叢集資料,確認部署該服務所需叢集之排序與關係,以串接出部署順序;令該部署管理模組依據部署該服務所需之參數及該部署順序,產生叢集內指令,以供該控制平台裝置之訊息模組傳送該叢集內指令;由叢集代理裝置之部署模組解析該叢集內指令以進行該服務之部署,以及由該叢集代理裝置之執行序模組進行執行序的執行,其中,該部署模組確認該叢集內指令屬於本地端執行的部署指令或是異地端執行的部署指令,以於該叢集內指令為該異地端執行的部署指令時,令該訊息模組對異地端之叢集進行呼叫,使該異地端執行的部署指令於其對應之叢集內被執行;以及令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成。
- 如請求項7所述之高可用服務之部署方法,其中,該訊息模組係用於管理各叢集之間的訊息發送與傳遞,且該些叢集之間所傳遞之訊息包含同步訊息及/或非同步訊息。
- 如請求項7所述之高可用服務之部署方法,其中,該控制平台裝置與該叢集代理裝置之間的訊息接收為非同步,各該叢集代理裝置之間的訊息驅動為同步或由該叢集代理裝置之網路應用程式介面(Web API)進行傳呼。
- 如請求項7所述之高可用服務之部署方法,其中,令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,俾供該控制平台裝 置確認該服務是否部署完成之步驟,係指該控制平台裝置透過該訊息模組接收該部署結果,以轉傳至該部署管理模組判斷部署是否完成。
- 一種高可用服務之部署方法,係由電腦設備執行該方法,該方法包括以下步驟:令控制平台裝置之部署管理模組分析欲部署之服務的內容,以取得部署該服務所需之參數;令該控制平台裝置之叢集網格模組提供網格內之叢集資料,確認部署該服務所需叢集之排序與關係,以串接出部署順序;令該部署管理模組依據部署該服務所需之參數及該部署順序,產生叢集內指令,以供該控制平台裝置之訊息模組傳送該叢集內指令;由叢集代理裝置之部署模組解析該叢集內指令以進行該服務之部署,以及由該叢集代理裝置之執行序模組進行執行序的執行;以及令該叢集代理裝置之傳遞接收模組將部署結果回傳至該控制平台裝置,俾供該控制平台裝置確認該服務是否部署完成,其中,該部署結果包括本地端和異地端之所有叢集的部署結果。
- 一種電腦可讀媒介,應用於計算裝置或電腦中,係儲存有指令,以執行如請求項7至11之任一者所述之高可用服務之部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111113056A TWI795262B (zh) | 2022-04-06 | 2022-04-06 | 高可用服務之部署系統、方法及其電腦可讀媒介 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111113056A TWI795262B (zh) | 2022-04-06 | 2022-04-06 | 高可用服務之部署系統、方法及其電腦可讀媒介 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI795262B true TWI795262B (zh) | 2023-03-01 |
TW202340942A TW202340942A (zh) | 2023-10-16 |
Family
ID=86692277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111113056A TWI795262B (zh) | 2022-04-06 | 2022-04-06 | 高可用服務之部署系統、方法及其電腦可讀媒介 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI795262B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112912880A (zh) * | 2018-10-22 | 2021-06-04 | 皇家飞利浦有限公司 | 用于个性化的网络服务的容器构建器 |
CN113835844A (zh) * | 2021-09-29 | 2021-12-24 | 新华三大数据技术有限公司 | 一种容器集群的管理方法、装置及云计算平台 |
CN114153580A (zh) * | 2021-11-25 | 2022-03-08 | 邦道科技有限公司 | 一种跨多集群的工作调度方法及装置 |
CN114253661A (zh) * | 2021-11-05 | 2022-03-29 | 贵州轻工职业技术学院 | 基于容器云计算平台的产品结构 |
-
2022
- 2022-04-06 TW TW111113056A patent/TWI795262B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112912880A (zh) * | 2018-10-22 | 2021-06-04 | 皇家飞利浦有限公司 | 用于个性化的网络服务的容器构建器 |
CN113835844A (zh) * | 2021-09-29 | 2021-12-24 | 新华三大数据技术有限公司 | 一种容器集群的管理方法、装置及云计算平台 |
CN114253661A (zh) * | 2021-11-05 | 2022-03-29 | 贵州轻工职业技术学院 | 基于容器云计算平台的产品结构 |
CN114153580A (zh) * | 2021-11-25 | 2022-03-08 | 邦道科技有限公司 | 一种跨多集群的工作调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TW202340942A (zh) | 2023-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110389900B (zh) | 一种分布式数据库集群测试方法、装置及存储介质 | |
CN111506412B (zh) | 基于Airflow的分布式异步任务构建、调度系统及方法 | |
US20180210752A1 (en) | Accelerator virtualization method and apparatus, and centralized resource manager | |
CN111880902A (zh) | 一种pod创建方法、装置、设备及可读存储介质 | |
CN111399897A (zh) | 基于kubernetes的应用发布方法以及系统 | |
CN115242877B (zh) | 面向多K8s集群的Spark协同计算、作业方法及装置 | |
CN112068847B (zh) | 基于kubernets平台的计算环境部署方法及装置 | |
CN114615308A (zh) | 基于rpc的异步多线程并发网络通讯方法及装置 | |
WO2022267646A1 (zh) | 一种容器集的部署方法及装置 | |
CN113467873A (zh) | 虚拟机的调度方法、装置、电子设备及存储介质 | |
CN112559143A (zh) | 任务调度方法、系统及计算设备 | |
CN115268949A (zh) | 一种镜像预热方法、装置、设备及存储介质 | |
CN113419818B (zh) | 基础组件部署方法、装置、服务器及存储介质 | |
Zato et al. | Platform for building large-scale agent-based systems | |
CN114546648A (zh) | 任务处理方法及任务处理平台 | |
CN107734050B (zh) | 一种负载机分配方法、计算设备及负载机分配系统 | |
JP2022069420A (ja) | コンピュータ実装方法、コンピュータシステムおよびコンピュータプログラム製品(エッジコンピューティング環境における障害管理) | |
TWI795262B (zh) | 高可用服務之部署系統、方法及其電腦可讀媒介 | |
US8738684B1 (en) | Dynamic collaborations in concurrent computing environments | |
US20030088661A1 (en) | Method for constructing distributed software components | |
KR102501542B1 (ko) | 블록체인 시스템의 가동 방법, 장치, 설비 및 저장 매체 | |
US20220365822A1 (en) | Data Processing Method and Computer Device | |
CN112558985B (zh) | 子应用部署方法和装置 | |
CN114745377A (zh) | 边缘云集群服务系统及实现方法 | |
CN115225482A (zh) | 一种基于Kubernetes进行Pod容器网络配置的方法及装置 |