(DEPRECATO) Creare e montare una condivisione di file per un cluster DC/OS

Avviso

Il servizio Azure Container (ACS) è deprecato. Non saranno aggiunte nuove funzionalità al servizio Azure Container. Tutte le API, l'esperienza del portale, i comandi dell'interfaccia della riga di comando e la documentazione sono contrassegnate come deprecate.

Per altre informazioni, vedere l'annuncio di deprecazione del servizio Azure Container su Azure.com.

È consigliabile distribuire una delle soluzioni di Azure Marketplace seguenti:

Se si vuole usare Kubernetes, vedere Servizio Azure Kubernetes.

Questa esercitazione illustra nei dettagli come creare una condivisione file in Azure e come montarla in ogni agente e nel master del cluster DC/OS. La configurazione della condivisione file semplifica la condivisione di file tra i cluster ad esempio configurazione, accesso, log e altro ancora. Nell'esercitazione verranno eseguite le attività seguenti:

  • Creare un account di archiviazione di Azure
  • Creare una condivisione file
  • Montare la condivisione nel cluster DC/OS

È necessario un cluster del controller di dominio/sistema operativo del servizio contenitore di Azure per completare i passaggi in questa esercitazione. Se necessario, questo esempio di script può crearne uno.

Questa esercitazione richiede l'interfaccia della riga di comando di Azure 2.0.4 o versioni successive. Eseguire az --version per trovare la versione. Se è necessario eseguire l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Usare Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo superiore destro di un blocco di codice. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Avviare Cloud Shell in una nuova finestra
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.

  4. Premere INVIO per eseguire il codice.

Creare una condivisione file in Microsoft Azure

Prima di usare una condivisione file di Azure con un cluster DC/OS del servizio contenitore di Azure, è necessario creare l'account di archiviazione e la condivisione file. Eseguire lo script seguente per creare l'account di archiviazione e la condivisione file. Aggiornare i parametri con quelli dell'ambiente in uso.

# Change these four parameters
DCOS_PERS_STORAGE_ACCOUNT_NAME=mystorageaccount$RANDOM
DCOS_PERS_RESOURCE_GROUP=myResourceGroup
DCOS_PERS_LOCATION=eastus
DCOS_PERS_SHARE_NAME=dcosshare

# Create the storage account with the parameters
az storage account create -n $DCOS_PERS_STORAGE_ACCOUNT_NAME -g $DCOS_PERS_RESOURCE_GROUP -l $DCOS_PERS_LOCATION --sku Standard_LRS

# Export the connection string as an environment variable, this is used when creating the Azure file share
export AZURE_STORAGE_CONNECTION_STRING=`az storage account show-connection-string -n $DCOS_PERS_STORAGE_ACCOUNT_NAME -g $DCOS_PERS_RESOURCE_GROUP -o tsv`

# Create the share
az storage share create -n $DCOS_PERS_SHARE_NAME

Montare la condivisione nel cluster

La condivisione file deve poi essere montata in ogni macchina virtuale all'interno del cluster. Questa attività viene eseguita tramite lo strumento/protocollo CIFS. È possibile eseguire manualmente l'operazione di montaggio su ogni nodo del cluster o eseguendo uno script su ogni nodo del cluster.

In questo esempio, vengono eseguiti due script, uno per montare la condivisione file di Azure e il secondo per eseguire questo script in ogni nodo del cluster DC/OS.

Servono innanzitutto il nome dell'account di archiviazione di Azure e la chiave di accesso. Eseguire i comandi seguenti per ottenere queste informazioni. Prendere nota di tutti i valori perché vengono usati in un passaggio successivo.

Nome account di archiviazione:

STORAGE_ACCT=$(az storage account list --resource-group $DCOS_PERS_RESOURCE_GROUP --query "[?contains(name, '$DCOS_PERS_STORAGE_ACCOUNT_NAME')].[name]" -o tsv)
echo $STORAGE_ACCT

Chiave di accesso dell'account di archiviazione:

az storage account keys list --resource-group $DCOS_PERS_RESOURCE_GROUP --account-name $STORAGE_ACCT --query "[0].value" -o tsv

Ottenere poi il nome di dominio completo del master DC/OS e archiviarlo in una variabile.

FQDN=$(az acs list --resource-group $DCOS_PERS_RESOURCE_GROUP --query "[0].masterProfile.fqdn" --output tsv)

Copiare la chiave privata nel nodo master. Questa chiave è necessaria per creare una connessione SSH con tutti i nodi del cluster. Aggiornare il nome utente se è stato usato un valore non predefinito al momento della creazione del cluster.

scp ~/.ssh/id_rsa azureuser@$FQDN:~/.ssh

Creare un collegamento SSH con il master (o il primo master) del cluster basato su controller di dominio/sistema operativo. Aggiornare il nome utente se è stato usato un valore non predefinito al momento della creazione del cluster.

ssh azureuser@$FQDN

Creare un file denominato cifsMount.sh e copiare il contenuto seguente nel file.

Questo script viene usato per montare la condivisione file di Azure. Aggiornare le variabili STORAGE_ACCT_NAME e ACCESS_KEY con le informazioni raccolte in precedenza.

#!/bin/bash

# Azure storage account name and access key
SHARE_NAME=dcosshare
STORAGE_ACCT_NAME=mystorageaccount
ACCESS_KEY=mystorageaccountKey

# Install the cifs utils, should be already installed
sudo apt-get update && sudo apt-get -y install cifs-utils

# Create the local folder that will contain our share
if [ ! -d "/mnt/share/$SHARE_NAME" ]; then sudo mkdir -p "/mnt/share/$SHARE_NAME" ; fi

# Mount the share under the previous local folder created
sudo mount -t cifs //$STORAGE_ACCT_NAME.file.core.windows.net/$SHARE_NAME /mnt/share/$SHARE_NAME -o vers=3.0,username=$STORAGE_ACCT_NAME,password=$ACCESS_KEY,dir_mode=0777,file_mode=0777

Creare un secondo file denominato getNodesRunScript.sh e copiare il contenuto seguente nel file.

Questo script individua tutti i nodi del cluster e quindi esegue lo script cifsMount.sh per montare la condivisione file in ogni nodo.

#!/bin/bash

# Install jq used for the next command
sudo apt-get install jq -y

# Get the IP address of each node using the mesos API and store it inside a file called nodes
curl http://leader.mesos:1050/system/health/v1/nodes | jq '.nodes[].host_ip' | sed 's/\"//g' | sed '/172/d' > nodes

# From the previous file created, run our script to mount our share on each node
cat nodes | while read line
do
  ssh `whoami`@$line -o StrictHostKeyChecking=no < ./cifsMount.sh
  done

Eseguire lo script per montare la condivisione file di Azure in tutti i nodi del cluster.

sh ./getNodesRunScript.sh

La condivisione file è ora accessibile dal percorso /mnt/share/dcosshare in ogni nodo del cluster.

Passaggi successivi

In questa esercitazione è stata resa disponibile una condivisione file di Azure per un cluster DC/OS tramite questi passaggi:

  • Creare un account di archiviazione di Azure
  • Creare una condivisione file
  • Montare la condivisione nel cluster DC/OS

Passare alla prossima esercitazione per informazioni sull'integrazione di Registro Azure Container con DC/OS in Azure.