日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MongoDB服務(wù)配置具體方法

MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案,本篇文章為大家分享一下MongoDB服務(wù)配置具體方法,有需要的小伙伴可以參考一下。

目前創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、扎賚諾爾網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

介紹

想在筆記本電腦上嘗試 MongoDB?只需執(zhí)行一個(gè)命令,你就會(huì)有一個(gè)輕量級(jí)的、獨(dú)立的沙箱。完成后可以刪除你所做的所有痕跡。

想在多個(gè)環(huán)境中使用相同的程序棧application stack副本?構(gòu)建你自己的容器鏡像,讓你的開發(fā)、測(cè)試、運(yùn)維和支持團(tuán)隊(duì)使用相同的環(huán)境克隆。

容器正在徹底改變整個(gè)軟件生命周期:從最早的技術(shù)性實(shí)驗(yàn)和概念證明,貫穿了開發(fā)、測(cè)試、部署和支持。

編排工具用來管理如何創(chuàng)建、升級(jí)多個(gè)容器,并使之高可用。編排還控制容器如何連接,以從多個(gè)微服務(wù)容器構(gòu)建復(fù)雜的應(yīng)用程序。

豐富的功能、簡單的工具和強(qiáng)大的 API 使容器和編排功能成為 DevOps 團(tuán)隊(duì)的首選,將其集成到連續(xù)集成(CI) 和連續(xù)交付 (CD) 的工作流程中。

這篇文章探討了在容器中運(yùn)行和編排 MongoDB 時(shí)遇到的額外挑戰(zhàn),并說明了如何克服這些挑戰(zhàn)。

MongoDB 的注意事項(xiàng)

使用容器和編排運(yùn)行 MongoDB 有一些額外的注意事項(xiàng):

MongoDB 數(shù)據(jù)庫節(jié)點(diǎn)是有狀態(tài)的。如果容器發(fā)生故障并被重新編排,數(shù)據(jù)則會(huì)丟失(能夠從副本集的其他節(jié)點(diǎn)恢復(fù),但這需要時(shí)間),這是不合需要的。為了解決這個(gè)問題,可以使用諸如 Kubernetes 中的數(shù)據(jù)卷volume 抽象等功能來將容器中臨時(shí)的 MongoDB 數(shù)據(jù)目錄映射到持久位置,以便數(shù)據(jù)在容器故障和重新編排過程中存留。一個(gè)副本集中的 MongoDB 數(shù)據(jù)庫節(jié)點(diǎn)必須能夠相互通信 – 包括重新編排后。副本集中的所有節(jié)點(diǎn)必須知道其所有對(duì)等節(jié)點(diǎn)的地址,但是當(dāng)重新編排容器時(shí),可能會(huì)使用不同的 IP 地址重新啟動(dòng)。例如,Kubernetes Pod 中的所有容器共享一個(gè) IP 地址,當(dāng)重新編排 pod 時(shí),IP 地址會(huì)發(fā)生變化。使用 Kubernetes,可以通過將 Kubernetes 服務(wù)與每個(gè) MongoDB 節(jié)點(diǎn)相關(guān)聯(lián)來處理,該節(jié)點(diǎn)使用 Kubernetes DNS 服務(wù)提供“主機(jī)名”,以保持服務(wù)在重新編排中保持不變。一旦每個(gè)單獨(dú)的 MongoDB 節(jié)點(diǎn)運(yùn)行起來(每個(gè)都在自己的容器中),則必須初始化副本集,并添加每個(gè)節(jié)點(diǎn)到其中。這可能需要在編排工具之外提供一些額外的處理。具體來說,必須使用目標(biāo)副本集中的一個(gè) MongoDB 節(jié)點(diǎn)來執(zhí)行 rs.initiate 和 rs.add 命令。如果編排框架提供了容器的自動(dòng)化重新編排(如 Kubernetes),那么這將增加 MongoDB 的彈性,因?yàn)檫@可以自動(dòng)重新創(chuàng)建失敗的副本集成員,從而在沒有人為干預(yù)的情況下恢復(fù)完全的冗余級(jí)別。應(yīng)該注意的是,雖然編排框架可能監(jiān)控容器的狀態(tài),但是不太可能監(jiān)視容器內(nèi)運(yùn)行的應(yīng)用程序或備份其數(shù)據(jù)。這意味著使用 MongoDB Enterprise Advanced 和 MongoDB Professional 中包含的 MongoDB Cloud Manager 等強(qiáng)大的監(jiān)控和備份解決方案非常重要??梢钥紤]創(chuàng)建自己的鏡像,其中包含你首選的 MongoDB 版本和 MongoDB Automation Agent。

