Come installare e configurare MongoDB in una macchina virtuale Linux
MongoDB è un diffuso database NoSQL open source a prestazioni elevate. Questo articolo illustra come installare e configurare MongoDB in una VM Linux usando l'interfaccia della riga di comando di Azure. Alcuni esempi illustrano in dettaglio come fare a:
- Installare e configurare manualmente un'istanza di MongoDB di base
- Creare un'istanza di MongoDB di base usando un modello di Resource Manager
- Creare un cluster complesso di MongoDB partizionato con set di repliche usando un modello di Resource Manager
Installare e configurare manualmente MongoDB su una VM
MongoDB fornisce le istruzioni di installazione per i sistemi operativi Linux Red Hat/CentOS, SUSE, Ubuntu e Debian. L'esempio seguente crea una macchina virtuale CentOS. Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure e connetterla a un account Azure tramite az login.
Come prima cosa creare un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:
az group create --name myResourceGroup --location eastus
Creare una VM con il comando az vm create. L'esempio seguente crea una macchina virtuale denominata myVM con un utente chiamato azureuser usando l'autenticazione con chiave pubblica SSH
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 azureuser@<publicIpAddress>
Per aggiungere le origini di installazione di MongoDB, creare un file di archivio yum come illustrato di seguito:
sudo touch /etc/yum.repos.d/mongodb-org-3.6.repo
Aprire il file del repository di MongoDB per la modifica, ad esempio con vi
o nano
. Aggiungere le righe seguenti:
[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
Installare MongoDB usando yum come illustrato di seguito:
sudo yum install -y mongodb-org
Per impostazione predefinita, alle immagini CentOS è applicato SELinux, che impedisce di accedere a 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:
sudo yum install -y policycoreutils-python
sudo semanage port -a -t mongod_port_t -p tcp 27017
Avviare il servizio MongoDB come di seguito:
sudo service mongod start
Verificare l'installazione di MongoDB connettendosi tramite il client mongo
locale:
mongo
A questo punto, testare l'istanza di MongoDB aggiungendo alcuni dati ed eseguendo la ricerca:
> 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:
sudo chkconfig mongod on
Creare un'istanza di MongoDB di base su CentOS usando un modello
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. 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.
- Istanza di MongoDB di base in CentOS - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-centos/azuredeploy.json
Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure e connetterla a un account Azure tramite az login. Creare prima un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:
az group create --name myResourceGroup --location eastus
Distribuire quindi il modello MongoDB con az deployment group create. Se richiesto, immettere i propri valori univoci per newStorageAccountName, dnsNameForPublicIP e nome utente e password dell'amministratore:
az deployment group create --resource-group myResourceGroup \
--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. È possibile visualizzare l'indirizzo DNS pubblico con az vm show:
az vm show -g myResourceGroup -n myLinuxVM -d --query [fqdns] -o tsv
Eseguire SSH sulla VM usando il proprio nome utente e l'indirizzo DNS pubblico:
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com
Verificare l'installazione di MongoDB connettendosi tramite il client mongo
locale, come di seguito:
mongo
A questo punto, testare l'istanza aggiungendo alcuni dati ed eseguendo la ricerca seguente:
> 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 modello
Per creare un cluster complesso di MongoDB partizionato, è possibile usare il seguente modello di avvio rapido in GitHub. Questo modello segue le procedure consigliate per cluster MongoDB partizionati per garantire ridondanza e disponibilità elevata. Il modello crea due partizioni, con tre nodi in ogni set di repliche. 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.
- Cluster di partizionamento orizzontale MongoDB in CentOS - https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-sharding-centos/azuredeploy.json
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. Per aumentare il numero di core, aprire una richiesta di supporto tecnico di Azure.
Per creare questo ambiente, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure e connetterla a un account Azure tramite az login. Creare prima un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:
az group create --name myResourceGroup --location eastus
Distribuire quindi il modello MongoDB con az deployment group create. Definire i nomi e le dimensioni delle risorse desiderati dove necessario per 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
Questa distribuzione può impiegare più di un'ora per distribuire e configurare tutte le istanze di VM. 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. È quindi possibile visualizzare lo stato della distribuzione con az deployment group show. L'esempio seguente visualizza lo stato per la distribuzione myMongoDBCluster nel gruppo di risorse myResourceGroup:
az deployment group show \
--resource-group myResourceGroup \
--name myMongoDBCluster \
--query [properties.provisioningState] \
--output tsv
Passaggi successivi
In questi esempi si effettua la connessione all'istanza di MongoDB locale dalla 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.
Questi esempi consentono di distribuire l'ambiente MongoDB di base per scopi di sviluppo. Applicare le opzioni di configurazione della sicurezza necessarie per l'ambiente in uso. Per altre informazioni, vedere i documenti sulla sicurezza di MongoDB.
Per altre informazioni sulla creazione tramite modelli, vedere Panoramica di Azure Resource Manager.
I modelli di Azure Resource Manager usano l'estensione dello script personalizzata per scaricare ed eseguire script nelle VM. 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).