Domande frequenti sui set di scalabilità di macchine virtuali di AzureAzure virtual machine scale sets FAQs

Risposte alle domande frequenti sui set di scalabilità di macchine virtuali in Azure.Get answers to frequently asked questions about virtual machine scale sets in Azure.

AutoscaleAutoscale

Quali sono le procedure consigliate per la scalabilità automatica di Azure?What are best practices for Azure Autoscale?

Per informazioni sulle procedure consigliate per la scalabilità automatica, vedere Procedure consigliate per la scalabilità automatica delle macchine virtuali.For best practices for Autoscale, see Best practices for autoscaling virtual machines.

Dove è possibile trovare i nomi delle metriche per la scalabilità automatica che usa metriche basate su host?Where do I find metric names for autoscaling that uses host-based metrics?

Per informazioni sui nomi delle metriche per la scalabilità automatica che usa metriche basate su host, vedere Metriche supportate con Monitoraggio di Azure.For metric names for autoscaling that uses host-based metrics, see Supported metrics with Azure Monitor.

Sono disponibili eventuali esempi di scalabilità automatica basata sull'argomento o sulla lunghezza della coda del bus di servizio di Azure?Are there any examples of autoscaling based on an Azure Service Bus topic and queue length?

Sì.Yes. Per esempi di scalabilità automatica basata sull'argomento o sulla lunghezza della coda del bus di servizio di Azure, vedere Metriche comuni per la scalabilità automatica di Monitoraggio di Azure.For examples of autoscaling based on an Azure Service Bus topic and queue length, see Azure Monitor autoscaling common metrics.

Per una coda del bus di servizio, usare il codice JSON seguente:For a Service Bus queue, use the following JSON:

"metricName": "MessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ServiceBus/namespaces/mySB/queues/myqueue"

Per una coda di archiviazione, usare il codice JSON seguente:For a storage queue, use the following JSON:

"metricName": "ApproximateMessageCount",
"metricNamespace": "",
"metricResourceUri": "/subscriptions/s1/resourceGroups/rg1/providers/Microsoft.ClassicStorage/storageAccounts/mystorage/services/queue/queues/mystoragequeue"

Sostituire i valori dell'esempio con gli URI (Uniform Resource Identifier) della risorsa specifica.Replace example values with your resource Uniform Resource Identifiers (URIs).

È consigliabile applicare la scalabilità automatica usando metriche basate su host oppure un'estensione di diagnostica?Should I autoscale by using host-based metrics or a diagnostics extension?

È possibile creare un'impostazione di scalabilità automatica in una macchina virtuale per l'uso di metriche a livello di host o per l'uso di metriche basate sul sistema operativo guest.You can create an autoscale setting on a VM to use host-level metrics or guest OS-based metrics.

Per un elenco delle metriche supportate, vedere Metriche comuni per la scalabilità automatica di Monitoraggio di Azure.For a list of supported metrics, see Azure Monitor autoscaling common metrics.

Per un esempio completo per i set di scalabilità di macchine virtuali, vedere Configurazione di scalabilità automatica avanzata con modelli di Resource Manager per set di scalabilità di macchine virtuali.For a full sample for virtual machine scale sets, see Advanced autoscale configuration by using Resource Manager templates for virtual machine scale sets.

L'esempio usa la metrica relativa alla CPU a livello di host e una metrica di conteggio dei messaggi.The sample uses the host-level CPU metric and a message count metric.

Come si impostano le regole di avviso in un set di scalabilità di macchine virtuali?How do I set alert rules on a virtual machine scale set?

È possibile creare avvisi sulle metriche per i set di scalabilità di macchine virtuali tramite PowerShell o l'interfaccia della riga di comando di Azure.You can create alerts on metrics for virtual machine scale sets via PowerShell or Azure CLI. Per altre informazioni, vedere Esempi di avvio rapido con PowerShell per Monitoraggio di Azure ed Esempi di avvio rapido dell'interfaccia della riga di comando multipiattaforma di Monitoraggio di Azure.For more information, see Azure Monitor PowerShell quick start samples and Azure Monitor cross-platform CLI quick start samples.

Il valore TargetResourceId del set di scalabilità di macchine virtuali ha un aspetto simile al seguente:The TargetResourceId of the virtual machine scale set looks like this:

/subscriptions/yoursubscriptionid/resourceGroups/yourresourcegroup/providers/Microsoft.Compute/virtualMachineScaleSets/yourvmssname/subscriptions/yoursubscriptionid/resourceGroups/yourresourcegroup/providers/Microsoft.Compute/virtualMachineScaleSets/yourvmssname

È possibile scegliere qualsiasi contatore delle prestazioni delle macchine virtuali come metrica per cui impostare un avviso.You can choose any VM performance counter as the metric to set an alert for. Per altre informazioni, vedere Metriche del sistema operativo guest per le VM Windows basate su Resource Manager e Metriche del sistema operativo guest per le VM Linux nell'articolo Metriche comuni per la scalabilità automatica di Monitoraggio di Azure.For more information, see Guest OS metrics for Resource Manager-based Windows VMs and Guest OS metrics for Linux VMs in the Azure Monitor autoscaling common metrics article.

Come si configura la scalabilità automatica in un set di scalabilità di macchine virtuali tramite PowerShell?How do I set up autoscale on a virtual machine scale set by using PowerShell?

Per configurare la scalabilità automatica in un set di scalabilità di macchine virtuali tramite PowerShell, vedere il post di blog How to add autoscale to an Azure virtual machine scale set (Come aggiungere la scalabilità automatica in un set di scalabilità di macchine virtuali di Azure).To set up autoscale on a virtual machine scale set by using PowerShell, see the blog post How to add autoscale to an Azure virtual machine scale set.

CertificatiCertificates

Come si invia un certificato alla VM in modo sicuro?How do I securely ship a certificate to the VM? Come si effettua il provisioning di un set di scalabilità di macchine virtuali per eseguire un sito Web in cui il certificato SSL per il sito Web viene inviato in modo sicuro da una configurazione del certificato?How do I provision a virtual machine scale set to run a website where the SSL for the website is shipped securely from a certificate configuration? L'operazione di rotazione del certificato comune è quasi uguale a un'operazione di aggiornamento della configurazione. È disponibile un esempio per questa operazione?(The common certificate rotation operation would be almost the same as a configuration update operation.) Do you have an example of how to do this?

Per inviare in modo sicuro un certificato alla macchina virtuale, è possibile installare un certificato cliente direttamente nell'archivio certificati Windows dall'insieme di credenziali delle chiavi del cliente.To securely ship a certificate to the VM, you can install a customer certificate directly into a Windows certificate store from the customer's key vault.

Usare il codice JSON seguente:Use the following JSON:

"secrets": [
    {
        "sourceVault": {
            "id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
        },
        "vaultCertificates": [
            {
                "certificateUrl": "https://mykeyvault1.vault.azure.net/secrets/{secretname}/{secret-version}",
                "certificateStore": "certificateStoreName"
            }
        ]
    }
]

Il codice supporta Windows e Linux.The code supports Windows and Linux.

Per altre informazioni, vedere Create or update a virtual machine scale set (Creare o aggiornare un set di scalabilità di macchine virtuali).For more information, see Create or update a virtual machine scale set.