使用 Docker 和 Kubernetes 實(shí)現(xiàn) MongoDB 副本集

如上節(jié)所述,分布式數(shù)據(jù)庫(如 MongoDB)在使用編排框架(如 Kubernetes)進(jìn)行部署時(shí),需要稍加注意。本節(jié)將介紹詳細(xì)介紹如何實(shí)現(xiàn)。

我們首先在單個(gè) Kubernetes 集群中創(chuàng)建整個(gè) MongoDB 副本集(通常在一個(gè)數(shù)據(jù)中心內(nèi),這顯然不能提供地理冗余)。實(shí)際上,很少有必要改變成跨多個(gè)集群運(yùn)行,這些步驟將在后面描述。

副本集的每個(gè)成員將作為自己的 pod 運(yùn)行,并提供一個(gè)公開 IP 地址和端口的服務(wù)。這個(gè)“固定”的 IP 地址非常重要,因?yàn)橥獠繎?yīng)用程序和其他副本集成員都可以依賴于它在重新編排 pod 的情況下保持不變。

下圖說明了其中一個(gè) pod 以及相關(guān)的復(fù)制控制器和服務(wù)。

mongodb服務(wù)配置mongodb服務(wù)配置

圖 1:MongoDB 副本集成員被配置為 Kubernetes Pod 并作為服務(wù)公開圖 1:MongoDB 副本集成員被配置為 Kubernetes Pod 并作為服務(wù)公開逐步介紹該配置中描述的資源:

從核心開始,有一個(gè)名為 mongo-node1 的容器。mongo-node1 包含一個(gè)名為 mongo 的鏡像,這是一個(gè)在 Docker Hub 上托管的一個(gè)公開可用的 MongoDB 容器鏡像。容器在集群中暴露端口 27107。Kubernetes 的數(shù)據(jù)卷功能用于將連接器中的 /data/db 目錄映射到名為 mongo-persistent-storage1 的永久存儲(chǔ)上,這又被映射到在 Google Cloud 中創(chuàng)建的名為 mongodb-disk1 的磁盤中。這是 MongoDB 存儲(chǔ)其數(shù)據(jù)的地方,這樣它可以在容器重新編排后保留。容器保存在一個(gè) pod 中,該 pod 中有標(biāo)簽命名為 mongo-node,并提供一個(gè)名為 rod 的(任意)示例。配置 mongo-node1 復(fù)制控制器以確保 mongo-node1 pod 的單個(gè)實(shí)例始終運(yùn)行。名為 mongo-svc-a 的 負(fù)載均衡 服務(wù)給外部開放了一個(gè) IP 地址以及 27017 端口,它被映射到容器相同的端口號(hào)上。該服務(wù)使用選擇器來匹配 pod 標(biāo)簽來確定正確的 pod。外部 IP 地址和端口將用于應(yīng)用程序以及副本集成員之間的通信。每個(gè)容器也有本地 IP 地址,但是當(dāng)容器移動(dòng)或重新啟動(dòng)時(shí),這些 IP 地址會(huì)變化,因此不會(huì)用于副本集。下一個(gè)圖顯示了副本集的第二個(gè)成員的配置。

mongodb服務(wù)配置mongodb服務(wù)配置

圖 2:第二個(gè) MongoDB 副本集成員配置為 Kubernetes Pod圖 2:第二個(gè) MongoDB 副本集成員配置為 Kubernetes Pod90% 的配置是一樣的,只有這些變化:

磁盤和卷名必須是唯一的,因此使用的是 mongodb-disk2 和 mongo-persistent-storage2Pod 被分配了一個(gè) instance: jane 和 name: mongo-node2 的標(biāo)簽,以便新的服務(wù)可以使用選擇器與圖 1 所示的 rod Pod 相區(qū)分。復(fù)制控制器命名為 mongo-rc2該服務(wù)名為mongo-svc-b,并獲得了一個(gè)唯一的外部 IP 地址(在這種情況下,Kubernetes 分配了 104.1.4.5)第三個(gè)副本成員的配置遵循相同的模式,下圖展示了完整的副本集:

mongodb服務(wù)配置mongodb服務(wù)配置

圖 3:配置為 Kubernetes 服務(wù)的完整副本集成員圖 3:配置為 Kubernetes 服務(wù)的完整副本集成員請(qǐng)注意,即使在三個(gè)或更多節(jié)點(diǎn)的 Kubernetes 群集上運(yùn)行圖 3 所示的配置,Kubernetes 可能(并且經(jīng)常會(huì))在同一主機(jī)上編排兩個(gè)或多個(gè) MongoDB 副本集成員。這是因?yàn)?Kubernetes 將三個(gè) pod 視為屬于三個(gè)獨(dú)立的服務(wù)。

為了在區(qū)域內(nèi)增加冗余,可以創(chuàng)建一個(gè)附加的 headless 服務(wù)。新服務(wù)不向外界提供任何功能(甚至不會(huì)有 IP 地址),但是它可以讓 Kubernetes 通知三個(gè) MongoDB pod 形成一個(gè)服務(wù),所以 Kubernetes 會(huì)嘗試在不同的節(jié)點(diǎn)上編排它們。

mongodb服務(wù)配置mongodb服務(wù)配置

圖 4:避免同一 MongoDB 副本集成員的 Headless 服務(wù)圖 4:避免同一 MongoDB 副本集成員的 Headless 服務(wù)配置和啟動(dòng) MongoDB 副本集所需的實(shí)際配置文件和命令可以在白皮書《啟用微服務(wù):闡述容器和編排》中找到。特別的是,需要一些本文中描述的特殊步驟來將三個(gè) MongoDB 實(shí)例組合成具備功能的、健壯的副本集。

多個(gè)可用區(qū) MongoDB 副本集

上面創(chuàng)建的副本集存在風(fēng)險(xiǎn),因?yàn)樗袃?nèi)容都在相同的 GCE 集群中運(yùn)行,因此都在相同的可用區(qū)availability zone中。如果有一個(gè)重大事件使可用區(qū)離線,那么 MongoDB 副本集將不可用。如果需要地理冗余,則三個(gè) pod 應(yīng)該在三個(gè)不同的可用區(qū)或地區(qū)中運(yùn)行。

令人驚奇的是,為了創(chuàng)建在三個(gè)區(qū)域之間分割的類似的副本集(需要三個(gè)集群),幾乎不需要改變。每個(gè)集群都需要自己的 Kubernetes YAML 文件,該文件僅為該副本集中的一個(gè)成員定義了 pod、復(fù)制控制器和服務(wù)。那么為每個(gè)區(qū)域創(chuàng)建一個(gè)集群,永久存儲(chǔ)和 MongoDB 節(jié)點(diǎn)是一件很簡單的事情。

mongodb服務(wù)配置mongodb服務(wù)配置

圖 5:在多個(gè)可用區(qū)域上運(yùn)行的副本集圖 5:在多個(gè)可用區(qū)域上運(yùn)行的副本集下一步要了解有關(guān)容器和編排的更多信息 – 所涉及的技術(shù)和所提供的業(yè)務(wù)優(yōu)勢(shì) – 請(qǐng)閱讀白皮書《啟用微服務(wù):闡述容器和編排》。該文件提供了獲取本文中描述的副本集,并在 Google Container Engine 中的 Docker 和 Kubernetes 上運(yùn)行的完整的說明。


當(dāng)前文章:MongoDB服務(wù)配置具體方法
文章網(wǎng)址:http://www.5511xx.com/article/dphgpeh.html