Come installare e configurare MongoDB in una macchina virtuale LinuxHow to install and configure MongoDB on a Linux VM

MongoDB è un diffuso database NoSQL open source a prestazioni elevate.MongoDB is a popular open-source, high-performance NoSQL database. Questo articolo illustra come installare e configurare MongoDB in una VM Linux usando l'interfaccia della riga di comando di Azure 2.0.This article shows you how to install and configure MongoDB on a Linux VM with the Azure CLI 2.0. È possibile anche eseguire questi passaggi tramite l'interfaccia della riga di comando di Azure 1.0.You can also perform these steps with the Azure CLI 1.0. Alcuni esempi illustrano in dettaglio come fare a:Examples are shown that detail how to:

Installare e configurare manualmente MongoDB su una VMManually install and configure MongoDB on a VM

MongoDB fornisce le istruzioni di installazione per i sistemi operativi Linux Red Hat/CentOS, SUSE, Ubuntu e Debian.MongoDB provide installation instructions for Linux distros including Red Hat / CentOS, SUSE, Ubuntu, and Debian. L'esempio seguente crea una macchina virtuale CentOS.The following example creates a CentOS VM. Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure tramite az login.To create this environment, you need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login.

Come prima cosa creare un gruppo di risorse con az group create.Create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

Creare una macchina virtuale con il comando az vm create.Create a VM with az vm create. L'esempio seguente crea una macchina virtuale denominata myVM con un utente chiamato azureuser usando l'autenticazione con chiave pubblica SSHThe following example creates a VM named myVM with a user named azureuser using SSH public key authentication

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

Eseguire SSH sulla macchina virtuale usando il proprio nome utente e l'indirizzo publicIpAddress elencato nell'output ottenuto nel passaggio precedente:SSH to the VM using your own username and the publicIpAddress listed in the output from the previous step:

ssh azureuser@<publicIpAddress>

Per aggiungere le origini di installazione di MongoDB, creare un file di archivio yum come illustrato di seguito:To add the installation sources for MongoDB, create a yum repository file as follows:

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

Aprire il file di archivio di MongoDB da modificare.Open the MongoDB repo file for editing. Aggiungere le righe seguenti:Add the following lines:

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

Installare MongoDB usando yum come illustrato di seguito:Install MongoDB using yum as follows:

sudo yum install -y mongodb-org

Per impostazione predefinita, alle immagini CentOS è applicato SELinux, che impedisce di accedere a MongoDB.By default, SELinux is enforced on CentOS images that prevents you from accessing MongoDB. Installare gli strumenti per la gestione dei criteri e configurare SELinux in modo tale da consentire a MongoDB di operare sulla porta TCP 27017 predefinita, come illustrato di seguito:Install policy management tools and configure SELinux to allow MongoDB to operate on its default TCP port 27017 as follows:

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

Avviare il servizio MongoDB come di seguito:Start the MongoDB service as follows:

sudo service mongod start

Verificare l'installazione di MongoDB connettendosi tramite il client mongo locale:Verify the MongoDB installation by connecting using the local mongo client:

mongo

A questo punto, testare l'istanza di MongoDB aggiungendo alcuni dati ed eseguendo la ricerca:Now test the MongoDB instance by adding some data and then searching:

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

Se lo si desidera, configurare MongoDB per l'avvio automatico durante il riavvio del sistema:If desired, configure MongoDB to start automatically during a system reboot:

sudo chkconfig mongod on

Creare un'istanza di MongoDB di base su CentOS usando un modelloCreate basic MongoDB instance on CentOS using a template

Per creare un'istanza di MongoDB di base in una singola VM CentOS, è possibile usare il seguente modello di avvio rapido di Azure in GitHub.You can create a basic MongoDB instance on a single CentOS VM using the following Azure quickstart template from GitHub. Usando l'estensione dello script personalizzata, questo modello consente a Linux di aggiungere un archivio yum alla macchina virtuale CentOS appena creata, per poi installare MongoDB.This template uses the Custom Script extension for Linux to add a yum repository to your newly created CentOS VM and then install MongoDB.

Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure tramite az login.To create this environment, you need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login. Creare prima un gruppo di risorse con az group create.First, create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

Quindi distribuire il modello MongoDB con az group deployment create.Next, deploy the MongoDB template with az group deployment create. Definire i nomi e le dimensioni delle risorse desiderati dove necessario per newStorageAccountName, virtualNetworkName e vmSize:Define your own resource names and sizes where needed such as for newStorageAccountName, virtualNetworkName, and vmSize:

az group deployment create --resource-group myResourceGroup \
  --parameters '{"newStorageAccountName": {"value": "mystorageaccount"},
    "adminUsername": {"value": "azureuser"},
    "adminPassword": {"value": "P@ssw0rd!"},
    "dnsNameForPublicIP": {"value": "mypublicdns"},
    "virtualNetworkName": {"value": "myVnet"},
    "vmSize": {"value": "Standard_DS2_v2"},
    "vmName": {"value": "myVM"},
    "publicIPAddressName": {"value": "myPublicIP"},
    "nicName": {"value": "myNic"}}' \
  --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json