Esempio di certificato autofirmatoExample of Self-signed certificate

  1. Creare un certificato autofirmato in un insieme di credenziali delle chiavi.Create a self-signed certificate in a key vault.

    Usare i comandi di PowerShell seguenti:Use the following PowerShell commands:

    Import-Module "C:\Users\mikhegn\Downloads\Service-Fabric-master\Scripts\ServiceFabricRPHelpers\ServiceFabricRPHelpers.psm1"
    
    Login-AzureRmAccount
    
    Invoke-AddCertToKeyVault -SubscriptionId <Your SubID> -ResourceGroupName KeyVault -Location westus -VaultName MikhegnVault -CertificateName VMSSCert -Password VmssCert -CreateSelfSignedCertificate -DnsName vmss.mikhegn.azure.com -OutputPath c:\users\mikhegn\desktop\
    

    Questo comando fornisce l'input per il modello di Azure Resource Manager.This command gives you the input for the Azure Resource Manager template.

    Per un esempio della creazione di un certificato autofirmato in un insieme di credenziali delle chiavi, vedere Scenari di sicurezza di un cluster di Service Fabric.For an example of how to create a self-signed certificate in a key vault, see Service Fabric cluster security scenarios.

  2. Modificare il modello di Resource Manager.Change the Resource Manager template.

    Aggiungere questa proprietà a virtualMachineProfile, come parte della risorsa del set di scalabilità di macchine virtuali:Add this property to virtualMachineProfile, as part of the virtual machine scale set resource:

    "osProfile": {
        "computerNamePrefix": "[variables('namingInfix')]",
        "adminUsername": "[parameters('adminUsername')]",
        "adminPassword": "[parameters('adminPassword')]",
        "secrets": [
            {
                "sourceVault": {
                    "id": "[resourceId('KeyVault', 'Microsoft.KeyVault/vaults', 'MikhegnVault')]"
                },
                "vaultCertificates": [
                    {
                        "certificateUrl": "https://mikhegnvault.vault.azure.net:443/secrets/VMSSCert/20709ca8faee4abb84bc6f4611b088a4",
                        "certificateStore": "My"
                    }
                ]
            }
        ]
    }
    

È possibile specificare una coppia di chiavi SSH da usare per l'autenticazione SSH con un set di scalabilità di macchine virtuali Linux da un modello di Resource Manager?Can I specify an SSH key pair to use for SSH authentication with a Linux virtual machine scale set from a Resource Manager template?

Sì.Yes. L'API REST per osProfile è simile all'API REST delle macchine virtuali standard.The REST API for osProfile is similar to the standard VM REST API.

Includere osProfile nel modello:Include osProfile in your template:

"osProfile": {
    "computerName": "[variables('vmName')]",
    "adminUsername": "[parameters('adminUserName')]",
    "linuxConfiguration": {
        "disablePasswordAuthentication": "true",
        "ssh": {
            "publicKeys": [
                {
                    "path": "[variables('sshKeyPath')]",
                    "keyData": "[parameters('sshKeyData')]"
                }
            ]
        }
    }
}

Questo blocco JSON viene usato nel modello di avvio rapido 101-vm-sshkey di GitHub.This JSON block is used in the 101-vm-sshkey GitHub quick start template.

Il profilo del sistema operativo viene usato anche nel modello di avvio rapido grelayhost.json di GitHub.The OS profile also is used in the grelayhost.json GitHub quick start template.

Per altre informazioni, vedere Create or update a virtual machine scale set (Creare o aggiornare un set di scalabilità di macchine virtuali).For more information, see Create or update a virtual machine scale set.

Come si rimuovono i certificati deprecati?How do I remove deprecated certificates?

Per rimuovere i certificati deprecati, rimuovere il certificato precedente dall'elenco di certificati dell'insieme di credenziali.To remove deprecated certificates, remove the old certificate from the vault certificates list. Lasciare nell'elenco tutti i certificati da conservare nel computer.Leave all the certificates that you want to remain on your computer in the list. Questa operazione non rimuove il certificato da tutte le macchine virtuali.This does not remove the certificate from all your VMs. Non aggiunge inoltre il certificato alle nuove macchine virtuali create nel set di scalabilità di macchine virtuali.It also does not add the certificate to new VMs that are created in the virtual machine scale set.

Per rimuovere il certificato dalle macchine virtuali esistenti, scrivere un'estensione personalizzata dello script per rimuovere manualmente i certificati dall'archivio certificati.To remove the certificate from existing VMs, write a custom script extension to manually remove the certificates from your certificate store.

Come si inserisce una chiave pubblica SSH esistente nel livello SSH del set di scalabilità di macchine virtuali durante il provisioning?How do I inject an existing SSH public key into the virtual machine scale set SSH layer during provisioning? Si vuole archiviare i valori della chiave pubblica SSH in Azure Key Vault e quindi usarli nel modello di Resource Manager.I want to store the SSH public key values in Azure Key Vault, and then use them in my Resource Manager template.

Se si fornisce alle macchine virtuali solo una chiave SSH pubblica, non è necessario inserire le chiavi pubbliche in Key Vault.If you are providing the VMs only with a public SSH key, you don't need to put the public keys in Key Vault. Le chiavi pubbliche non sono segrete.Public keys are not secret.

Quando si crea una VM Linux è possibile fornire le chiavi pubbliche SSH in testo normale:You can provide SSH public keys in plain text when you create a Linux VM:

"linuxConfiguration": {
    "ssh": {
        "publicKeys": [
            {
                "path": "path",
                "keyData": "publickey"
            }
        ]
    }
Nome dell'elemento linuxConfigurationlinuxConfiguration element name ObbligatorioRequired TipoType DescrizioneDescription
sshssh NoNo RaccoltaCollection Specifica la configurazione delle chiavi SSH per un sistema operativo LinuxSpecifies the SSH key configuration for a Linux OS
pathpath Yes StringString Specifica il percorso del file Linux in cui devono essere salvate le chiavi SSH o il certificatoSpecifies the Linux file path where the SSH keys or certificate should be located
keyDatakeyData Yes StringString Specifica una chiave pubblica SSH con codifica Base64Specifies a base64-encoded SSH public key

Per un esempio, vedere il modello di avvio rapido 101-vm-sshkey di GitHub.For an example, see the 101-vm-sshkey GitHub quick start template.

Quando si esegue Update-AzureRmVmss dopo avere aggiunto più di un certificato dallo stesso insieme di credenziali delle chiavi, viene visualizzato il messaggio seguente:When I run Update-AzureRmVmss after adding more than one certificate from the same key vault, I see the following message:

Update-AzureRmVmss: L'elenco secrets contiene istanze ripetute di /subscriptions//resourceGroups/internal-rg-dev/providers/Microsoft.KeyVault/vaults/internal-keyvault-dev. Questo scenario non è consentito.Update-AzureRmVmss: List secret contains repeated instances of /subscriptions//resourceGroups/internal-rg-dev/providers/Microsoft.KeyVault/vaults/internal-keyvault-dev, which is disallowed.

Questo problema si può verificare se si prova ad aggiungere di nuovo lo stesso insieme di credenziali invece di usare un nuovo certificato dell'insieme di credenziali per l'insieme di credenziali di origine esistente.This can happen if you try to re-add the same vault instead of using a new vault certificate for the existing source vault. Il comando Add-AzureRmVmssSecret non funziona correttamente se si aggiungono altri segreti.The Add-AzureRmVmssSecret command does not work correctly if you are adding additional secrets.

Per aggiungere altri segreti dallo stesso insieme di credenziali delle chiavi, aggiornare l'elenco $vmss.properties.osProfile.secrets[0].vaultCertificates.To add more secrets from the same key vault, update the $vmss.properties.osProfile.secrets[0].vaultCertificates list.

Per la struttura di input prevista, vedere Create or update a virtual machine set (Creare o aggiornare un set di macchine virtuali).For the expected input structure, see Create or update a virtual machine set.

Trovare il segreto nell'oggetto del set di scalabilità di macchine virtuali presente nell'insieme di credenziali delle chiavi.Find the secret in the virtual machine scale set object that is in the key vault. Aggiungere quindi il riferimento al certificato, ovvero l'URL e il nome dell'archivio di certificati, all'elenco associato all'insieme di credenziali.Then, add your certificate reference (the URL and the secret store name) to the list associated with the vault.

Nota

Non è attualmente possibile rimuovere i certificati dalle macchine virtuali usando l'API del set di scalabilità di macchine virtuali.Currently, you cannot remove certificates from VMs by using the virtual machine scale set API.

Le nuove macchine virtuali non includeranno il certificato precedente.New VMs will not have the old certificate. Le VM che includono il certificato e che sono già distribuite avranno tuttavia il certificato precedente.However, VMs that have the certificate and which are already deployed will have the old certificate.

È possibile inserire i certificati nel set di scalabilità di macchine virtuali senza specificare la password quando il certificato si trova nell'archivio di segreti?Can I push certificates to the virtual machine scale set without providing the password, when the certificate is in the secret store?

Non è necessario usare password hardcoded negli script.You do not need to hard-code passwords in scripts. È possibile recuperare in modo dinamico le password con le autorizzazioni usate per eseguire lo script di distribuzione.You can dynamically retrieve passwords with the permissions you use to run the deployment script. Se è presente uno script che sposta un certificato dall'insieme di credenziali delle chiavi dell'archivio di segreti, il comando get certificate dell'archivio di segreti restituisce la password del file con estensione pfx.If you have a script that moves a certificate from the secret store key vault, the secret store get certificate command also outputs the password of the .pfx file.

Come funziona la proprietà Secrets di virtualMachineProfile.osProfile per un set di scalabilità di macchine virtuali?How does the Secrets property of virtualMachineProfile.osProfile for a virtual machine scale set work? Perché è necessario il valore sourceVault quando occorre specificare l'URI assoluto per un certificato usando la proprietà certificateUrl?Why do I need the sourceVault value when I have to specify the absolute URI for a certificate by using the certificateUrl property?

Un riferimento al certificato Windows Remote Management (WinRM) deve essere presente nella proprietà Secrets del profilo del sistema operativo.A Windows Remote Management (WinRM) certificate reference must be present in the Secrets property of the OS profile.

L'indicazione dell'insieme di credenziali di origine consente di applicare i criteri dell'elenco di controllo di accesso esistenti nel modello di Servizi cloud di Azure di un utente.The purpose of indicating the source vault is to enforce access control list (ACL) policies that exist in a user's Azure Cloud Service model. Se l'insieme di credenziali di origine non è specificato, gli utenti che non sono autorizzati a distribuire o ad accedere ai segreti in un insieme di credenziali delle chiavi potrebbero eseguire l'accesso tramite provider di risorse di calcolo.If the source vault isn't specified, users who do not have permissions to deploy or access secrets to a key vault would be able to through a Compute Resource Provider (CRP). Gli elenchi di controllo di accesso sono presenti anche per risorse inesistenti.ACLs exist even for resources that do not exist.

Se si specifica un ID errato per l'insieme di credenziali di origine ma un URL valido per l'insieme di credenziali delle chiavi, viene segnalato un errore quando si esegue il polling dell'operazione.If you provide an incorrect source vault ID but a valid key vault URL, an error is reported when you poll the operation.

Se si aggiungono segreti a un set di scalabilità di macchine virtuali, i segreti vengono inseriti nelle VM esistenti o solo nelle nuove macchine virtuali?If I add secrets to an existing virtual machine scale set, are the secrets injected into existing VMs, or only into new ones?

I certificati vengono aggiunti a tutte le macchine virtuali, comprese quelle già esistenti.Certificates are added to all your VMs, even preexisting ones. Se la proprietà upgradePolicy del set di scalabilità di macchine virtuali è impostata su manual, il certificato viene aggiunto alla VM quando si esegue un aggiornamento manuale nella macchina virtuale.If your virtual machine scale set upgradePolicy property is set to manual, the certificate is added to the VM when you perform a manual update on the VM.

Dove vengono inseriti i certificati per le macchine virtuali Linux?Where do I put certificates for Linux VMs?

Per informazioni su come distribuire i certificati per le macchine virtuali Linux, vedere Deploy certificates to VMs from a customer-managed key vault (Distribuire certificati nelle VM da un insieme di credenziali delle chiavi gestito dai clienti).To learn how to deploy certificates for Linux VMs, see Deploy certificates to VMs from a customer-managed key vault.

Come si aggiunge un nuovo certificato dell'insieme di credenziali a un nuovo oggetto certificato?How do I add a new vault certificate to a new certificate object?

Per aggiungere un certificato dell'insieme di credenziali a un segreto esistente, vedere l'esempio di PowerShell seguente.To add a vault certificate to an existing secret, see the following PowerShell example. Usare solo un oggetto segreto.Use only one secret object.

$newVaultCertificate = New-AzureRmVmssVaultCertificateConfig -CertificateStore MY -CertificateUrl https://sansunallapps1.vault.azure.net:443/secrets/dg-private-enc/55fa0332edc44a84ad655298905f1809

$vmss.VirtualMachineProfile.OsProfile.Secrets[0].VaultCertificates.Add($newVaultCertificate)

Update-AzureRmVmss -VirtualMachineScaleSet $vmss -ResourceGroup $rg -Name $vmssName

Cosa accade ai certificati se si ricrea l'immagine di una macchina virtuale?What happens to certificates if you reimage a VM?

Se si ricrea l'immagine di una macchina virtuale, i certificati vengono eliminati.If you reimage a VM, certificates are deleted. La ricreazione dell'immagine elimina l'intero disco del sistema operativo.Reimaging deletes the entire OS disk.

Cosa accade se si elimina un certificato dall'insieme di credenziali delle chiavi?What happens if you delete a certificate from the key vault?

Se si elimina il segreto dall'insieme di credenziali delle chiavi, si esegue stop deallocate per tutte le macchine virtuali e quindi si riavviano le VM, si verificherà un errore.If the secret is deleted from the key vault, and then you run stop deallocate for all your VMs and then start them again, you will encounter a failure. L'errore si verifica perché il provider di risorse di calcolo deve recuperare i segreti dall'insieme di credenziali delle chiavi ma non riesce.The failure occurs because the CRP needs to retrieve the secrets from the key vault, but it cannot. In questo scenario è possibile eliminare i certificati dal modello del set di scalabilità di macchine virtuali.In this scenario, you can delete the certificates from the virtual machine scale set model.

Il provider di risorse di calcolo non rende persistenti i segreti dei clienti.The CRP component does not persist customer secrets. Se si esegue stop deallocate per tutte le macchine virtuali nel set di scalabilità di macchine virtuali, la cache viene eliminata.If you run stop deallocate for all VMs in the virtual machine scale set, the cache is deleted. In questo scenario, i segreti vengono recuperati dall'insieme di credenziali delle chiavi.In this scenario, secrets are retrieved from the key vault.

Questo problema non si verifica durante l'aumento del numero di istanze, perché è disponibile una copia del segreto memorizzata nella cache in Azure Service Fabric nel modello di tenant a infrastruttura singola.You don't encounter this problem when scaling out because there is a cached copy of the secret in Azure Service Fabric (in the single-fabric tenant model).

Per quale motivo è necessario specificare la posizione esatta per l'URL di certificato (https://.vault.azure.net:443/secrets/), come indicato in Scenari di sicurezza di un cluster di Service Fabric?Why do I have to specify the exact location for the certificate URL (https://.vault.azure.net:443/secrets/), as indicated in Service Fabric cluster security scenarios?

La documentazione di Azure Key Vault indica che l'API REST di recupero del segreto deve restituire la versione più recente del segreto nel caso in cui la versione non sia specificata.The Azure Key Vault documentation states that the Get Secret REST API should return the latest version of the secret if the version is not specified.

MetodoMethod URLURL
GETGET https://mykeyvault.vault.azure.net/secrets/{secret-name}/{secret-version}?api-version={api-version}https://mykeyvault.vault.azure.net/secrets/{secret-name}/{secret-version}?api-version={api-version}

Sostituire {secret-name} con il nome e {secret-version} con la versione del segreto da recuperare.Replace {secret-name} with the name, and replace {secret-version} with the version of the secret you want to retrieve. È possibile che la versione del segreto venga esclusa.The secret version might be excluded. In questo caso viene recuperata la versione corrente.In that case, the current version is retrieved.

Per quale motivo è necessario specificare la versione del certificato quando si usa Key Vault?Why do I have to specify the certificate version when I use Key Vault?

Il requisito di Key Vault che richiede di specificare la versione del specificato consente di indicare chiaramente all'utente il certificato che viene distribuito nelle rispettive macchine virtuali.The purpose of the Key Vault requirement to specify the certificate version is to make it clear to the user what certificate is deployed on their VMs.

Se si crea una macchina virtuale e quindi si aggiorna il segreto nell'insieme di credenziali delle chiavi, il nuovo certificato non viene scaricato nelle VM.If you create a VM and then update your secret in the key vault, the new certificate is not downloaded to your VMs. Le macchine virtuali fanno tuttavia riferimento al certificato e le nuove VM ottengono il nuovo segreto.But your VMs appear to reference it, and new VMs get the new secret. Per evitare questo problema, è necessario fare riferimento a una versione del segreto.To avoid this, you are required to reference a secret version.

Per distribuire le chiavi pubbliche con estensione cer in un set di scalabilità di macchine virtuali, è possibile generare un file con estensione pfx che contiene solo file con estensione cer.To deploy .cer public keys to a virtual machine scale set, you can generate a .pfx file that contains only .cer files. A questo scopo, usare X509ContentType = Pfx.To do this, use X509ContentType = Pfx. Caricare ad esempio il file con estensione cer come oggetto x509Certificate2 in C# o PowerShell, quindi chiamare il metodo.For example, load the .cer file as an x509Certificate2 object in C# or PowerShell, and then call the method.

Per altre informazioni, vedere Metodo X509Certificate.Export (X509ContentType, String).For more information, see X509Certificate.Export Method (X509ContentType, String).

Non è presente un'opzione per passare i certificati sotto forma di stringhe Base64,I do not see an option for users to pass in certificates as base64 strings. disponibile nella maggior parte degli altri provider di risorse.Most other resource providers have this option.

Per emulare il passaggio di un certificato come stringa Base64, è possibile estrarre l'URL con versione più recente in un modello di Resource Manager.To emulate passing in a certificate as a base64 string, you can extract the latest versioned URL in a Resource Manager template. Includere la proprietà JSON seguente nel modello di Resource Manager:Include the following JSON property in your Resource Manager template:

"certificateUrl": "[reference(resourceId(parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults/secrets', parameters('vaultName'), parameters('secretName')), '2015-06-01').secretUriWithVersion]"

È necessario eseguire il wrapping dei certificati in oggetti JSON negli insiemi di credenziali delle chiavi?Do I have to wrap certificates in JSON objects in key vaults?

Nei set di scalabilità di macchine virtuali e nelle macchine virtuali è necessario eseguire il wrapping dei certificati in oggetti JSON.In virtual machine scale sets and VMs, certificates must be wrapped in JSON objects.

È anche supportato il tipo di contenuto application/x-pkcs12.We also support the content type application/x-pkcs12. Per istruzioni sull'uso di application/x-pkcs12, vedere PFX certificates in Azure Key Vault (Certificati PFX in Azure Key Vault).For instructions on using application/x-pkcs12, see PFX certificates in Azure Key Vault.

Non sono attualmente supportati i file con estensione cer.We currently do not support .cer files. Per usare i file con estensione cer, esportarli in contenitori PFX.To use .cer files, export them into .pfx containers.

Conformità e sicurezzaCompliance and Security

I set di scalabilità di macchine virtuali sono compatibili con PCI?Are virtual machine scale sets PCI-compliant?

I set di scalabilità di macchine virtuali sono un sottile livello API disponibile sopra il provider di risorse di calcolo.Virtual machine scale sets are a thin API layer on top of the CRP. Entrambi i componenti sono parte della piattaforma di calcolo nell'albero dei servizi di Azure.Both components are part of the compute platform in the Azure service tree.

Dal punto di vista della conformità, i set di scalabilità di macchine virtuali sono una parte essenziale della piattaforma di calcolo di Azure.From a compliance perspective, virtual machine scale sets are a fundamental part of the Azure compute platform. Condividono un team, strumenti, processi, metodologia di distribuzione, controlli di sicurezza, compilazione Just-In-Time (JIT), monitoraggio, avvisi e così via con il provider di risorse di calcolo.They share a team, tools, processes, deployment methodology, security controls, just-in-time (JIT) compilation, monitoring, alerting, and so on, with the CRP itself. I set di scalabilità di macchine virtuali sono compatibili con PCI (Payment Card Industry) perché il provider di risorse di calcolo è parte dell'attestazione PCI Data Security Standard (DSS) corrente.Virtual machine scale sets are Payment Card Industry (PCI)-compliant because the CRP is part of the current PCI Data Security Standard (DSS) attestation.

Per altre informazioni, vedere il Centro protezione Microsoft.For more information, see the Microsoft Trust Center.

L'identità del servizio gestito di Azure funziona con i set di scalabilità di macchine virtuali?Does Azure Managed Service Identity work with VM scale sets?

Sì.Yes. È possibile visualizzare alcuni modelli MSI di esempio nei modelli di avvio rapido di Azure.You can see some example MSI templates in Azure Quickstart templates. Linux: https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-msi-linux.Linux: https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-msi-linux. Windows: https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-msi-windows.Windows: https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-msi-windows.

EstensioniExtensions

Come si elimina un'estensione del set di scalabilità di macchine virtuali?How do I delete a virtual machine scale set extension?

Per eliminare un'estensione del set di scalabilità di macchine virtuali, usare l'esempio di PowerShell seguente:To delete a virtual machine scale set extension, use the following PowerShell example:

$vmss = Get-AzureRmVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName" 

$vmss=Remove-AzureRmVmssExtension -VirtualMachineScaleSet $vmss -Name "extensionName"

Update-AzureRmVmss -ResourceGroupName "resource_group_name" -VMScaleSetName "vmssName" -VirtualMacineScaleSet $vmss

È possibile trovare il valore extensionName in $vmss.You can find the extensionName value in $vmss.

È disponibile un esempio di modello di set di scalabilità di macchine virtuali che si integra con Operations Management Suite?Is there a virtual machine scale set template example that integrates with Operations Management Suite?

Per un esempio di modello di set di scalabilità di macchine virtuali che si integra con Operations Management Suite, vedere il secondo esempio in Deploy an Azure Service Fabric cluster and enable monitoring by using Log Analytics (Distribuire un cluster di Azure Service Fabric e abilitare il monitoraggio usando Log Analytics).For a virtual machine scale set template example that integrates with Operations Management Suite, see the second example in Deploy an Azure Service Fabric cluster and enable monitoring by using Log Analytics.

Le estensioni vengono eseguite apparentemente in parallelo nei set di scalabilità di macchine virtuali.Extensions seem to run in parallel on virtual machine scale sets. Ciò provoca un errore dell'estensione di script personalizzata.This causes my custom script extension to fail. Come si può risolvere questo problema?What can I do to fix this?

Per informazioni sulla sequenziazione di estensioni nei set di scalabilità di macchine virtuali, vedere Extension sequencing in Azure virtual machine scale sets (Sequenziazione delle estensioni nei set di scalabilità di macchine virtuali di Azure).To learn about extension sequencing in virtual machine scale sets, see Extension sequencing in Azure virtual machine scale sets.

Come si reimposta la password per le VM nel set di scalabilità di macchine virtuali?How do I reset the password for VMs in my virtual machine scale set?

Per reimpostare la password per le VM nel set di scalabilità di macchine virtuali, usare le estensioni di accesso delle macchine virtuali.To reset the password for VMs in your virtual machine scale set, use VM access extensions.

Usare l'esempio di PowerShell seguente:Use the following PowerShell example:

$vmssName = "myvmss"
$vmssResourceGroup = "myvmssrg"
$publicConfig = @{"UserName" = "newuser"}
$privateConfig = @{"Password" = "********"}

$extName = "VMAccessAgent"
$publisher = "Microsoft.Compute"
$vmss = Get-AzureRmVmss -ResourceGroupName $vmssResourceGroup -VMScaleSetName $vmssName
$vmss = Add-AzureRmVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $publisher -Setting $publicConfig -ProtectedSetting $privateConfig -Type $extName -TypeHandlerVersion "2.0" -AutoUpgradeMinorVersion $true
Update-AzureRmVmss -ResourceGroupName $vmssResourceGroup -Name $vmssName -VirtualMachineScaleSet $vmss

Come si aggiunge un'estensione a tutte le macchine virtuali del set di scalabilità di macchine virtuali?How do I add an extension to all VMs in my virtual machine scale set?

Se i criteri impostati prevedono l'aggiornamento automatico, ridistribuendo il modello con le nuove proprietà di estensione verranno aggiornate tutte le macchine virtuali.If update policy is set to automatic, redeploying the template with the new extension properties updates all VMs.

Se i criteri di aggiornamento sono impostati su manuale, aggiornare prima di tutto l'estensione e quindi aggiornare manualmente tutte le istanze nelle macchine virtuali.If update policy is set to manual, first update the extension, and then manually update all instances in your VMs.

Se le estensioni associate a un set di scalabilità di macchine virtuali esistente vengono aggiornate, l'operazione influisce sulle VM esistenti,If the extensions associated with an existing virtual machine scale set are updated, are existing VMs affected? ovvero, le VM non corrisponderanno al modello di set di scalabilità di macchine virtuali? O verranno ignorate?(That is, will the VMs not match the virtual machine scale set model?) Or are they ignored? Quando una macchina virtuale esistente viene sottoposta a ripristino del servizio o ricreazione dell'immagine, gli script attualmente configurati nel set di scalabilità di macchine virtuali vengono eseguiti o vengono usati gli script configurati durante la creazione iniziale della macchina virtuale?When an existing machine is service-healed or reimaged, are the scripts that are currently configured on the virtual machine scale set executed, or are the scripts that were configured when the VM was first created used?

Se la definizione dell'estensione nel modello di set di scalabilità di macchine virtuali viene aggiornata e la proprietà upgradePolicy è impostata su automatic, le macchine virtuali vengono aggiornate.If the extension definition in the virtual machine scale set model is updated and the upgradePolicy property is set to automatic, it updates the VMs. Se la proprietà upgradePolicy è impostata su manual, le estensioni vengono contrassegnate come non corrispondenti al modello.If the upgradePolicy property is set to manual, extensions are flagged as not matching the model.

Il ripristino del servizio di una VM esistente viene considerato un riavvio e le estensioni non vengono eseguite di nuovo.If an existing VM is service-healed, it appears as a reboot, and the extensions are not rerun. Se viene ricreata l'immagine, tale operazione è simile alla sostituzione dell'unità del sistema operativo con l'immagine di origine.If it is reimaged, it's like replacing the OS drive with the source image. Vengono eseguite eventuali specializzazioni dal modello più recente, ad esempio le estensioni.Any specialization from the latest model, such as extensions, are run.

Come si aggiunge un set di scalabilità di macchine virtuali a un dominio di Azure AD?How do I join a virtual machine scale set to an Azure AD domain?

Per aggiungere un set di scalabilità di macchine virtuali a un dominio di Azure Active Directory (Azure AD), è possibile definire un'estensione.To join a virtual machine scale set to an Azure Active Directory (Azure AD) domain, you can define an extension.

Per definire un'estensione, usare la proprietà JsonADDomainExtension:To define an extension, use the JsonADDomainExtension property:

"extensionProfile": {
    "extensions": [
        {
            "name": "joindomain",
            "properties": {
                "publisher": "Microsoft.Compute",
                "type": "JsonADDomainExtension",
                "typeHandlerVersion": "1.3",
                "settings": {
                    "Name": "[parameters('domainName')]",
                    "OUPath": "[variables('ouPath')]",
                    "User": "[variables('domainAndUsername')]",
                    "Restart": "true",
                    "Options": "[variables('domainJoinOptions')]"
                },
                "protectedsettings": {
                    "Password": "[parameters('domainJoinPassword')]"
                }
            }
        }
    ]
}

L'estensione del set di scalabilità di macchine virtuali sta provando a installare un programma che richiede un riavvio.My virtual machine scale set extension is trying to install something that requires a reboot. Ad esempio, "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools"For example, "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted Install-WindowsFeature –Name FS-Resource-Manager –IncludeManagementTools"

Se l'estensione del set di scalabilità di macchine virtuali prova a installare un programma che richiede un riavvio, è possibile usare l'estensione Automation DSC (Desired State Configuration) per Azure.If your virtual machine scale set extension is trying to install something that requires a reboot, you can use the Azure Automation Desired State Configuration (Automation DSC) extension. Se il sistema operativo è Windows Server 2012 R2, Azure esegue il pull del programma di installazione di Windows Management Framework (WMF) 5.0, esegue il riavvio e quindi prosegue con la configurazione.If the operating system is Windows Server 2012 R2, Azure pulls in the Windows Management Framework (WMF) 5.0 setup, reboots, and then continues with the configuration.

Come si attiva l'antimalware nel set di scalabilità di macchine virtuali?How do I turn on antimalware in my virtual machine scale set?

Per attivare l'antimalware nel set di scalabilità di macchine virtuali, usare l'esempio di PowerShell seguente:To turn on antimalware on your virtual machine scale set, use the following PowerShell example:

$rgname = 'autolap'
$vmssname = 'autolapbr'
$location = 'eastus'

# Retrieve the most recent version number of the extension.
$allVersions= (Get-AzureRmVMExtensionImage -Location $location -PublisherName "Microsoft.Azure.Security" -Type "IaaSAntimalware").Version
$versionString = $allVersions[($allVersions.count)-1].Split(".")[0] + "." + $allVersions[($allVersions.count)-1].Split(".")[1]

$VMSS = Get-AzureRmVmss -ResourceGroupName $rgname -VMScaleSetName $vmssname
echo $VMSS
Add-AzureRmVmssExtension -VirtualMachineScaleSet $VMSS -Name "IaaSAntimalware" -Publisher "Microsoft.Azure.Security" -Type "IaaSAntimalware" -TypeHandlerVersion $versionString
Update-AzureRmVmss -ResourceGroupName $rgname -Name $vmssname -VirtualMachineScaleSet $VMSS 

È necessario eseguire uno script personalizzato ospitato in un account di archiviazione privato.I need to execute a custom script that's hosted in a private storage account. Lo script viene eseguito correttamente quando la risorsa di archiviazione è pubblica, ma si verifica un errore quando si prova a usare una firma di accesso condiviso.The script runs successfully when the storage is public, but when I try to use a Shared Access Signature (SAS), it fails. Viene visualizzato questo messaggio: "Parametri obbligatori mancanti per la firma di accesso condiviso valida".This message is displayed: “Missing mandatory parameters for valid Shared Access Signature”. Il collegamento e la firma di accesso condiviso funzionano correttamente.Link+SAS works fine from my local browser.

Per eseguire uno script personalizzato ospitato in un account di archiviazione provato, configurare le impostazioni protette con la chiave e il nome dell'account di archiviazione.To execute a custom script that's hosted in a private storage account, set up protected settings with the storage account key and name. Per altre informazioni, vedere Estensione Script personalizzato per Windows.For more information, see Custom Script Extension for Windows.

ReteNetworking

È possibile assegnare un gruppo di sicurezza di rete (NSG) a un set di scalabilità, in modo che venga applicato a tutte le schede di interfaccia di rete della VM presenti in tale set?Is it possible to assign a Network Security Group (NSG) to a scale set, so that it will apply to all the VM NICs in the set?

Sì.Yes. È possibile applicare un gruppo di sicurezza di rete direttamente a un set di scalabilità facendovi riferimento nella sezione networkInterfaceConfigurations del profilo di rete.A Network Security Group can be applied directly to a scale set by referencing it in the networkInterfaceConfigurations section of the network profile. Esempio:Example:

"networkProfile": {
    "networkInterfaceConfigurations": [
        {
            "name": "nic1",
            "properties": {
                "primary": "true",
                "ipConfigurations": [
                    {
                        "name": "ip1",
                        "properties": {
                            "subnet": {
                                "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/virtualNetworks/', variables('vnetName'), '/subnets/subnet1')]"
                            }
                "loadBalancerInboundNatPools": [
                                {
                                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/inboundNatPools/natPool1')]"
                                }
                            ],
                            "loadBalancerBackendAddressPools": [
                                {
                                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/loadBalancers/', variables('lbName'), '/backendAddressPools/addressPool1')]"
                                 }
                            ]
                        }
                    }
                ],
                "networkSecurityGroup": {
                    "id": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/', resourceGroup().name, '/providers/Microsoft.Network/networkSecurityGroups/', variables('nsgName'))]"
                }
            }
        }
    ]
}

Come si esegue lo scambio di indirizzi VIP per i set di scalabilità di macchine virtuali che si trovano nella stessa sottoscrizione e nella stessa area?How do I do a VIP swap for virtual machine scale sets in the same subscription and same region?

Se si hanno due set di scalabilità di macchine virtuali con front-end di Azure Load Balancer, che sono nella stessa sottoscrizione e area, è possibile deallocare gli indirizzi IP pubblici da uno e assegnarli all'altro.If you have two virtual machine scale sets with Azure Load Balancer front-ends, and they are in the same subscription and region, you could deallocate the public IP addresses from each one, and assign to the other. Per un esempio, vedere VIP Swap: Blue-green deployment in Azure Resource Manager (Scambio di indirizzi VIP: distribuzione di tipo "blu-verde" in Azure Resource Manager).See VIP Swap: Blue-green deployment in Azure Resource Manager for example. Ciò implica un ritardo anche se le risorse vengono deallocate/allocate a livello di rete.This does imply a delay though as the resources are deallocated/allocated at the network level. Un'opzione più rapida consiste nell'usare il Gateway applicazione di Azure con due pool di back-end e una regola di routing.A faster option is to use Azure Application Gateway with two backend pools, and a routing rule. In alternativa, è possibile ospitare l'applicazione con Servizio app di Azure che offre il supporto per commutare rapidamente gli slot di gestione temporanea in slot di produzione.Alternatively, you could host your application with Azure App service which provides support for fast switching between staging and production slots.

Come è possibile specificare un intervallo di indirizzi IP privati per l'allocazione di indirizzi IP privati statici?How do I specify a range of private IP addresses to use for static private IP address allocation?

Gli indirizzi IP vengono selezionati da una subnet specificata.IP addresses are selected from a subnet that you specify.

Il metodo di allocazione degli indirizzi IP del set di scalabilità di macchine virtuali è sempre "dinamico", ma ciò non significa che è possibile modificare questi indirizzi IP.The allocation method of virtual machine scale set IP addresses is always “dynamic,” but that doesn't mean that these IP addresses can change. In questo caso, per "dinamico" si intende solo che non è necessario specificare l'indirizzo IP in una richiesta PUT.In this case, "dynamic" only means that you do not specify the IP address in a PUT request. Specificare il set statico usando la subnet.Specify the static set by using the subnet.

Come si distribuisce un set di scalabilità di macchine virtuali in una rete virtuale di Azure esistente?How do I deploy a virtual machine scale set to an existing Azure virtual network?

Per distribuire un set di scalabilità di macchine virtuali in una rete virtuale di Azure esistente, vedere Deploy a virtual machine scale set to an existing virtual network (Distribuire un set di scalabilità di macchine virtuali in una rete virtuale esistente).To deploy a virtual machine scale set to an existing Azure virtual network, see Deploy a virtual machine scale set to an existing virtual network.

Come si aggiunge l'indirizzo IP della prima VM di un set di scalabilità di macchine virtuali all'output di un modello?How do I add the IP address of the first VM in a virtual machine scale set to the output of a template?

Per aggiungere l'indirizzo IP della prima VM di un set di scalabilità di macchine virtuali all'output di un modello, vedere ARM: Get VMSS's private IPs (ARM: Ottenere gli indirizzi IP privati di VMSS).To add the IP address of the first VM in a virtual machine scale set to the output of a template, see ARM: Get VMSS's private IPs.

È possibile usare i set di scalabilità con la rete accelerata?Can I use scale sets with Accelerated Networking?

Sì.Yes. Per usare la rete accelerata, impostare enableAcceleratedNetworking su true nelle impostazioni networkInterfaceConfigurations del set di scalabilità.To use accelerated networking, set enableAcceleratedNetworking to true in your scale set's networkInterfaceConfigurations settings. Ad esempio,E.g.

"networkProfile": {
    "networkInterfaceConfigurations": [
    {
        "name": "niconfig1",
        "properties": {
        "primary": true,
        "enableAcceleratedNetworking" : true,
        "ipConfigurations": [
                ]
            }
            }
        ]
        }
    }
    ]
}

