Distribuire lo stack LAMP in un set di scalabilità di macchine virtuali con carico bilanciato

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

Per eseguire questo esempio, verificare di aver installato l'ultima versione dell'interfaccia della riga di comando di Azure 2.0. Per iniziare, eseguire az login per creare una connessione con Azure.

Questo esempio funziona in una shell Bash. 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).

Script di esempio

#!/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

Connettere

Usare questo codice per vedere come connettersi alle macchine virtuali e al set di scalabilità.

#!/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 distribuzione

Eseguire il comando seguente per rimuovere il gruppo di risorse, il set di scalabilità, le macchine virtuali e tutte le risorse correlate.

az group delete -n myResourceGroup

Spiegazione dello script

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. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.

Comando Note
az group create Consente di creare un gruppo di risorse in cui sono archiviate tutte le risorse.
az vmss create Consente di creare un set di scalabilità di macchine virtuali
az network lb rule create Consente di aggiungere un endpoint con carico bilanciato
az vmss extension set Consente di creare l'estensione che esegue lo script personalizzato sulla distribuzione di una macchina virtuale
az 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à.
az vmss scale Consente di aumentare il set di scalabilità mediante l'aggiunta di più istanze di macchine virtuali. Lo script personalizzato viene eseguito su queste quando vengono distribuite.
az network public-ip list Consente di ottenere gli indirizzi IP delle macchine virtuali create dall'esempio.
az network lb show Consente di ottenere le porte di front-end e back-end usate dal bilanciamento del carico.

Passaggi successivi

Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere la documentazione sull'interfaccia della riga di comando di Azure.

Altri esempi di script dell'interfaccia della riga di comando della macchina virtuale sono reperibili nella documentazione della VM Linux di Azure.