最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

這篇文章給大家介紹怎么在Docker和Kubernetes上運行MongoDB微服務(wù),內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司服務(wù)項目包括麻江網(wǎng)站建設(shè)、麻江網(wǎng)站制作、麻江網(wǎng)頁制作以及麻江網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,麻江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到麻江省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

想嘗試在筆記本電腦上運行MongoDB么?希望通過執(zhí)行一個簡單的命令,然后就有一個輕量級、自組織的沙盒么?并可再通過一條命令就可以移除所有的痕跡么?

需要在多個環(huán)境中運行相同的應(yīng)用程序棧?創(chuàng)建自己的容器鏡像,使得開發(fā)、測試、操作和支持團隊啟動一份完全相同的環(huán)境。

容器正在改變整個軟件生命周期;它覆蓋了從最初的技術(shù)試驗到通過開發(fā)、測試、部署和支持的概念證明。

閱讀微服務(wù):容器和編排白皮書(https://www.mongodb.com/collateral/microservices-containers-and-orchestration-explained)。

編排工具管理著多個容器如何創(chuàng)建、升級和高可用。編排同樣管理著容器如何連接,并利用多個微服務(wù)容器創(chuàng)建穩(wěn)定的應(yīng)用服務(wù)。

豐富的功能、簡單的工具、強大的API讓容器和編排得到DevOps團隊的青睞。DevOps工程師將它們整合到持續(xù)集成(CI)和持續(xù)交付(CD)工作流中。

將探索在嘗試運行和編排MongoDB容器時遇到的問題,并描述如何克服這些問題。

對于MongoDB的思考

采用容器和編排運行MongoDB帶來了一些新的思考:

MongoDB數(shù)據(jù)庫節(jié)點是有狀態(tài)的。若一個容器掛了,并且被重新編排,數(shù)據(jù)丟失是不能接受的(雖然它可以從其他節(jié)點中恢復(fù)數(shù)據(jù),但是很費時)。為解決這個問題,Kubernetes中的卷抽象(Volume  abstraction)特性將用于映射MongoDB數(shù)據(jù)文件夾到一個持久化地址,避免容器的失敗或重編排。

同一組MongoDB數(shù)據(jù)庫備份節(jié)點之間需要通信,即使是在重編排之后。同一冗余備份集合的節(jié)點必須知道全部其他節(jié)點的地址,但是當(dāng)某個容器重編排之后,它的IP地址會變化。例如,所有Kubernetes內(nèi)的容器共享一個IP地址,當(dāng)pod被重編排之后這個地址就會改變。在Kubernetes中,這個問題可以通過聯(lián)系Kubernetes服務(wù)與MongoDB節(jié)點來解決,采用Kubernetes的DNS服務(wù)提供主機名給重編排之后的服務(wù)。

一旦每個獨立的MongoDB節(jié)點(每個節(jié)點在單獨容器中)啟動起來,備份集合必須初始化,并把每個節(jié)點加入進來。這需要編排工具提供額外的邏輯。特別是備份集合中只有一個MongoDB節(jié)點時,必須執(zhí)行rs.initiate和rs.add命令。

如果編排框架提供自動化重編排容器功能(如Kubernetes的特性),那么這可以提高MongoDB的容災(zāi)性,節(jié)點會在掛掉之后自動重新創(chuàng)建,恢復(fù)到完整冗余水平且不需要人工干預(yù)。

當(dāng)編排框架掌控所有容器的狀態(tài)時,它并不管理容器內(nèi)的應(yīng)用或者備份數(shù)據(jù)。這就意味著采用一個有效的管理和備份方案很重要,如MongoDB Cloud  Manager,包括MongoDB Enterprise Advanced和MongoDB  Professional兩部分??紤]到需要創(chuàng)建鏡像,可采用你傾向的MongoDB版本和MongoDB Automation Agent。

利用Docker和Kubernetes實現(xiàn)MongoDB冗余備份

如前一節(jié)所述,MongoDB這類分布式數(shù)據(jù)庫在利用編排框架(如Kubernetes)進行部署時需要額外考慮。本節(jié)將對這部分細節(jié)進行分析,并介紹如何實現(xiàn)。

