返回部落格

如何在公有雲的 Ubuntu 中設定與優化 MongoDB

如何在公有雲的 Ubuntu 中設定與優化 MongoDB

企業意味著大量的數據,這使得處理和管理數據的問題變得更加困難。傳統上,數十年來業界一直使用 RDBMS 系統,但隨著 21 世紀大數據的出現,NoSQL (Not only SQL) 資料庫開始應用於大規模的非結構化和半結構化數據。

在這篇文章中,我將建立一個 MongoDB 叢集。

MongoDB 是一款免費且開源的 NoSQL 文件資料庫,因其提供的高擴充性和靈活性而被廣泛使用。

要在生產環境中部署 MongoDB,建議使用 Replica Sets。Replica Sets 是 MongoDB 在關聯式世界中相當於主/從(Master/Slave)架構的設計,但相比之下,它們的設定非常輕鬆,因為一切都是內建的。欲了解更多關於 Replica Sets 的資訊,請參閱 TutorialsPoint’s 對於複製過程的定義.

規劃您的 MongoDB 雲端伺服器叢集

我將建立一個 3 節點的叢集。為它們分配相等的資源非常重要,因為其中任何一個都可能成為主(即 master)伺服器。這些節點或機器可以在任何作業系統上運行,但在本教學中,我將使用 Ubuntu 18.04 LTS。關於如何掛載和設定來自 CloudSigma’s 函式庫中預裝的映像檔,您可以參考 本教學.

由於 Replica Set 的核心意義在於叢集應該在單一節點故障時仍能存活,因此如果您的所有伺服器都位於同一個實體主機上,那就毫無意義了。幸運的是,CloudSigma 確實提供了一種稱為 可用性群組 的功能。這意味著您可以指示系統將您的三台伺服器分配到不同的群組中。這樣一來,它們就永遠不會位於同一個實體主機上。關於此功能以及其他安全性和業務連續性功能的更多資訊,可以在 這裡.

使用 64 位元版本的 Linux 也很重要。原因很簡單,因為 MongoDB 在 32 位元系統上運行效果不佳(更多相關資訊請參閱 這裡).

在雲端安裝 MongoDB

這個部分非常簡單。您可以使用預先設定好的 Ubuntu 18.04 映像檔,或者自行安裝。

CPU、RAM 和硬碟的配置因人而異,取決於您的負載。對於較小規模的安裝,4 GHz CPU、4 GB RAM 和 10 GB 硬碟(用於系統)應該就足夠了。當您掛載硬碟時,請確保您使用的是 VirtIO。如果您使用 IDE,效能將會顯著下降。此外,由於您正在建立 Replica Set,您需要所有節點(和應用程式伺服器)都位於同一個 VLAN 上。

與許多其他雲端廠商不同,您無需使用 RAID10 或類似配置來設定您的儲存空間以提高效能。正如我們的許多客戶所回報的,在 CloudSigma 同時使用 SSD 和磁性硬碟,您將能獲得出色的即用效能。

我仍然建議將 MongoDB 數據保存在獨立的硬碟上。原因很簡單,因為在某些時候您可能需要進行一些檔案系統優化,而您不希望對整個檔案系統都進行這些操作。

考慮到這一點,最簡單的方法是在設定好伺服器後再新增此硬碟。現在,讓我們專注於系統安裝。如果您是自行安裝(而不是使用預先設定好的系統),我建議您在開機選單中按 F4 並選擇 ‘安裝最小化虛擬機器’.

我正在建立 3 台機器,每台機器的規格如下:

  • CPU: 4 GHz
  • RAM: 4 GB
  • SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (額外硬碟)

如 SSD 部分所述,我正在掛載一個容量為 10 GB 且已安裝 Ubuntu 18.04 LTS 的硬碟。

此外,我還掛載了另一個容量為 20 GB 的空白硬碟,用於儲存 MongoDB 數據。其大小很大程度上取決於您的使用情況,但對於小型系統,20GB 應該足夠了。然而,由於有時很難預測您將儲存多少數據,我們將使用 LVM. 這將使您以後能夠簡單地添加另一個硬碟並擴充磁碟區,而無需重新開始。或者,您可以使用單個硬碟,並在以後使用以下工具進行擴充:resize2fs。

要添加硬碟,只需轉到 ‘Drives’(硬碟)部分,點擊頂部的 ‘Create a new drive’(創建新硬碟)圖示,為新硬碟命名並將其大小設置為 20 GB。儲存後,轉到要附加該硬碟的個別機器,在該機器詳細資訊的硬碟部分下,點擊 ‘Attach a drive’(附加硬碟)並選擇該硬碟。