Come è possibile configurare i server DNS usati da un set di scalabilità?How can I configure the DNS servers used by a scale set?

Per creare un set di scalabilità di macchine virtuali con una configurazione DNS personalizzata, aggiungere un pacchetto JSON dnsSettings alla sezione networkInterfaceConfigurations del set di scalabilità.To create a VM scale set with a custom DNS configuration, add a dnsSettings JSON packet to the scale set networkInterfaceConfigurations section. Esempio:Example:

    "dnsSettings":{
        "dnsServers":["10.0.0.6", "10.0.0.5"]
    }

Come è possibile configurare un set di scalabilità per assegnare un indirizzo IP pubblico a ogni VM?How can I configure a scale set to assign a public IP address to each VM?

Per creare un set di scalabilità di macchine virtuali che assegni un indirizzo IP pubblico a ogni VM, verificare che la versione API della risorsa Microsoft.Compute/virtualMAchineScaleSets sia 2017-03-30 e aggiungere un pacchetto JSON publicipaddressconfiguration alla sezione ipConfigurations del set di scalabilità.To create a VM scale set that assigns a public IP address to each VM, make sure the API version of the Microsoft.Compute/virtualMAchineScaleSets resource is 2017-03-30, and add a publicipaddressconfiguration JSON packet to the scale set ipConfigurations section. Esempio:Example:

    "publicipaddressconfiguration": {
        "name": "pub1",
        "properties": {
        "idleTimeoutInMinutes": 15
        }
    }