首先,我們在一個單獨的Kubernetes集群(同一個數(shù)據(jù)中心內(nèi),并不存在物理上的冗余備份)中創(chuàng)建整個MongoDB冗余集合。如果跨多個數(shù)據(jù)中心進行創(chuàng)建,其步驟也差異不大,后續(xù)將會介紹。

備份中的每個成員都運行在獨自的pod中,只暴露其IP地址和端口。固定的IP地址對于外部應(yīng)用和其他冗余備份節(jié)點非常重要,它決定了哪些pod將被重新部署。

下圖展示了其中一個pod與關(guān)聯(lián)的冗余控制器和服務(wù)的關(guān)系。

怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

深入這些配置中描述的資源,內(nèi)容如下:

啟動核心節(jié)點mongo-node1。該節(jié)點包括了一個叫做的mongo的鏡像,來源于Docker  Hub(https://hub.docker.com/_/mongo/),其暴露27107端口。

Kubernetes的卷特性用于映射/data/db文件夾到持久化目錄mongo-persistent-storage1;該目錄為Google  Cloud上創(chuàng)建的目錄映射mongodb-disk1,用于持久化MongoDB的數(shù)據(jù)。

容器由pod進行管理,標(biāo)記為mongo-node,同時對rod提供一個隨機生成的名字。

冗余控制器命名為mongo-rc1,用于確保mongo-node1的實例一直處于運行中。

負載均衡服務(wù)命名為mongo-svc-a用27017暴露端口。該服務(wù)通過pod的標(biāo)簽匹配正確的服務(wù)到對應(yīng)的pod上,對外暴露的ip和端口給應(yīng)用程序使用,同時用于冗余備份集合中各節(jié)點的通信。雖然每個容器擁有內(nèi)部ip,但是當(dāng)容器被重啟或者移動之后它們會變更,因此不能用于冗余備份集合之間的通信。

下圖展示了冗余備份及中的另一個成員信息:

怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

90%的配置是相同的,只有幾處不同:

硬盤和卷的名字必須是***的,于是采用mongodb-disk2和mongo-persisitent-storage2

Pod分配到j(luò)ane實例,同時節(jié)點命名為mongo-node2,用于區(qū)分新服務(wù)與圖1中的Pod

冗余控制命名為mongo-rc2

服務(wù)命名為mongo-svc-b,并獲取一個不同的外部IP地址(本例子中,Kubernets分配為104.1.4.5)

第三個冗余備份成員的配置仿照上述的模式進行,下圖展示了完整的冗余配置集合:

怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

注意,即使配置如圖3一樣,在一個三個或者多個節(jié)點的Kubernetes集群上,Kubernetes可能會調(diào)度兩個或者多個MongoDB冗余備份成員在同一個宿主機上。這是因為Kubernetes將三個pod視為三個獨立的服務(wù)。

為了增加冗余,需要創(chuàng)建一個額外的headless服務(wù)。該服務(wù)不具備提供外部服務(wù)的能力,甚至沒有外部IP地址,但是它用于通知Kubernetes這三個MongoDB  Pod是屬于同一個服務(wù),于是Kubernetes會將它們調(diào)度在不同的節(jié)點上。

怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

具體的配置文件和相關(guān)操作命令可以從《啟動微服務(wù):容器&調(diào)度說明白皮書》中找到。其中包含了三個特殊的步驟確保合并三個MongoDB到一個功能中,即本文中描述的冗余備份。

多個可用區(qū)域MongoDB冗余集合

所有冗余部件均運行在同一個GCE集群上時具有很高的風(fēng)險,在同一個zone的集群也一樣。如果發(fā)生一個重大事件導(dǎo)致可用zone離線,那么MongoDB冗余集合也就不可用。如果需要地理上的冗余備份,那么三個pod需要運行在不同的zone內(nèi)。

只需要很少的改動就可以創(chuàng)建這樣一個冗余備份集合。每一個集群需要獨自的Kubernetes  YAML文件來定義pod、冗余控制器和服務(wù)。然后,就可以完成一個zone的集群創(chuàng)建、持久化存儲和MongoDB節(jié)點。

下圖展示了運行在不同zone上的冗余結(jié)合:

怎么在Docker和Kubernetes上運行MongoDB微服務(wù)

關(guān)于怎么在Docker和Kubernetes上運行MongoDB微服務(wù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


文章名稱:怎么在Docker和Kubernetes上運行MongoDB微服務(wù)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/jgcepg.html