現在您有了三台機器,您可以開始將為 MongoDB 數據存儲添加的額外硬碟掛載到每台機器上。我建議將此硬碟添加為分割區。使用分割區允許操作系統分別管理每個區域中的資訊。為了將硬碟添加為分割區,我將首先檢查連接到我們機器的所有硬碟。為此,我將執行以下命令:

當我執行該命令時,我會得到說明我機器上的硬碟和設備的輸出。

MongoDB

在圖片中,我已將一個 10 GB 的硬碟標記為安裝了我們操作系統的硬碟。然後是另一個現在已附加的 20 GB 硬碟。硬碟位置是 /dev/vdb。您可以使用以下命令在此硬碟上創建分割區:

它將打開 fdisk 工具,這是一個提供硬碟分割功能的命令列工具,您可以在其中在我們的硬碟上創建分割區。它會給出一個提示 “Command (m for help):”,您需要在其中輸入 n 以創建新分割區,然後只需繼續按 Enter 鍵以接受預設值。在創建分割區後,輸入 w 以寫入變更。它看起來會像這樣:

它已創建一個類型為 ‘Linux’ 且大小為 20 GiB 的新分割區 1。現在分割區已創建,讓我們創建一個 LVM 池:

我輸入了 ‘19.5g’,因為我的分割區大小是 20g。接下來,執行以下命令以找出硬碟的名稱:

之後,使用以下命令以 ext4 方式格式化硬碟:

接下來,讓我們建立一個掛載磁碟的位置,以及一個用來存放 MongoDB 資料的資料夾。

為了在 fstab 中新增一條關於要掛載之新磁碟的項目,您可以直接使用以下命令:

在該命令中,blkid 會提供您每個磁碟的 UUID – 通用唯一識別碼。在這裡,我篩選出 MongoDB 磁碟的 UUID,並將此 UUID 分別與掛載資料夾的位置、檔案系統類型以及磁碟的其他選項結合。我正在將此行新增至 /etc/fstab。如果您不這樣做,在掛載磁碟時將會出錯。該項目看起來像這樣:

UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0

現在,您可以將磁碟掛載到 /mongodb 位置:

安裝 MongoDB

系統準備就緒後,讓我們繼續安裝 MongoDB。雖然 Ubuntu 的官方套件庫中確實提供了 MongoDB 版本,但我建議您改用官方的 MongoDB 版本。原因在於 Ubuntu 套件庫的版本釋出相當落後,因此如果您想充分利用 MongoDB,就必須求助於官方釋出的版本。

由於 MongoDB 提供了自己的套件庫,您只需將其新增至您的系統,然後照常安裝 MongoDB 即可。以下是要遵循的步驟:

首先,匯入套件管理系統所使用的公鑰:

然後,我建立一個清單檔案。這將包含 MongoDB 所在的套件庫,以便您的系統可以從那裡下載它:

現在,我正在更新本地套件資料庫,以便套用這些變更。

現在,我只需使用以下命令安裝該套件:

我已在每台機器上安裝了 MongoDB。

現在 MongoDB 已啟動並執行,且已在建立的磁碟機上存放資料。如果預期會有高負載和/或大量連線,您可能需要提高 ulimit 值。

如果您想更深入地瞭解您的資料,您可能還想註冊 MongoDB 的 MMS,這是一個針對 MongoDB 的免費雲端監控服務。

為您的 MongoDB 雲端建立副本集

現在,讓我們建立一個副本集。在此之前,您需要確保每台機器之間可以互相通訊。為此,請在 /etc/hosts 中新增這些項目

為了進行驗證,您可以嘗試使用主機名稱來 ping 這些機器。因此,如果我的機器 1 的 IP 是 IP-1,例如 213.189.123.12,那麼與其輸入

我會輸入,

如果您已啟用防火牆(您確實應該這樣做),請確保節點可以在內部介面上傳送和接收連接埠 28017 和 27017 的 TCP 流量。

現在,在每台機器上,使用以下命令啟動 mongod 服務。

在機器 m1 上,

接下來,在機器 m2 上,

在機器 m3 上,

在這裡,

mongod 是服務的名稱

dbpath 是我們資料庫目錄的位置

replSet 是我們副本集的名稱。同一個副本集中的每台機器都應該相同

bind_ip 是您正在執行該服務的機器的主機名稱。

一旦您啟動了 mongod 服務,請前往主要伺服器(在我的例子中,我選擇了 m1),然後執行 mongo。

這將啟動 MongoDB 終端機。在終端機上,使用以下命令初始化 replicaSet。它將使用預設設定建立 replicaSet:

現在,讓我們使用以下命令將另外兩台機器新增為副本:

您可以使用以下命令監控狀態:

就是這樣。您現在應該已經在 CloudSigma’s 極速雲端上啟動並執行您的 MongoDB 叢集了。

author

Akshay Nagpal

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

目前尚無留言。成為第一個留言的人吧。