共用方式為


如何在Linux VM上安裝及設定 MongoDB

MongoDB 是熱門的開放原始碼高效能 NoSQL 資料庫。 本文說明如何使用 Azure CLI 在 Linux VM 上安裝及設定 MongoDB。 範例會示範如何:

在虛擬機器上手動安裝和設定 MongoDB

MongoDB 提供 Linux 發行版的 安裝指示 ,包括 Red Hat / CentOS、SUSE、Ubuntu 和 Debian。 下列範例會建立 CentOS VM。 若要建立此環境,您需要安裝最新的 Azure CLI ,並使用 az login 登入 Azure 帳戶。

使用 az group create 來建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

使用 az vm create 建立 VM。 下列範例會建立名為 myVM 的 VM,並使用 SSH 公鑰驗證來建立名為 azureuser 的使用者

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image CentOS \
    --admin-username azureuser \
    --generate-ssh-keys

使用您的帳號與上一步驟中的輸出數據publicIpAddress 進行 SSH 連線至 VM:

ssh azureuser@<publicIpAddress>

若要新增 MongoDB 的安裝來源,請建立 yum 存放庫檔案,如下所示:

sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo

開啟 MongoDB 存放庫檔案以編輯,例如使用 vinano。 新增下列幾行:

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

使用 yum 安裝 MongoDB,如下所示:

sudo yum install -y mongodb-org

根據預設,SELinux 會在 CentOS 映射上強制執行,以防止您存取 MongoDB。 安裝原則管理工具並設定 SELinux,以允許 MongoDB 在其預設 TCP 連接埠 27017 上運作,如下所示:

sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017

啟動 MongoDB 服務,如下所示:

sudo service mongod start

使用本機 mongo 用戶端連線來確認 MongoDB 安裝:

mongo

現在,藉由新增一些數據,然後搜尋來測試 MongoDB 實例:

> db
test
> db.foo.insert( { a : 1 } )  
> db.foo.find()  
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit

如有需要,請將 MongoDB 設定為在系統重新啟動期間自動啟動:

sudo chkconfig mongod on

使用範本在 CentOS 上建立基本 MongoDB 實例

您可以從 GitHub 使用下列 Azure 快速入門範本,在單一 CentOS VM 上建立基本 MongoDB 實例。 此範本會使用適用於 Linux 的自定義腳本擴充功能,將 yum 存放庫新增至新建立的 CentOS VM,然後安裝 MongoDB。

若要建立此環境,您需要安裝最新的 Azure CLI ,並使用 az login 登入 Azure 帳戶。 首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

接下來,使用 az deployment group create 部署 MongoDB 範本。 出現提示時,輸入 newStorageAccountNamednsNameForPublicIP 和管理員使用者名稱和密碼的唯一值:

az deployment group create --resource-group myResourceGroup \
  --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json

使用 VM 的公用 DNS 位址登入 VM。 您可以使用 az vm show 來檢視公用 DNS 位址:

az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv

使用您自己的使用者名稱和公用 DNS 位址透過 SSH 連線到您的 VM:

ssh azureuser@mypublicdns.eastus.cloudapp.azure.com

使用本機 mongo 用戶端連線來確認 MongoDB 安裝,如下所示:

mongo

現在,新增一些數據並搜尋來測試實例,如下所示:

> db
test
> db.foo.insert( { a : 1 } )  
> db.foo.find()  
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit

使用範本在 CentOS 上建立複雜的 MongoDB 分區化叢集

您可以從 GitHub 使用下列 Azure 快速入門範本,建立複雜的 MongoDB 分區化叢集。 此範本遵循 MongoDB 分區化叢集最佳做法 ,以提供備援和高可用性。 範本會建立兩個分區,每個副本集中有三個節點。 也會建立一個具有三個節點的組態伺服器複本集,加上兩個 mongos 路由器伺服器,以提供跨分區的應用程式一致性。

警告

部署這個複雜的 MongoDB 分區化叢集需要超過 20 個核心,這通常是訂用帳戶的每個區域的預設核心計數。 提交 Azure 支援要求以增加核心數量。

若要建立此環境,您需要安裝最新的 Azure CLI ,並使用 az login 登入 Azure 帳戶。 首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

接下來,使用 az deployment group create 部署 MongoDB 範本。 定義您自己的資源名稱和大小,例如 mongoAdminUsernamesizeOfDataDiskInGBconfigNodeVmSize

az deployment group create --resource-group myResourceGroup \
  --parameters '{"adminUsername": {"value": "azureuser"},
    "adminPassword": {"value": "P@ssw0rd!"},
    "mongoAdminUsername": {"value": "mongoadmin"},
    "mongoAdminPassword": {"value": "P@ssw0rd!"},
    "dnsNamePrefix": {"value": "mypublicdns"},
    "environment": {"value": "AzureCloud"},
    "numDataDisks": {"value": "4"},
    "sizeOfDataDiskInGB": {"value": 20},
    "centOsVersion": {"value": "7.0"},
    "routerNodeVmSize": {"value": "Standard_DS3_v2"},
    "configNodeVmSize": {"value": "Standard_DS3_v2"},
    "replicaNodeVmSize": {"value": "Standard_DS3_v2"},
    "zabbixServerIPAddress": {"value": "Null"}}' \
  --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json \
  --name myMongoDBCluster \
  --no-wait

此部署可能需要一個多小時的時間才能部署及設定所有 VM 實例。 在上述命令的結尾使用 --no-wait 旗標,當 Azure 平台接受範本部署後,將控制權傳回到命令提示字元。 然後,您可以使用 az deployment group show 來檢視部署狀態。 下列範例會檢視 myResourceGroup 資源群組中 myMongoDBCluster 部署的狀態:

az deployment group show \
    --resource-group myResourceGroup \
    --name myMongoDBCluster \
    --query [properties.provisioningState] \
    --output tsv

後續步驟

在這些範例中,您會從 VM 本機連線到 MongoDB 實例。 如果您想要從其他 VM 或網路連線到 MongoDB 實例,請確定 已建立適當的網路安全組規則

這些範例會部署核心 MongoDB 環境以供開發之用。 為您的環境套用必要的安全性組態選項。 如需詳細資訊,請參閱 MongoDB 安全性檔

如需使用範本建立的詳細資訊,請參閱 Azure Resource Manager 概觀

Azure Resource Manager 範本會使用自定義腳本擴充功能,在您的 VM 上下載和執行腳本。 如需詳細資訊,請參閱 搭配Linux虛擬機使用 Azure 自定義腳本擴充功能