È possibile configurare un set di scalabilità da usare con più gateway applicazione?Can I configure a scale set to work with multiple Application Gateways?

Sì.Yes. È possibile aggiungere ID risorsa per più pool di indirizzi di back-end del gateway applicazione all'elenco applicationGatewayBackendAddressPools nella sezione ipConfigurations del profilo della rete del set di scalabilità.You can add the resource id's for multiple Application Gateway backend address pools to the applicationGatewayBackendAddressPools list in the ipConfigurations section of your scale set network profile.

ScalabilitàScale

In quale caso è consigliabile creare un set di scalabilità di macchine virtuali con meno di due macchine virtuali?In what case would I create a virtual machine scale set with fewer than two VMs?

Un motivo per la creazione di un set di scalabilità di macchine virtuali con meno di due VM può essere relativo all'uso delle proprietà elastiche di un set di scalabilità di macchine virtuali.One reason to create a virtual machine scale set with fewer than two VMs would be to use the elastic properties of a virtual machine scale set. È ad esempio possibile distribuire un set di scalabilità di macchine virtuali con zero VM per definire l'infrastruttura senza sostenere i costi operativi delle macchine virtuali.For example, you could deploy a virtual machine scale set with zero VMs to define your infrastructure without paying VM running costs. Per distribuire le macchine virtuali, aumentare la "capacità" del set di scalabilità di macchine virtuali fino al numero di istanze di produzione.Then, when you are ready to deploy VMs, increase the “capacity” of the virtual machine scale set to the production instance count.

