Como instalar e configurar o MongoDB em uma VM Linux
O MongoDB é um popular banco de dados NoSQL de código-fonte aberto e de alto desempenho. Este artigo mostra como instalar e configurar o MongoDB em uma VM Linux com a CLI do Azure. São mostrados exemplos que explicam em detalhes como:
- Instalar e configurar uma instância básica do MongoDB manualmente
- Criar uma instância básica do MongoDB usando um Modelo do Resource Manager
- Criar um cluster fragmentado complexo MongoDB com conjuntos de réplicas usando um modelo do Resource Manager
Instalar e configurar manualmente o MongoDB em uma VM
O MongoDB fornece instruções de instalação para distribuições de Linux incluindo Red Hat/CentOS, SUSE, Ubuntu e Debian. O exemplo a seguir cria uma VM chamada CentOS. Para criar esse ambiente, você precisa da última Azure CLI instalado e conectado para uma conta Azure usando de login az.
Crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:
az group create --name myResourceGroup --location eastus
Crie uma VM com az vm create. O exemplo a seguir cria uma VM nomeada myVM com um usuário nomeado azureuser utilizando autenticação de chave pública SSH
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image CentOS \
--admin-username azureuser \
--generate-ssh-keys
SSH para a VM utilizando seu próprio nome de usuário e publicIpAddress
listado na saída da etapa anterior:
ssh azureuser@<publicIpAddress>
Para adicionar fontes de instalação para o MongoDB, crie um arquivo de repositório yum da seguinte maneira:
sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo
Abra o arquivo de repositório do MongoDB para edição, com vi
ou nano
. Adicione as linhas a seguir:
[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
Instale o MongoDB usando o yum da seguinte maneira:
sudo yum install -y mongodb-org
Por padrão, SELinux é imposto nas imagens do CentOS que impedem que você acesse o MongoDB. Instale as ferramentas de gerenciamento de política e configure o SELinux para permitir que o MongoDB opere na porta TCP padrão 27017, conforme descrito a seguir:
sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017
Inicie o serviço MongoDB da seguinte maneira:
sudo service mongod start
Verifique a instalação do MongoDB ao se conectar usando o cliente mongo
local:
mongo
Agora teste a instância do MongoDB adicionando alguns dados e, em seguida, pesquisando por:
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
Se desejar, configure o MongoDB para iniciar automaticamente durante uma reinicialização do sistema:
sudo chkconfig mongod on
Criar uma instância básica do MongoDB em CentOS usando um modelo
Você pode criar uma instância básica do MongoDB em uma única VM CentOS usando o modelo de início rápido do Azure a seguir no GitHub. Este modelo usa a extensão de Script Personalizado para Linux para adicionar um repositório yum à sua VM CentOS recém-criada e então instalar o MongoDB.
- Instância básica do MongoDB no CentOS - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
Para criar esse ambiente, você precisa da última Azure CLI instalado e conectado para uma conta Azure usando de login az. Primeiro, crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:
az group create --name myResourceGroup --location eastus
Em seguida, implante o modelo do MongoDB com az deployment group create. Mediante solicitação, insira seus próprios valores exclusivos para newStorageAccountName, dnsNameForPublicIP e nome de usuário e senha de administrador:
az deployment group create --resource-group myResourceGroup \
--template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
Faça logon na VM usando o endereço DNS público de sua VM. Você pode exibir o endereço DNS público com az vm show:
az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv
SSH para sua VM usando seu próprio nome de usuário e endereço DNS público:
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com
Verifique a instalação do MongoDB ao se conectar usando o cliente mongo
local conforme demonstrado a seguir:
mongo
Agora teste a instância adicionando alguns dados e, em seguida, pesquisando conforme demonstrado a seguir:
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find()
{ "_id" : ObjectId("57ec477cd639891710b90727"), "a" : 1 }
> exit
Criar um Cluster Fragmentado MongoDB complexo no CentOS usando um modelo
Você pode criar um cluster fragmentado complexo MongoDB usando o modelo de início rápido do Azure a seguir no GitHub. Esse modelo segue as melhores práticas do cluster fragmentado MongoDB para fornecer alta disponibilidade e redundância. O modelo cria dois fragmentos, com três nós em cada conjunto de réplicas. Um conjunto de réplicas de servidor de configuração com três nós também é criado, mais dois servidores do roteador mongos para fornecer consistência a aplicativos entre os fragmentos.
- Cluster de Fragmentos do MongoDB no CentOS - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
Aviso
Implantar este cluster fragmentado MongoDB complexo requer mais de 20 núcleos, que é normalmente a contagem padrão de núcleos por região para uma assinatura. Abra uma solicitação de suporte do Azure para aumentar a contagem de núcleos.
Para criar esse ambiente, você precisa da última Azure CLI instalado e conectado para uma conta Azure usando de login az. Primeiro, crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:
az group create --name myResourceGroup --location eastus
Em seguida, implante o modelo do MongoDB com az deployment group create. Defina seus próprios nomes e tamanhos de recurso quando necessário, como para mongoAdminUsername, sizeOfDataDiskInGB e 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
Essa implantação pode demorar mais de uma hora para implantar e configurar todas as instâncias da VM. O sinalizador --no-wait
é usado no final do comando anterior para retornar o controle ao prompt de comando após a implantação de modelo ter sido aceita pela plataforma do Azure. Em seguida, você pode exibir o status da implantação com az deployment group show. O exemplo a seguir exibe o status da implantação do myMongoDBCluster no grupo de recursos myResourceGroup:
az deployment group show \
--resource-group myResourceGroup \
--name myMongoDBCluster \
--query [properties.provisioningState] \
--output tsv
Próximas etapas
Nesses exemplos, você se conecta à instância do MongoDB localmente da VM. Se você desejar conectar-se à instância do MongoDB de outra VM ou de rede, certifique-se de que as devidas regras de Grupo de Segurança de Rede tenham sido criadas.
Esses exemplos implantam o ambiente do MongoDB principal para fins de desenvolvimento. Aplique as opções de configuração de segurança necessárias para o seu ambiente. Para obter mais informações, consulte os documentos de segurança do MongoDB.
Para obter mais informações sobre a criação de modelos, veja a Visão geral do Azure Resource Manager.
Os modelos do Azure Resource Manager usam a Extensão de Script Personalizado para baixar e executar scripts em suas VMs. Para obter mais informações, veja Uso da extensão de script personalizado do Azure com máquinas virtuais do Linux.