Distribuire lo stack LAMP in un set di scalabilità di macchine virtuali con carico bilanciatoDeploy the LAMP stack in a load-balanced virtual machine scale set

Questo esempio crea un set di scalabilità di macchine virtuali e applica un'estensione che esegue uno script personalizzato per distribuire lo stack LAMP in ogni macchina virtuale del set di scalabilità.This example creates a virtual machine scale set and applies an extension that runs a custom script to deploy the LAMP stack on each virtual machine in the scale set.

Per eseguire questo esempio, verificare di aver installato l'ultima versione dell'interfaccia della riga di comando di Azure 2.0.To run this sample, make sure you have installed the latest Azure CLI 2.0. Per iniziare, eseguire az login per creare una connessione con Azure.To start, run az login to create a connection with Azure.

Questo esempio funziona in una shell Bash.This sample works in a Bash shell. Per le opzioni sull'esecuzione di script dell'interfaccia della riga di comando di Azure nel client Windows, vedere Running the Azure CLI in Windows (Esecuzione dell'interfaccia della riga di comando di Azure in Windows).For options on running Azure CLI scripts on Windows client, see Running the Azure CLI in Windows.

Script di esempioSample script

#!/bin/bash

# Create the resource group if it doesn't exist
az group create -n myResourceGroup -l westus


# Build the Scale Set
az vmss create -n myScaleSet -g myResourceGroup --public-ip-address-dns-name my-lamp-sample \
    --image CentOS --storage-sku Premium_LRS --admin-username deploy --vm-sku Standard_DS3_v2

# Add a load balanced endpoint on port 80 routed to the backend servers on port 80
az network lb rule create -g myResourceGroup -n http-rule --backend-pool-name myScaleSetLBBEPool \
    --backend-port 80 --frontend-ip-name LoadBalancerFrontEnd --frontend-port 80 --lb-name myScaleSetLB \
    --protocol Tcp

# Create a virtual machine scale set custom script extension. This extension will provide configuration
# to each of the virtual machines within the scale set on how to provision their software stack.
# The configuration (./projected_config.json) contains commands to be executed upon provisioning
# of instances. This is helpful for hooking into configuration management software or simply
# provisioning your software stack directly.
az vmss extension set -n CustomScript --publisher Microsoft.Azure.Extensions --version 2.0 \
   -g myResourceGroup --vmss-name myScaleSet --protected-settings ./protected_config.json --no-auto-upgrade

# The instances that we have were created before the extension was added.
# Update these instances to run the new configuration on each of them.
az vmss update-instances --instance-ids "*" -n myScaleSet -g myResourceGroup

# Scaling adds new instances. These instances will run the configuration when they're provisioned.
az vmss scale --new-capacity 2 -n myScaleSet -g myResourceGroup

ConnettereConnect

Usare questo codice per vedere come connettersi alle macchine virtuali e al set di scalabilità.Use this code to see how to connect to your VMs and your scale set.

#!/bin/bash

FQDN=$(az network public-ip list -g myResourceGroup --query \
                "[?starts_with(dnsSettings.fqdn, 'my-lamp-')].dnsSettings.fqdn | [0]" -o tsv)

PORTS=$(az network lb show -g myResourceGroup -n myScaleSetLB \
    --query "inboundNatRules[].{backend: backendPort, frontendPort: frontendPort}" -o tsv)
while read CMD; do
    read _ frontend <<< "${CMD}"
    echo "'ssh deploy@${FQDN} -p ${frontend}'"
done <<< "${PORTS}"

echo ""
echo "You can now reach the scale set by opening your browser to: 'http://${FQDN}'."

Pulire la distribuzioneClean up deployment

Eseguire il comando seguente per rimuovere il gruppo di risorse, il set di scalabilità, le macchine virtuali e tutte le risorse correlate.Run the following command to remove the resource group, the scale set and VMs, and all related resources.

az group delete -n myResourceGroup

Spiegazione dello scriptScript explanation

Questo script usa i comandi seguenti per creare un gruppo di risorse, la macchina virtuale, il set di disponibilità, il bilanciamento del carico e tutte le risorse correlate.This script uses the following commands to create a resource group, virtual machine, availability set, load balancer, and all related resources. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.Each command in the table links to command specific documentation.

ComandoCommand NoteNotes
az group createaz group create Consente di creare un gruppo di risorse in cui sono archiviate tutte le risorse.Creates a resource group in which all resources are stored.
az vmss createaz vmss create Consente di creare un set di scalabilità di macchine virtualiCreates a virtual machine scale set
az network lb rule createaz network lb rule create Consente di aggiungere un endpoint con carico bilanciatoAdd a load-balanced endpoint
az vmss extension setaz vmss extension set Consente di creare l'estensione che esegue lo script personalizzato sulla distribuzione di una macchina virtualeCreate the extension that runs the custom script on deployment of a VM
az vmss update-instancesaz vmss update-instances Consente di eseguire lo script personalizzato nelle istanze di macchine virtuali che sono state distribuite prima che l'estensione sia stata applicata al set di scalabilità.Run the custom script on the VM instances that were deployed before the extension was applied to the scale set.
az vmss scaleaz vmss scale Consente di aumentare il set di scalabilità mediante l'aggiunta di più istanze di macchine virtuali.Scale up the scale set by adding more VM instances. Lo script personalizzato viene eseguito su queste quando vengono distribuite.The custom script is run on these when they are deployed.
az network public-ip listaz network public-ip list Consente di ottenere gli indirizzi IP delle macchine virtuali create dall'esempio.Get the IP addresses of the VMs created by the sample.
az network lb showaz network lb show Consente di ottenere le porte di front-end e back-end usate dal bilanciamento del carico.Get the frontend and backend ports used by the load balancer.

Passaggi successiviNext steps

Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere la documentazione sull'interfaccia della riga di comando di Azure.For more information on the Azure CLI, see Azure CLI documentation.

Altri esempi di script dell'interfaccia della riga di comando della macchina virtuale sono reperibili nella documentazione della VM Linux di Azure.Additional virtual machine CLI script samples can be found in the Azure Linux VM documentation.