È possibile creare un set di scalabilità di macchine virtuali con meno di due VM anche se si è interessati principalmente all'uso di un set di disponibilità con VM discrete, invece che alla disponibilità.Another reason you might create a virtual machine scale set with fewer than two VMs is if you're concerned less with availability than in using an availability set with discrete VMs. I set di scalabilità di macchine virtuali consentono di usare unità di calcolo non differenziate e fungibili.Virtual machine scale sets give you a way to work with undifferentiated compute units that are fungible. Questa uniformità è un elemento di differenziazione chiave tra set di scalabilità di macchine virtuali e set di disponibilità.This uniformity is a key differentiator for virtual machine scale sets versus availability sets. Molti carichi di lavoro senza stato non tengono traccia delle singole unità.Many stateless workloads do not track individual units. In caso di riduzione del carico di lavoro, è possibile passare a una sola unità di calcolo e quindi aumentare il numero di unità con l'aumento del carico di lavoro.If the workload drops, you can scale down to one compute unit, and then scale up to many when the workload increases.

Come si cambia il numero di VM in un set di scalabilità di macchine virtuali?How do I change the number of VMs in a virtual machine scale set?

Per modificare il numero di macchine virtuali in un set di scalabilità di macchine virtuali nel portale di Azure, dalla sezione delle proprietà del set di scalabilità di macchine virtuali fare clic sul pannello "Ridimensionamento" e usare la barra di scorrimento.To change the number of VMs in a virtual machine scale set in the Azure portal, from the VM scale set properties section, click on the "Scaling" blade and use the slider bar. Per altre modalità di modifica del numero di istanze, vedere Change the instance count of a virtual machine scale set (Cambiare il numero di istanze di un set di scalabilità di macchine virtuali).For other ways to change the instance count, see Change the instance count of a virtual machine scale set.

