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