MongoDB 是一种常用的开源高性能 NoSQL 数据库。 本文介绍如何使用 Azure CLI 在 Linux VM 上安装和配置 MongoDB。 示例显示,其中详细介绍了如何:
在 VM 上手动安装和配置 MongoDB
MongoDB 为 Linux 发行版 提供安装说明 ,包括 Red Hat /CentOS、SUSE、Ubuntu 和 Debian。 以下示例创建 CentOS VM。 若要创建此环境,需要使用 az login 安装并登录到 Azure 帐户的最新 Azure CLI。
使用 az group create 创建资源组。 以下示例在 eastus 位置创建名为 myResourceGroup 的资源组:
az group create --name myResourceGroup --___location eastus
使用 az vm create 创建 VM。 以下示例使用 SSH 公钥身份验证通过名为 azureuser 的用户创建名为 myVM 的 VM
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
默认情况下,CentOS 映像上启用了 SELinux,这限制了对 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
若要创建此环境,需要使用 az login 安装并登录到 Azure 帐户的最新 Azure CLI。 首先,使用 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 分片群集最佳做法 ,以提供冗余和高可用性。 该模板创建两个分片,每个副本集(replica set)中有三个节点。 还创建了一个具有三个节点的配置服务器副本集,以及两个 mongos 路由器服务器,以便从各个分片向应用程序提供一致性。
- CentOS 上的 MongoDB 分片群集 - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
警告
部署此复杂的 MongoDB 分片群集需要 20 多个核心,这通常是订阅的每个区域的默认核心计数。 打开 Azure 支持请求以增加核心数量。
若要创建此环境,需要使用 az login 安装并登录到 Azure 帐户的最新 Azure CLI。 首先,使用 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 资源管理器概述。
Azure 资源管理器模板使用自定义脚本扩展在 VM 上下载和执行脚本。 有关详细信息,请参阅 将 Azure 自定义脚本扩展与 Linux 虚拟机配合使用。