Come è possibile definire avvisi personalizzati per il raggiungimento di determinate soglie?How do I define custom alerts for when certain thresholds are reached?

La gestione degli avvisi per le soglie specificate offre una certa flessibilità.You have some flexibility in how you handle alerts for specified thresholds. È ad esempio possibile definire webhook personalizzati.For example, you can define customized webhooks. L'esempio di webhook seguente è tratto da un modello di Resource Manager:The following webhook example is from a Resource Manager template:

{
    "type": "Microsoft.Insights/autoscaleSettings",
    "apiVersion": "[variables('insightsApi')]",
    "name": "autoscale",
    "location": "[parameters('resourceLocation')]",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]"
    ],
    "properties": {
        "name": "autoscale",
        "targetResourceUri": "[concat('/subscriptions/',subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.Compute/virtualMachineScaleSets/', parameters('vmSSName'))]",
        "enabled": true,
        "notifications": [
            {
                "operation": "Scale",
                "email": {
                    "sendToSubscriptionAdministrator": true,
                    "sendToSubscriptionCoAdministrators": true,
                    "customEmails": [
                        "youremail@address.com"
                    ]
                },
                "webhooks": [
                    {
                        "serviceUri": "https://events.pagerduty.com/integration/0b75b57246814149b4d87fa6e1273687/enqueue",
                        "properties": {
                            "key1": "custommetric",
                            "key2": "scalevmss"
                        }
                    }
                ]
            }
        ],

In questo esempio viene inviato un avviso a Pagerduty.com al raggiungimento di una soglia.In this example, an alert goes to Pagerduty.com when a threshold is reached.

Applicazione di patch e operazioniPatching and operations

Come si crea un set di scalabilità in un gruppo di risorse esistente?How do I create a scale set in an existing resource group?

La creazione di set di scalabilità in un gruppo di risorse esistente non è ancora possibile dal portale di Azure, ma è possibile specificare un gruppo di risorse esistente quando si distribuisce un set di scalabilità da un modello di Azure Resource Manager.Creating scale sets in an existing resource group is not yet possible from the Azure portal, but you can specify an existing resource group when deploying a scale set from an Azure Resource Manager template. È anche possibile specificare un gruppo di risorse esistente durante la creazione di un set di scalabilità usando Azure PowerShell o l'interfaccia della riga di comando.You can also specify an existing resource group when creating a scale set using Azure PowerShell or CLI.

È possibile spostare un set di scalabilità in un altro gruppo di risorse?Can we move a scale set to another resource group?

Sì, è possibile spostare le risorse di un set di scalabilità in una nuova sottoscrizione o in un nuovo gruppo di risorse.Yes, you can move scale set resources to a new subscription or resource group.

Come si aggiorna il set di scalabilità di macchine virtuali a una nuova immagine?How to I update my virtual machine scale set to a new image? Come si gestisce l'applicazione di patch?How do I manage patching?

Per aggiornare il set di scalabilità di macchine virtuali a una nuova immagine e gestire l'applicazione di patch, vedere Aggiornare un set di scalabilità di macchine virtuali.To update your virtual machine scale set to a new image, and to manage patching, see Upgrade a virtual machine scale set.

È possibile usare l'operazione di ricreazione dell'immagine per ripristinare una macchina virtuale senza modificare l'immagine,Can I use the reimage operation to reset a VM without changing the image? ovvero ripristinare le impostazioni predefinite di una VM invece di usare una nuova immagine?(That is, I want reset a VM to factory settings rather than to a new image.)

Sì, è possibile usare l'operazione di ricreazione dell'immagine per ripristinare una macchina virtuale senza modificare l'immagine.Yes, you can use the reimage operation to reset a VM without changing the image. Se tuttavia il set di scalabilità di macchine virtuali fa riferimento a un'immagine di piattaforma con version = latest, la macchina virtuale può essere aggiornata a un'immagine del sistema operativo successiva quando si chiama reimage.However, if your virtual machine scale set references a platform image with version = latest, your VM can update to a later OS image when you call reimage.

Per altre informazioni, vedere Manage all VMs in a virtual machine scale set (Gestire tutte le VM in un set di scalabilità di macchine virtuali).For more information, see Manage all VMs in a virtual machine scale set.

È possibile integrare i set di scalabilità con Azure OMS (Operations Management Suite)?Is it possible to integrate scale sets with Azure OMS (Operations Management Suite)?

Sì, è possibile installando l'estensione OMS nelle macchine virtuali dei set di scalabilità.Yes, you can by installing the OMS extension on the scale set VMs. Di seguito è riportato un esempio dell'interfaccia della riga di comando di Azure:Here is an Azure CLI example:

az vmss extension set --name MicrosoftMonitoringAgent --publisher Microsoft.EnterpriseCloud.Monitoring --resource-group Team-03 --vmss-name nt01 --settings "{'workspaceId': '<your workspace ID here>'}" --protected-settings "{'workspaceKey': '<your workspace key here'}"

È possibile trovare l'ID e la chiave dell'area di lavoro necessari nel portale OMS.You can find the required workspaceId and workspaceKey in the OMS portal. Nella pagina Panoramica fare clic sul riquadro Impostazioni.On the Overview page, click the Settings tile. Fare clic sula scheda Origini connesse nella parte superiore.Click the Connected Sources tab at the top.

Nota: se il set di scalabilità upgradePolicy è impostato su Manuale, è necessario applicare l'estensione a tutte le macchine virtuali del set tramite una chiamata di aggiornamento.Note: if your scale set upgradePolicy is set to Manual, you will need to apply the extension to the all VMs in the set by calling upgrade on them. Nell'interfaccia della riga di comando è necessario chiamare az vmss update-instances.In CLI this would be az vmss update-instances.

Risoluzione dei problemiTroubleshooting

Come si attiva la diagnostica di avvio?How do I turn on boot diagnostics?

Per attivare la diagnostica di avvio, creare prima di tutto un account di archiviazione.To turn on boot diagnostics, first, create a storage account. Inserire quindi il blocco JSON nella proprietà virtualMachineProfile set di scalabilità di macchine virtuali, quindi aggiornare il JSON:Then, put this JSON block in your virtual machine scale set virtualMachineProfile, and update the virtual machine scale set:

"diagnosticsProfile": {
    "bootDiagnostics": {
        "enabled": true,
        "storageUri": "http://yourstorageaccount.blob.core.windows.net"
    }
}

Quando viene creata una nuova VM, la proprietà InstanceView della VM mostra i dettagli per lo screenshot e così via.When a new VM is created, the InstanceView property of the VM shows the details for the screenshot, and so on. Ad esempio:Here's an example:

"bootDiagnostics": {
    "consoleScreenshotBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.screenshot.bmp",
    "serialConsoleLogBlobUri": "https://o0sz3nhtbmkg6geswarm5.blob.core.windows.net/bootdiagnostics-swarmagen-4157d838-8335-4f78-bf0e-b616a99bc8bd/swarm-agent-9574AE92vmss-0_2.4157d838-8335-4f78-bf0e-b616a99bc8bd.serialconsole.log"
  }

Proprietà della macchina virtualeVirtual machine properties

Come si possono ottenere informazioni sulle proprietà di ogni macchina virtuale senza dover eseguire più chiamate?How do I get property information for each VM without making multiple calls? Come si ottiene ad esempio il dominio di errore per ognuna delle 100 VM del set di scalabilità di macchine virtuali?For example, how would I get the fault domain for each of the 100 VMs in my virtual machine scale set?

Per ottenere informazioni sulle proprietà per ogni macchina virtuale senza eseguire più chiamate, è possibile chiamare ListVMInstanceViews tramite un'operazione GET dell'API REST nell'URI di risorsa seguente:To get property information for each VM without making multiple calls, you can call ListVMInstanceViews by doing a REST API GET on the following resource URI:

/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/virtualMachineScaleSets/<scaleset_name>/virtualMachines?$expand=instanceView&$select=instanceView/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/virtualMachineScaleSets/<scaleset_name>/virtualMachines?$expand=instanceView&$select=instanceView

È possibile passare argomenti di estensione diversi a diverse VM in un set di scalabilità di macchine virtuali?Can I pass different extension arguments to different VMs in a virtual machine scale set?

No, non è possibile passare argomenti di estensione diversi a diverse VM in un set di scalabilità di macchine virtuali.No, you cannot pass different extension arguments to different VMs in a virtual machine scale set. Le estensioni possono tuttavia funzionare in base alle proprietà univoche della macchina virtuale sulla quale sono in esecuzione, ad esempio il nome della macchina.However, extensions can act based on the unique properties of the VM they are running on, such as on the machine name. Le estensioni possono anche eseguire query sui metadati delle istanze in http://169.254.169.254 per ottenere altre informazioni sulla VM.Extensions also can query instance metadata on http://169.254.169.254 to get more information about the VM.

Perché sono presenti gap tra i nomi delle macchine virtuali del set di scalabilità di macchine virtuali e gli ID,Why are there gaps between my virtual machine scale set VM machine names and VM IDs? ad esempio 0, 1, 3?For example: 0, 1, 3...

Sono presenti gap tra i nomi delle macchine virtuali del set di scalabilità di macchine virtuali e gli ID delle VM perché la proprietà overprovision del set di scalabilità di macchine virtuali è impostata sul valore predefinito true.There are gaps between your virtual machine scale set VM machine names and VM IDs because your virtual machine scale set overprovision property is set to the default value of true. Se la proprietà overprovision è impostata su true, viene creato un numero di VM superiore al necessario.If overprovisioning is set to true, more VMs than requested are created. Le VM aggiuntive vengono quindi eliminate.Extra VMs are then deleted. In questo caso si ottiene una maggiore affidabilità per la distribuzione, a scapito tuttavia delle regole di contiguità di denominazione e di NAT (Network Address Translation).In this case, you gain increased deployment reliability, but at the expense of contiguous naming and contiguous Network Address Translation (NAT) rules.

È possibile impostare questa proprietà su false.You can set this property to false. Per i set di scalabilità di macchine virtuali di piccole dimensioni ciò non influisce significativamente sull'affidabilità della distribuzione.For small virtual machine scale sets, this doesn't significantly affect deployment reliability.

Qual è la differenza tra l'eliminazione di una VM in un set di scalabilità di macchine virtuali e la deallocazione della VM?What is the difference between deleting a VM in a virtual machine scale set and deallocating the VM? Quando scegliere l'una o l'altra?When should I choose one over the other?

La differenza principale tra l'eliminazione di una VM in un set di scalabilità di macchine virtuali e la deallocazione della VM consiste nel fatto che deallocate non elimina i dischi rigidi virtuali.The main difference between deleting a VM in a virtual machine scale set and deallocating the VM is that deallocate doesn’t delete the virtual hard disks (VHDs). L'esecuzione di stop deallocate comporta costi di archiviazione.There are storage costs associated with running stop deallocate. È possibile usare una delle due opzioni per i motivi seguenti:You might use one or the other for one of the following reasons:

  • Non si vogliono più sostenere i costi dei servizi di calcolo, mantenendo tuttavia lo stato dei dischi delle VM.You want to stop paying compute costs, but you want to keep the disk state of the VMs.
  • Si vuole avviare un set di VM con una velocità maggiore rispetto all'aumento del numero di istanze di un set di scalabilità di macchine virtuali.You want to start a set of VMs more quickly than you could scale out a virtual machine scale set.
    • In relazione a questo scenario è stato creato un motore di ridimensionamento automatico proprio e si vuole ottenere una scalabilità end-to-end più rapida.Related to this scenario, you might have created your own autoscale engine and want a faster end-to-end scale.
  • È presente un set di scalabilità di macchine virtuali distribuito in modo non uniforme nei domini di errore o nei domini di aggiornamento.You have a virtual machine scale set that is unevenly distributed across fault domains or update domains. Questo problema può essere stato causato dall'eliminazione selettiva di VM o dall'eliminazione di VM dopo l'overprovisioning.This might be because you selectively deleted VMs, or because VMs were deleted after overprovisioning. L'esecuzione di stop deallocate seguito da start nel set di scalabilità di macchine virtuali consente di distribuire uniformemente le VM nei domini di errore o nei domini di aggiornamento.Running stop deallocate followed by start on the virtual machine scale set evenly distributes the VMs across fault domains or update domains.