MongoDB 是熱門的開放原始碼高效能 NoSQL 資料庫。 本文說明如何使用 Azure CLI 在 Linux VM 上安裝及設定 MongoDB。 範例會示範如何:
- 手動安裝和設定基本 MongoDB 實例
- 使用 Resource Manager 範本建立基本 MongoDB 實例
- 使用 Resource Manager 範本建立具有副本集的複雜 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 存放庫檔案以編輯,例如使用 vi 或 nano。 新增下列幾行:
[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。
- CentOS 上的基本 MongoDB 實例 - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
若要建立此環境,您需要安裝最新的 Azure CLI ,並使用 az login 登入 Azure 帳戶。 首先,使用 az group create 建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:
az group create --name myResourceGroup --location eastus
接下來,使用 az deployment group create 部署 MongoDB 範本。 出現提示時,輸入 newStorageAccountName、 dnsNameForPublicIP 和管理員使用者名稱和密碼的唯一值:
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 路由器伺服器,以提供跨分區的應用程式一致性。
- CentOS 上的 MongoDB 分區化叢集 - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
警告
部署這個複雜的 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 範本。 定義您自己的資源名稱和大小,例如 mongoAdminUsername、 sizeOfDataDiskInGB 和 configNodeVmSize:
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 自定義腳本擴充功能。