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 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.

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.

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.