天天看點

Docker&MongoDB實戰(二)性能與容錯

在前面,我們已經知道怎樣建立和運作一個簡單的基于CentOS的MongoDB執行個體。這對于開發或者測試使用來說再好不過了,但是它并沒有說明一些性能和容錯能力的問題。在本文中,我們會了解Docker相關的磁盤存儲選項,以及在其之上運作資料庫(如MongoDB)的注意事項。

Docker&MongoDB實戰(二)性能與容錯
Docker&MongoDB實戰(二)性能與容錯

通過檢查日志檔案來确認MongoDB容器是否啟動成功:

確定資料檔案已經在指定的主機目錄~/db中建立。

這裡我們使用與第一部分中案例相同的mongodb.repo,為了友善這裡再做一次:

使用在你目前的目錄如上的兩個檔案,建構将要運作的鏡像:

現在衡量分層的根目錄檔案系統,通過運作:

你應該看到相似的輸出如下:

<code>mongoperf</code>将一直運作,你可以通過Ctrl+C退出終端。容器将一直運作在背景,是以讓我們結束它。

現在再運作下主機目錄資料卷:

從我們設定開始,這就有相同的輸出:

停止并移除之前的容器。

具有32個并行讀寫線程結果最後一組比較,我們看到在操作每秒數量提高180%,從1211到3385 ops/s。還有的吞吐量增加了225%,從4到13 MB/s。

雖然上面的方式中性能得到了提升,但這并不利于容器的遷移,因為現在我們的Docker容器需要依賴外部的Docker主機上的目錄,而這個目錄卻沒有通過Docker來管理,是以我們不能簡單的運作或者遷移它。最好的解決方案就是使用data-only容器,接下來,我們将詳述。

Docker&amp;MongoDB實戰(二)性能與容錯

僅有資料(data-only)的容器是推薦的Docker資料存儲模式,它可以解耦對主機的依賴。

為了建立資料容器來作為衡量标準,我們重新使用已經存在的<code>mongoperf</code>鏡像:

使用資料容器,重新運作測試标準,使用<code>--volume-from mongoperf-data</code>參數。

這個過程如下面的輸出:

性能方面它和主機目錄資料卷方式一緻。即使引用容器被移除了,僅僅包含資料的容器依然存在。我們繼續運作檢視:

回顧一下我們的<code>mongod</code>容器,我們現在使用data-only容器來存儲資料以獲得更好的性能。

記住,你可以通過運作<code>docker ps</code>看到映射的本地端口值。例如:

在接下來的部分,我們将研究各種各樣的Docker網絡參數,并細說哪種更适合多主機的MongoDB副本集。敬請期待!

===========================

譯者介紹

劉紅,才畢業的大學小生,平時喜歡業餘學習一些自己感興趣的技術或者架構,目前正在學習Docker,也在着手翻譯Docker官方文檔,如果對翻譯Docker官方文檔感興趣的朋友可以聯系譯者喲。

原文釋出時間為:2015-03-22

本文作者:剛百

本文來自雲栖社群合作夥伴DockerOne,了解相關資訊可以關注DockerOne。

原文标題:Docker&amp;MongoDB實戰(二)性能與容錯

繼續閱讀