您好,登錄后才能下訂單哦!
小編今天帶大家了解Paas平臺(tái)集群Container容器管理的方法是什么,文中知識(shí)點(diǎn)介紹的非常詳細(xì)。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問題的朋友找到問題的答案,下面跟著小編一起深入學(xué)習(xí)“Paas平臺(tái)集群Container容器管理的方法是什么”的知識(shí)吧。
最近CloudFoundry 和 Docker的發(fā)展勢頭確實(shí)很猛啊,使用這兩個(gè)開源項(xiàng)目來搭建Paas平臺(tái)的公司也逐漸的多了起來,但是很多公司僅僅是代搭建了一套試驗(yàn)環(huán)境,或者生產(chǎn)環(huán)境的規(guī)模還很小,很多問題都沒有暴露出來,京東云擎(JAE.JD.COM)也是使用CloudFoundry框架搭建的,在此框架的基礎(chǔ)上做的二次開發(fā)。隨著JAE項(xiàng)目的逐漸擴(kuò)張,用戶數(shù)越一天比一天多,要管理好上萬個(gè)Container確實(shí)讓我們頭疼了好久。
其實(shí)大家都知道Container的管理主要集中在幾個(gè)方面,第一個(gè)就是從Router進(jìn)來的流量如何能快速的定位到指定的Container,第二個(gè)就是Container容器的健康情況如何快速發(fā)現(xiàn)和恢復(fù)
其實(shí)只要接觸過CloudFoundry的人都知道,CF架構(gòu)中不管是Container的快速定位還是Container的的健康檢查這一塊都強(qiáng)依賴NATS消息中間件,通過DEA定時(shí)上報(bào)Container的心跳(包括了URL和Container的host:port 映射情況),前端Router通過注冊NATS的 router.register或router.unregister來更新容器的信息,HM 通過注冊心跳來對(duì)比用戶的期望狀態(tài)和容器的實(shí)際運(yùn)行狀態(tài)是否一致,其實(shí)這本來是一個(gè)很好的組件解耦架構(gòu),但是當(dāng)Container發(fā)展到一定規(guī)模的時(shí)候,nats的消息量就會(huì)很大,router或hm要處理的數(shù)據(jù)也會(huì)很多,最主要的問題還是,Container的數(shù)據(jù)不是經(jīng)常變動(dòng)的,也就是說每次傳輸?shù)男畔?5%都是一致的。從而導(dǎo)致了Nats和Router做了很多重復(fù)的工作。通過定時(shí)上報(bào)這種模式還有一個(gè)缺點(diǎn)就是必須通過設(shè)置心跳超時(shí)來判斷數(shù)據(jù)的準(zhǔn)確性這樣就會(huì)導(dǎo)致一定的數(shù)據(jù)延遲性。
既然Container的數(shù)據(jù)有一個(gè)明顯的特點(diǎn)就是不經(jīng)常變法,那么能不能每次只發(fā)生變法的數(shù)據(jù)呢,如果真能這樣就可以大大減少NATS的數(shù)據(jù)傳輸和Router處理的壓力。我想到的一個(gè)辦法就是通過zookeeper+NATS來做Container的管理
具體的思路是這樣的,每臺(tái)DEA在啟動(dòng)的時(shí)候向zookeeper注冊一個(gè)臨時(shí)節(jié)點(diǎn)(節(jié)點(diǎn)的內(nèi)容里面保存了dea所管理的所有Container信息),當(dāng)有容器創(chuàng)建的時(shí)候通過nats發(fā)布一條Container創(chuàng)建的消息,同時(shí)改變dea臨時(shí)節(jié)點(diǎn)的內(nèi)容,當(dāng)有Contaienr銷毀(包括人為銷毀或Container異常掛掉的銷毀)的時(shí)候向Nats發(fā)布一條容器消費(fèi)的消息,同時(shí)改變dea臨時(shí)節(jié)點(diǎn)的內(nèi)容,如果VM掛掉或DEA異常掛掉因?yàn)镈EA注冊的是臨時(shí)節(jié)點(diǎn),所以zookeeper會(huì)自動(dòng)刪除這個(gè)不存活的dea節(jié)點(diǎn), 在router或hm模塊里面 注冊dea發(fā)布的Container創(chuàng)建或銷毀的topic用來處理Container碧昂更的情況, 同時(shí)router 在啟動(dòng)的時(shí)候需要從zookeeper中獲取所有的dea臨時(shí)節(jié)點(diǎn)信息,循環(huán)處理每個(gè)節(jié)點(diǎn)將節(jié)點(diǎn)中的Container取出來存在內(nèi)存里面,當(dāng)zookeeper發(fā)現(xiàn)dea臨時(shí)節(jié)點(diǎn)刪除或創(chuàng)建的時(shí)候會(huì)以事件的方式通知 客戶端(比如router),此時(shí)router根據(jù)事件的類型,如果是刪除節(jié)點(diǎn),則刪除該dea里面的所有容器,如果是新增節(jié)點(diǎn)則增加節(jié)點(diǎn)里面的所有Container信息。
這樣一來既可以很好的管理所有Container還減少了很多重復(fù)的消息傳遞和處理,最主要的一個(gè)還是不用設(shè)置心跳超時(shí)從而達(dá)到容器的變法更加實(shí)時(shí)的體現(xiàn)在管理端。具體的邏輯圖大概是這個(gè)樣子。
感謝大家的閱讀,以上就是“Paas平臺(tái)集群Container容器管理的方法是什么”的全部內(nèi)容了,學(xué)會(huì)的朋友趕緊操作起來吧。相信億速云小編一定會(huì)給大家?guī)砀鼉?yōu)質(zhì)的文章。謝謝大家對(duì)億速云網(wǎng)站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。