Eseguire l'accesso alla VM usando l'indirizzo DNS pubblico della VM.Log on to the VM using the public DNS address of your VM. È possibile visualizzare l'indirizzo DNS pubblico con az vm show:You can view the public DNS address with az vm show:

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

Eseguire SSH sulla VM usando il proprio nome utente e l'indirizzo DNS pubblico:SSH to your VM using your own username and public DNS address:

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

Verificare l'installazione di MongoDB connettendosi tramite il client mongo locale, come di seguito:Verify the MongoDB installation by connecting using the local mongo client as follows:

mongo

A questo punto, testare l'istanza aggiungendo alcuni dati ed eseguendo la ricerca seguente:Now test the instance by adding some data and searching as follows:

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

Creare un cluster complesso di MongoDB partizionato in CentOS usando un modelloCreate a complex MongoDB Sharded Cluster on CentOS using a template

Per creare un cluster complesso di MongoDB partizionato, è possibile usare il seguente modello di avvio rapido in GitHub.You can create a complex MongoDB sharded cluster using the following Azure quickstart template from GitHub. Questo modello segue le procedure consigliate per cluster MongoDB partizionati per garantire ridondanza e disponibilità elevata.This template follows the MongoDB sharded cluster best practices to provide redundancy and high availability. Il modello crea due partizioni, con tre nodi in ogni set di repliche.The template creates two shards, with three nodes in each replica set. Inoltre, nel server di configurazione viene creato un set di repliche con tre nodi, più due server router mongos per garantire coerenza tra le applicazioni delle varie partizioni.One config server replica set with three nodes is also created, plus two mongos router servers to provide consistency to applications from across the shards.

Avviso

La distribuzione di questo cluster complesso di MongoDB partizionato richiede più di 20 core, che in genere è il numero di core predefinito per ogni area di una sottoscrizione.Deploying this complex MongoDB sharded cluster requires more than 20 cores, which is typically the default core count per region for a subscription. Per aumentare il numero di core, aprire una richiesta di supporto tecnico di Azure.Open an Azure support request to increase your core count.

Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure tramite az login.To create this environment, you need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login. Creare prima un gruppo di risorse con az group create.First, create a resource group with az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:The following example creates a resource group named myResourceGroup in the eastus location:

az group create --name myResourceGroup --location eastus

Quindi distribuire il modello MongoDB con az group deployment create.Next, deploy the MongoDB template with az group deployment create. Definire i nomi e le dimensioni delle risorse desiderati dove necessario per mongoAdminUsername, sizeOfDataDiskInGB e configNodeVmSize:Define your own resource names and sizes where needed such as for mongoAdminUsername, sizeOfDataDiskInGB, and configNodeVmSize:

az group deployment 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

Questa distribuzione può impiegare più di un'ora per distribuire e configurare tutte le istanze di VM.This deployment can take over an hour to deploy and configure all the VM instances. Il flag --no-wait viene usato alla fine del comando precedente per restituire il controllo al prompt dei comandi dopo che la distribuzione del modello è stata accettata dalla piattaforma Azure.The --no-wait flag is used at the end of the preceding command to return control to the command prompt once the template deployment has been accepted by the Azure platform. È quindi possibile visualizzare lo stato della distribuzione con az group deployment show.You can then view the deployment status with az group deployment show. L'esempio seguente visualizza lo stato per la distribuzione myMongoDBCluster nel gruppo di risorse myResourceGroup:The following example views the status for the myMongoDBCluster deployment in the myResourceGroup resource group:

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

Passaggi successiviNext steps

In questi esempi si effettua la connessione all'istanza di MongoDB locale dalla VM.In these examples, you connect to the MongoDB instance locally from the VM. Se si desidera connettersi all'istanza di MongoDB da un'altra VM o un'altra rete, accertarsi di creare le regole del gruppo di sicurezza di rete appropriate.If you want to connect to the MongoDB instance from another VM or network, ensure the appropriate Network Security Group rules are created.

Questi esempi consentono di distribuire l'ambiente MongoDB di base per scopi di sviluppo.These examples deploy the core MongoDB environment for development purposes. Applicare le opzioni di configurazione della sicurezza necessarie per l'ambiente in uso.Apply the required security configuration options for your environment. Per altre informazioni, vedere i documenti sulla sicurezza di MongoDB.For more information, see the MongoDB security docs.

Per altre informazioni sulla creazione tramite modelli, vedere Panoramica di Azure Resource Manager.For more information about creating using templates, see the Azure Resource Manager overview.

I modelli di Azure Resource Manager usano l'estensione dello script personalizzata per scaricare ed eseguire script nelle VM.The Azure Resource Manager templates use the Custom Script Extension to download and execute scripts on your VMs. Per altre informazioni, vedere Using the Azure Custom Script Extension with Linux Virtual Machines (Usare l'estensione dello script personalizzata di Azure con macchine virtuali Linux).For more information, see Using the Azure Custom Script Extension with Linux Virtual Machines.