基于容器的通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺部署架構(gòu)

信息化觀察網(wǎng)
信息化觀察網(wǎng)
容器技術(shù)(Docker)的發(fā)展使得平臺級系統(tǒng)具有更強(qiáng)的生命力,更靈活的擴(kuò)展性。然而在實(shí)際使用容器平臺時還是會遇到不少優(yōu)化的地方,需要根據(jù)情況進(jìn)行重新構(gòu)架,才能使得容器技術(shù)得到充分的利用。

容器技術(shù)(Docker)的發(fā)展使得平臺級系統(tǒng)具有更強(qiáng)的生命力,更靈活的擴(kuò)展性。然而在實(shí)際使用容器平臺時還是會遇到不少優(yōu)化的地方,需要根據(jù)情況進(jìn)行重新構(gòu)架,才能使得容器技術(shù)得到充分的利用。我們在通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺部署方面做了以下幾個方面的優(yōu)化:

一.?dāng)?shù)據(jù)庫、中間件等持久化集群模式的實(shí)現(xiàn)

數(shù)據(jù)庫等服務(wù)一方面需要保持?jǐn)?shù)據(jù)的持久性,不會因?yàn)槿萜鞯闹亟ǘ鴮?dǎo)致數(shù)據(jù)的丟失;另一方面需要保證高可用性而采用集群模式。一般的容器是狀態(tài)無關(guān)性的,但容器平臺提供了一種StatefulSet模式,它可以保持集群中容器每次啟動時一直掛上和容器編號一致的云盤,從而保證數(shù)據(jù)的持久化。因?yàn)槿萜鲗?shí)例每次建立都會分配新的ip,所以對于應(yīng)用訪問來說不能直接使用ip地址。但容器平臺提供了一種Headless模式的服務(wù),它可以為每個容器實(shí)例提供一個和容器編號一致的域名,保證通過同一個域名每次都可以訪問到集群中的指定的那個容器實(shí)例,因此應(yīng)用可以采用域名訪問進(jìn)行訪問。對于多主集群的容器服務(wù)可以通過統(tǒng)一服務(wù)(Service)進(jìn)行負(fù)載均衡供客戶端訪問:

通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺各類服務(wù)客戶端訪問的模式如下:

多主模式可以通過service負(fù)載均衡到任意一個容器實(shí)例上。

二.Java應(yīng)用/微服務(wù)共用java鏡像

常規(guī)的java應(yīng)用部署模式是:從代碼倉庫中拉取代碼編譯并構(gòu)建相應(yīng)的鏡像,或者上傳jar來構(gòu)建相應(yīng)鏡像。這種模式每個項(xiàng)目都會創(chuàng)建一個對應(yīng)的容器鏡像,一個方面它的構(gòu)建時間過長,新的宿主節(jié)點(diǎn)都會重新拉取鏡像,發(fā)布周期長,另一方面不同的項(xiàng)目構(gòu)建不同鏡像,在鏡像倉庫中的存儲消耗較大。

為了簡化發(fā)布,縮短發(fā)布周期,通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺對java應(yīng)用的發(fā)布進(jìn)行如下優(yōu)化:

統(tǒng)一構(gòu)建了一個java鏡像,它同時集成了中文支持、應(yīng)用監(jiān)控等統(tǒng)一的附加功能,應(yīng)用的更新不再需要java鏡像的重新構(gòu)建。我們定義“java應(yīng)用”和“java微服務(wù)”2種組件模版。Java應(yīng)用需要暴露服務(wù)到外部,java微服務(wù)不需要暴露出去。

通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺java應(yīng)用部署過程如下:

1.首先將打包好的jar包上傳到統(tǒng)一的部署服務(wù)器;

2.然后在容器管理平臺的編排發(fā)布中選擇“java應(yīng)用”/“java微服務(wù)”來進(jìn)行發(fā)布,其中指定要發(fā)布的jar名;

3.容器啟動時,自動根據(jù)傳入的jar包名從部署服務(wù)器下載,然后啟動java服務(wù)。

4.后續(xù)更新java應(yīng)用時,只需要上傳jar,然后在對應(yīng)java應(yīng)用上點(diǎn)擊一下“部署”即可。

Java應(yīng)用容器可以設(shè)置自動伸縮,根據(jù)實(shí)際資源消耗情況來擴(kuò)展或者減少容器數(shù)量。

三.Web應(yīng)用集群通過nfs共享

為了簡化發(fā)布,Web應(yīng)用集群采用共享文件系統(tǒng)的方式來保證集群一次性發(fā)布。由于通福云不支持多容器的云盤共享,因此通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺搭建了一個單獨(dú)的nfs文件服務(wù)容器來實(shí)現(xiàn)web應(yīng)用集群間的web文件共享:

部署服務(wù)容器掛載nfs文件服務(wù)器上共享的文件系統(tǒng)/html。Web應(yīng)用容器掛載nfs文件服務(wù)器上共享的文件系統(tǒng)/html。

Web應(yīng)用部署過程:

1.將打包好的web文件上傳到部署服務(wù)器上;

2.在部署服務(wù)器上將web文件包解壓到/html路徑下即可,web文件更新不需要重啟web容器立即生效。

以上是通服物聯(lián)-物聯(lián)網(wǎng)服務(wù)平臺基于容器部署方面的實(shí)踐,希望能夠給大家?guī)韱l(fā)。歡迎大家積極討論,分享經(jīng)驗(yàn)。

作者介紹

袁剛:架構(gòu)師,就職于中通服創(chuàng)立科技信息有限責(zé)任公司。長期從事系統(tǒng)架構(gòu)設(shè)計(jì)、技術(shù)咨詢。曾就職于中國惠普公司,擔(dān)任解決方案架構(gòu)設(shè)計(jì)顧問。

聯(lián)系方式:QQ/微信:12998295

THEEND

最新評論(評論僅代表用戶觀點(diǎn))

更多
暫無評論