Perguntas frequentes sobre os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure

Obtenha respostas para as perguntas frequentes sobre os conjuntos de dimensionamento de máquinas virtuais no Azure.

Perguntas frequentes sobre os conjuntos de dimensionamento

Quantas VMs posso ter em um conjunto de dimensionamento?

Um conjunto de dimensionamento pode ter de 0 a 1.000 VMs (máquinas virtuais) baseadas em imagens de plataforma ou de 0 a 600 VMs baseadas em imagens personalizadas.

Há suporte para os discos de dados nos conjuntos de dimensionamento?

Sim. Um conjunto de dimensionamento pode definir a configuração de um disco de dados anexado que se aplica a todas as VMs do conjunto. Para saber mais, confira Conjuntos de dimensionamento do Azure e discos de dados anexados. Outras opções para armazenamento de dados incluem:

  • Azure Managed Disks (Premium v2, Premium, Standard, Ultra)
  • Arquivos do Azure (unidades compartilhada de SMB ou NFS)
  • – Azure NetApp Files
  • Discos compartilhados do Azure
  • unidade do sistema operacional
  • Unidade TEMP (local, não tem relação com o Armazenamento do Azure)
  • Serviço de dados do Azure (por exemplo, Armazenamento de Tabelas do Azure ou Armazenamento de Blobs do Azure)
  • Serviço de dados externos (por exemplo, um banco de dados remoto)

Quais são as regiões do Azure que dão suporte aos conjuntos de dimensionamento?

Todas as regiões dão suporte aos conjuntos de dimensionamento.

Para quais SKUs há suporte nos Conjuntos de Dimensionamento de Máquinas Virtuais?

Há suporte para todos os SKUs nos conjuntos de dimensionamento de máquinas virtuais.

Como posso criar um conjunto de dimensionamento usando uma imagem personalizada?

Crie e capture uma imagem de VM, depois use-a como a origem do conjunto de dimensionamento. Para ver um tutorial de como criar e usar uma imagem de VM personalizada, use a CLI do Azure ou o Azure PowerShell.

Qual é a diferença entre a atualização de imagem do sistema operacional e a ação de refazer imagem?

A atualização de imagem do sistema operacional é um processo gradual e sem interrupções que atualiza a imagem do sistema operacional para todo o conjunto de dimensionamento de máquinas virtuais ao longo do tempo, garantindo um impacto mínimo na execução de cargas de trabalho.

Refazer imagem é uma ação mais imediata e disruptiva que afeta apenas a instância de VM selecionada, interrompendo-a temporariamente e reinstalando o sistema operacional.

Saiba mais sobre a diferença entre a atualização de imagem do sistema operacional e a ação de refazer imagem.

Se eu reduzir a capacidade do meu conjunto de dimensionamento de 20 para 15, quais VMs serão removidas?

Por padrão, as máquinas virtuais são removidas do conjunto de dimensionamento uniformemente nas zonas de disponibilidade (se o conjunto de dimensionamento for implantado na configuração de zona) e nos domínios de falha para maximizar a disponibilidade. VMs com as IDs mais altas são removidas primeiro.

Você pode alterar a ordem de remoção da máquina virtual especificando uma política de redução horizontal para o conjunto de dimensionamento.

E se eu aumentar a capacidade de 15 para 18?

Se você aumentar a capacidade para 18, serão criadas três novas VMs. Em casa caso, a ID da instância VM será incrementada do valor mais alto anterior (por exemplo, 20, 21, 22). As VMs são balanceadas nos domínios de falha.

Ao usar várias extensões em um conjunto de dimensionamento, posso impor uma sequência de execução?

Sim, você pode usar o sequenciamento de extensão em conjuntos de dimensionamento.

Os conjuntos de dimensionamento funcionam com os conjuntos de disponibilidade do Azure?

Um conjunto de dimensionamento regional (não zonal) usa grupos de veiculações, que agem como um conjunto de disponibilidade implícito com cinco domínios de falha e cinco domínios de atualização. Conjuntos de dimensionamento de mais de 100 VMs abrangem vários grupos de posicionamento. Para saber mais sobre os grupos de posicionamento, confira Como trabalhar com os conjuntos de dimensionamento de máquinas virtuais grandes. Um conjunto de disponibilidade de máquinas virtuais pode existir na mesma rede virtual como um conjunto de escala de VMs. Uma configuração comum é colocar VMs do nó de controle (que geralmente exigem configuração exclusiva) em um conjunto de disponibilidade e colocar os nós de dados no conjunto de dimensionamento.

Os conjuntos de dimensionamento funcionam com as zonas de disponibilidade do Azure?

Sim. Para obter mais informações, confira a documentação de zona de conjunto de dimensionamento.

Autoscale

Quais são as práticas recomendadas para o dimensionamento automático do Azure?

Onde localizar os nomes de métrica para o dimensionamento automático usando as métricas baseadas em host?

Há exemplos de dimensionamento automático baseado em um tópico de Azure Service Bus e comprimento da fila?

Sim. Para ver estes exemplos, confira Métricas comuns de dimensionamento automático do Azure Monitor.

Para ver uma fila de Barramento de Serviço, use o seguinte JSON:

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

Para ver uma fila de armazenamento, use o seguinte JSON:

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

Substitua os valores de exemplo pelos URIs (Uniform Resource Identifier) do recurso.

Devo dimensionar automaticamente usando as métricas baseadas em host ou uma extensão de diagnóstico?

Você pode criar uma configuração de dimensionamento automático em uma VM para usar métricas no nível do host ou métricas baseadas em um sistema operacional convidado.

Para obter uma lista das métricas com suporte, consulte Métricas comuns de dimensionamento automático do Azure Monitor.

Para ver um exemplo completo dos conjuntos de dimensionamento de máquinas virtuais, confira Configuração avançada do dimensionamento automático usando modelos do Resource Manager para os conjuntos de dimensionamento de máquinas virtuais.

O exemplo usa a métrica da CPU no nível do host e uma métrica de contagem de mensagens.

Como fazer para definir as regras de alerta em um conjunto de dimensionamento de máquinas virtuais?

Você pode criar alertas em métricas para os conjuntos de dimensionamento de máquinas virtuais por meio do PowerShell ou da CLI do Azure. Para obter mais informações, consulte exemplos de início rápido do PowerShell do Azure Monitor e exemplos de início rápido da CLI de plataforma cruzada do Azure Monitor.

A TargetResourceId do conjunto de dimensionamento de máquinas virtuais se parece com isto:

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

Você pode escolher qualquer contador de desempenho da VM como a métrica para a qual definir um alerta. Para obter mais informações, confira Métricas do sistema operacional convidado para VMs Windows baseadas no Resource Manager e Métricas do sistema operacional convidado para VMs Linux no artigo Métricas comuns de dimensionamento automático do Azure Monitor.

Como fazer para configurar o dimensionamento automático em um conjunto de dimensionamento de máquinas virtuais usando o PowerShell?

Confira Escalar automaticamente um conjunto de dimensionamento de máquinas virtuais. Você também pode configurar o dimensionamento automático com a CLI do Azure e os modelos do Azure.

Se eu tiver interrompido (desalocado) uma VM, essa VM será iniciada como parte de uma operação de dimensionamento automático?

Não. Se as regras de dimensionamento automático exigirem mais instâncias de VM como parte de um conjunto de dimensionamento, uma nova instância de VM será criada. As instâncias de VM interrompidas (desalocadas) não são iniciadas como parte de um evento de dimensionamento automático. No entanto, essas VMs interrompidas (desalocadas) podem ser excluídas como parte de um evento de dimensionamento automático que reduz horizontalmente o número de instâncias, da mesma forma que qualquer instância de VM pode ser excluída com base na ordem das IDs de instância de VM.

Certificados

Como envio um certificado para a VM com segurança?

Para enviar com segurança um certificado para a VM, você pode instalar um certificado de cliente diretamente em um armazenamento de certificados do Windows a partir do cofre de chaves do cliente.

Use o JSON a seguir:

"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"
            }
        ]
    }
]

O código suporta o Windows e o Linux.

Para obter mais informações, confira Criar ou atualizar um conjunto de dimensionamento de máquinas virtuais.

Como fazer para usar certificados autoassinados provisionados para clusters do Azure Service Fabric?

Para o exemplo mais recente, em um shell do Azure, use a seguinte instrução da CLI do Azure, que será impressa no StdOut:

az sf cluster create -h

certificados auto-assinados não podem ser usados para confiança distribuída fornecida por uma autoridade de certificação e não devem ser usados para qualquer cluster do Service Fabric destinado a hospedar soluções de produção corporativas. Para obter mais diretrizes de segurança, examine as Melhores práticas de segurança do Azure Service Fabric e os Cenários de segurança de cluster do Azure Service Fabric.

Para a autenticação SSH com um conjunto de dimensionamento de máquinas virtuais do Linux por meio de um modelo do Resource Manager, posso especificar um par de chaves SSH a ser usado?

Sim. A API REST de osProfile é semelhante à API REST de VM padrão.

Inclua osProfile no seu modelo:

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

Este bloco JSON é usado neste modelo de início rápido do Azure.

Para obter mais informações, confira Criar ou atualizar um conjunto de dimensionamento de máquinas virtuais.

Como remover certificados preteridos?

Para remover os certificados preteridos, remova o antigo certificado da lista de certificados do cofre. Deixe todos os certificados que você deseja manter em seu computador na lista. Essa ação não remove o certificado de todas as VMs. Ele também não adiciona o certificado às VMs criadas no conjunto de dimensionamento de máquinas virtuais.

Para remover o certificado das VMs existentes, use uma extensão de script personalizado para remover manualmente o certificado do repositório de certificados.

Como fazer para injetar uma chave pública SSH existente na camada SSH do conjunto de dimensionamento de máquinas virtuais durante o provisionamento?

Se você estiver fornecendo as VMs apenas com uma chave SSH pública, não será necessário colocar as chaves públicas no Azure Key Vault. As chaves públicas não são secretas.

Você pode fornecer as chaves públicas SSH em texto sem formatação ao criar uma VM do Linux:

"linuxConfiguration": {
    "ssh": {
        "publicKeys": [
            {
                "path": "path",
                "keyData": "publickey"
            }
        ]
    }
}
nome do elemento linuxConfiguration Obrigatório Type Descrição
ssh Não Coleção Especifica a configuração da chave SSH para um sistema operacional Linux.
path Sim String Especifica o caminho de arquivo do Linux em que as chaves SSH ou o certificado devem estar localizados.
keyData Sim String Especifica uma chave pública SSH codificada em base64.

Para obter um exemplo, consulte o modelo de início rápido do GitHub vm-sshkey.

Quando executo "Update-AzVmss" após adicionar mais de um certificado do mesmo cofre de chaves, por que recebo uma mensagem de erro?

Esse erro poderá ocorrer se você tentar adicionar novamente o mesmo cofre, em vez de usar um novo certificado de cofre para o cofre de origem existente. O comando Add-AzVmssSecret não funcionará corretamente se você estiver adicionando segredos.

Para adicionar mais segredos do mesmo cofre de chaves, atualize a seguinte lista: $vmss.properties.osProfile.secrets[0].vaultCertificates.

Para ver a estrutura de entrada esperada, consulte Criar ou atualizar um conjunto de máquinas virtuais.

Localize o segredo no objeto do conjunto de dimensionamento de máquinas virtuais que está no cofre de chaves. Em seguida, adicione a referência do certificado (a URL e o nome do armazenamento de segredos) à lista associada ao cofre.

Observação

Atualmente, não é possível remover certificados de VMs usando a API do conjunto de dimensionamento de máquinas virtuais.

As novas VMs não terão o certificado antigo. No entanto, as VMs que têm o certificado e que já estão implantadas têm o certificado antigo.

Posso enviar certificados por push para o conjunto de dimensionamento de máquinas virtuais sem fornecer a senha quando o certificado está no armazenamento de segredos?

Não é necessário embutir as senhas em código de scripts. Você pode recuperar dinamicamente as senhas com as permissões usadas para executar o script de implantação. Se você tiver um script que move um certificado a partir do cofre de chaves do armazenamento de segredos, o comando get certificate do armazenamento de segredos também gerará a senha do arquivo .pfx.

Como funciona a propriedade `Secrets` de `virtualMachineProfile.osProfile` de um conjunto de dimensionamento de máquinas virtuais? Por que preciso do valor de "sourceVault" quando tenho que especificar o URI absoluto de um certificado usando a propriedade "certificateUrl"?

Uma referência ao certificado do WinRM (Gerenciamento Remoto do Windows) deve estar presente na propriedade Secrets do perfil do sistema operacional.

O objetivo de indicar o cofre de origem é impor as políticas da ACL (lista de controle de acesso) existentes no modelo dos Serviços de Nuvem do Azure do usuário. Se o cofre de origem não é especificado, os usuários que não têm permissões para implantar ou acessar segredos em um cofre de chaves, passam a ter por meio de um CRP (provedor de recursos de computação). As ACLs existem mesmo para recursos que não existem.

Se você fornecer uma ID do cofre de origem incorreta, mas uma URL de cofre de chaves válida, um erro será relatado quando você registrar a operação.

Se eu adicionar segredos a um conjunto de dimensionamento de máquinas virtuais existente, os segredos serão injetados nas VMs existentes ou apenas nas novas?

Os certificados são adicionados a todas as suas VMs, mesmo as preexistentes. Se a propriedade upgradePolicy do conjunto de dimensionamento de máquinas virtuais estiver definida como manual, o certificado será adicionado à VM quando você executar uma atualização manual na VM.

Onde coloco os certificados para as VMs do Linux?

Para saber como implantar os certificados para VMs do Linux, consulte Implantar os certificados para as VMs a partir de um cofre de chaves gerenciado pelo cliente.

Como adiciono um novo certificado do cofre a um novo objeto de certificado?

Para adicionar um certificado do cofre a um segredo existente, consulte o exemplo do PowerShell a seguir. Use apenas um objeto de segredo.

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

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

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

O que acontece com certificados se eu refaço a imagem de uma VM?

Se você recriar a imagem de uma VM, os certificados serão excluídos. Refazer a Imagem exclui todo o disco do sistema operacional.

O que acontece se eu excluir um certificado do cofre de chaves?

Se o segredo for excluído do cofre de chaves e você executar stop deallocate para todas as VMs e iniciá-las novamente, encontrará uma falha. A falha ocorre porque o CRP precisa recuperar os segredos do cofre de chaves, mas não pode. Neste cenário, você pode excluir os certificados do modelo do conjunto de dimensionamento de máquinas virtuais.

O componente CRP não torna os segredos do cliente persistentes. Se você executar stop deallocate para todas as VMs do conjunto de dimensionamento de máquinas virtuais, o cache será excluído. Neste cenário, os segredos são recuperados no cofre de chaves.

Você não encontra esse problema ao escalar horizontalmente, porque há uma cópia armazenada em cache do segredo no Azure Service Fabric (no modelo de locatário de malha única).

Por que é necessário especificar a versão do certificado quando uso o Cofre de Chaves?

O objetivo é deixar claro para o usuário qual certificado é implantado nas VMs dele.

Se você criar uma VM e atualizar o segredo no cofre de chaves, o novo certificado não será baixado nas VMs. Mas, suas VMs parecem fazer referência a ele e as novas VMs obtêm o novo segredo. Para evitar esse problema, é necessário fazer referência a uma versão do segredo.

Minha equipe trabalha com vários certificados que são distribuídos para nós como chaves públicas .cer. Qual é a abordagem recomendada para implantar esses certificados em um conjunto de dimensionamento de máquinas virtuais?

Para implantar as chaves públicas .cer em um conjunto de dimensionamento de máquinas virtuais, gere um arquivo .pfx que contém somente arquivos .cer. Para fazer isso, use X509ContentType = Pfx. Por exemplo, carregue o arquivo .cer como um objeto x509Certificate2 em C# ou no PowerShell e depois chame o método.

Para obter mais informações, confira Método X509Certificate.Export (X509ContentType; String).

Como transmitir certificados como cadeias de caracteres base64?

Para emular a passagem de um certificado como uma cadeia de caracteres base64, é possível extrair a URL com a versão mais recente em um modelo do Resource Manager. Inclua a seguinte propriedade JSON em seu modelo do Resource Manager:

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

É necessário encapsular os certificados nos objetos JSON no cofre de chaves?

Nos conjuntos de dimensionamento de máquinas virtuais e nas VMs, os certificados precisam ser encapsulados em objetos JSON.

Também oferecemos suporte ao tipo de conteúdo application/x-pkcs12.

Atualmente, não oferecemos suporte para arquivos .cer. Para usar os arquivos .cer, exporte-os para os contêineres .pfx.

Conformidade e segurança

Os conjuntos de dimensionamento de máquinas virtuais são compatíveis com o PCI?

Os conjuntos de dimensionamento de máquinas virtuais são uma camada de API fina no CRP. Ambos os componentes fazem parte da plataforma de computação na árvore de serviços do Azure.

Da perspectiva de conformidade, os conjuntos de dimensionamento de máquinas virtuais são uma parte fundamental da plataforma de computação Azure. Eles compartilham o seguinte com o próprio CRP: uma equipe, ferramentas, processos, metodologia de implantação, controles de segurança, compilação JIT (just-in-time), monitoramento e alertas. Os conjuntos de dimensionamento de máquinas virtuais são compatíveis com o PCI (Payment Card Industry), porque o CRP faz parte do atestado DSS (Data Security Standard) do PCI atual.

Para saber mais, confira o Centro de Confiabilidade da Microsoft.

As identidades gerenciadas para recursos do Azure funcionam com os conjuntos de dimensionamento de máquinas virtuais?

Sim. Para obter mais informações, confira a visão geral de identidades gerenciadas. Você pode conferir alguns modelos de MSI de exemplo nos modelos de Guia de Início Rápido do Azure para Linux e Windows.

Excluir

Os bloqueios definidos nas instâncias do conjunto de dimensionamento de máquinas virtuais serão respeitados quando eu excluir as instâncias?

No portal do Azure, você tem a capacidade de excluir apenas uma instância ou de excluir em massa, selecionando várias instâncias. Se você tenta excluir apenas uma instância que tem um bloqueio aplicado, esse bloqueio é respeitado e você não consegue excluir a instância. No entanto, se você seleciona em massa várias instâncias e qualquer uma delas tem bloqueio aplicado, tais bloqueios não são respeitados. Todas as instâncias selecionadas serão excluídas.

Na CLI do Azure, você só tem a capacidade de excluir uma instância de cada vez. Se você tenta excluir uma instância que tem um bloqueio aplicado, esse bloqueio é respeitado e a instância não pode ser excluída.

Extensões

Como fazer para excluir uma extensão do conjunto de dimensionamento de máquinas virtuais?

Para excluir uma extensão do conjunto de dimensionamento de máquinas virtuais, use o seguinte exemplo do PowerShell:

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

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

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

Você pode encontrar o valor extensionName em $vmss.

Há um exemplo de modelo do conjunto de dimensionamento de máquinas virtuais que é integrado aos logs do Azure Monitor?

Para ver um exemplo de modelo do conjunto de dimensionamento de máquinas virtuais que é integrado aos logs do Azure Monitor, confira o segundo exemplo em Implantar um cluster do Azure Service Fabric e habilitar o monitoramento usando os logs do Azure Monitor.

Como fazer para adicionar uma extensão a todas as VMs no conjunto de dimensionamento de máquinas virtuais?

Se a política de atualização estiver definida como automática, a reimplantação do modelo com as novas propriedades de extensão atualiza todas as VMs.

Se a política de atualização estiver definida como manual, primeiro atualize a extensão e depois atualize manualmente todas as instâncias em suas VMs.

Se as extensões associadas a um conjunto de dimensionamento de máquinas virtuais existente forem atualizadas, isso afetará as VMs existentes?

Se a definição de extensão no modelo do conjunto de dimensionamento de máquinas virtuais for atualizada e a propriedade upgradePolicy estiver definida como automatic, ela atualizará as VMs. Se a propriedade upgradePolicy for definida como manual, as extensões serão sinalizadas como não correspondentes ao modelo.

As extensões serão executadas novamente quando um computador existente for reparado pelo serviço ou a imagem for refeita?

Se uma VM existente for recuperada por serviço, ela aparecerá como uma reinicialização e as extensões não serão executadas novamente. Se a imagem de uma VM for refeita, o processo será semelhante à substituição da unidade do sistema operacional pela imagem de origem. Todas as especializações do modelo mais recente, como as extensões, serão executadas novamente.

Como fazer para ingressar um conjunto de dimensionamento de máquinas virtuais em um domínio do Active Directory?

Para ingressar um conjunto de dimensionamento de máquinas virtuais em um domínio do Active Directory, você pode definir uma extensão.

Para definir uma extensão, use a propriedade JsonADDomainExtension:

"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')]"
                }
            }
        }
    ]
}

Minha extensão do conjunto de dimensionamento de máquinas virtuais está tentando instalar algo que exige uma reinicialização. O que devo fazer?

Você pode usar a extensão Desired State Configuration da Automação do Azure. Se o sistema operacional for o Windows Server 2012 R2, o Azure fará a instalação do Windows Management Framework (WMF) 5.0, irá reinicializar e continuar com a configuração.

Como fazer para executar um script personalizado hospedado em uma conta de armazenamento privada?

Configure as definições protegidas com a chave e o nome da conta de armazenamento. Para obter mais informações, confira Extensão de script personalizado.

Senhas

Como fazer para redefinir a senha para as VMs no conjunto de dimensionamento de máquinas virtuais?

Você poderá:

  • Altere o modelo de conjunto de escala de máquina virtual diretamente. Essa opção só está disponível com a API 2017-12-01 e versões posteriores.

    Atualize as credenciais de administrador diretamente no modelo do conjunto de dimensionamento (por exemplo, usando o Azure Resource Explorer, o PowerShell ou a CLI do Azure). Depois que o conjunto de dimensionamento é atualizado, todas as novas VMs têm novas credenciais. Máquinas virtuais existentes têm somente as novas credenciais caso tenham as imagens refeitas.

  • Redefina a senha usando as extensões de acesso à VM. Siga os requisitos de senha, conforme descrito nas Perguntas Frequentes.

    O uso de uma extensão de acesso à VM não exige refazer a imagem, porque a extensão não atualiza a senha no modelo. A extensão executa um script para acrescentar a senha à senha ou ao arquivo de chave SSH. A extensão não remove a chave SSH original. Depois que a extensão for atualizada, atualize as instâncias para aplicar as atualizações ao nome de usuário e senha em todas as instâncias da VM.

    Observação

    Se a política de atualização automática estiver definida para manual, selecione manualmente a instância para executar uma operação de atualização nas instâncias de VM individuais. Se a atualização automática for definida para Auto, a extensão será atualizada automaticamente. Para obter mais informações, veja Atualizações automáticas da extensão

    Use o seguinte exemplo do PowerShell em um conjunto de dimensionamento de máquinas virtuais do Windows:

    $vmssName = "myvmss"
    $vmssResourceGroup = "myvmssrg"
    $publicConfig = @{"UserName" = "newuser"}
    $privateConfig = @{"Password" = "********"}
    
    $extName = "VMAccessAgent"
    $publisher = "Microsoft.Compute"
    $vmss = Get-AzVmss -ResourceGroupName $vmssResourceGroup -VMScaleSetName $vmssName
    $vmss = Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name $extName -Publisher $publisher -Setting $publicConfig -ProtectedSetting $privateConfig -Type $extName -TypeHandlerVersion "2.0" -AutoUpgradeMinorVersion $true
    Update-AzVmss -ResourceGroupName $vmssResourceGroup -Name $vmssName -VirtualMachineScaleSet $vmss
    

    Use o seguinte exemplo da CLI do Azure em um conjunto de dimensionamento de máquinas virtuais do Linux:

    az vmss extension set \
      --resource-group myResouceGroup \ 
      --vmss-name myScaleSet \
      --publisher Microsoft.OSTCExtensions \
      --name VMAccessForLinux \
      --version 1.5 \
      --protected-settings "{'username': 'newUser', 'password': 'newPassword'}"
    

Rede

É possível atribuir um NSG (grupo de segurança de rede) a um conjunto de dimensionamento, de modo que ele seja aplicado a todas as NICs de VM do conjunto?

Sim. Você pode aplicar um NSG diretamente a um conjunto de dimensionamento fazendo referência a ele na seção networkInterfaceConfigurations do perfil de rede. Veja um exemplo:

"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'))]"
                }
            }
        }
    ]
}

Como fazer uma troca de VIP (IP virtual) para os conjuntos de dimensionamento de máquinas virtuais na mesma assinatura e na mesma região?

Se você tiver dois conjuntos de dimensionamento de máquinas virtuais com o Azure Load Balancer e eles estiverem na mesma assinatura e na mesma região, você poderá desalocar os endereços IP públicos de cada um e atribui-los à outra. Para obter mais informações, confira Troca de VIP: implantação gradual no Azure Resource Manager. No entanto, você pode enfrentar um atraso, porque os recursos são desalocados ou alocados no nível da rede. Uma opção mais rápida é usar o Gateway de Aplicativo do Azure com dois pools de back-end e uma regra de roteamento. Como alternativa, você pode hospedar seu aplicativo com o Serviço de Aplicativo do Azure, que oferece suporte à comutação rápida entre os slots de preparação e de produção.

Como especifico um intervalo de endereços IP privados para usar na alocação estática do endereço IP privado?

Os endereços IPs são selecionados em uma sub-rede que você especifica.

O método de alocação dos endereços IP do conjunto de dimensionamento de máquinas virtuais é sempre dinâmico, mas isso não significa que esses endereços IP podem mudar. Nesse caso, dinâmico significa apenas que você não especifica o endereço IP em uma solicitação PUT. Especifique conjunto estático usando a sub-rede.

Como fazer para implantar um conjunto de dimensionamento de máquinas virtuais em uma rede virtual do Azure existente?

Eu posso usar conjuntos de dimensionamento com a rede acelerada?

Sim. Para usar a rede acelerada, defina enableAcceleratedNetworking como true nas configurações networkInterfaceConfigurations do seu conjunto de dimensionamento. Por exemplo:

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

Como posso configurar os servidores DNS usados por um conjunto de dimensionamento?

Para criar um conjunto de dimensionamento de máquinas virtuais com uma configuração DNS personalizada, adicione um pacote JSON dnsSettings à seção networkInterfaceConfigurations do conjunto de dimensionamento. Veja um exemplo:

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

Como posso configurar um conjunto de dimensionamento a fim de atribuir um endereço IP público para cada VM?

Para criar um conjunto de dimensionamento de máquinas virtuais que atribui um endereço IP público a cada VM, verifique se a versão da API do recurso Microsoft.Compute/virtualMachineScaleSets é 2017-03-30 e adicione um pacote JSON publicipaddressconfiguration à seção ipConfigurations do conjunto de dimensionamento. Veja um exemplo:

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

Eu posso configurar um conjunto de dimensionamento para trabalhar com vários gateways de aplicativo?

Sim. Você pode adicionar as IDs de recurso para vários pools de endereços de back-end do gateway de aplicativo à lista applicationGatewayBackendAddressPools na seção ipConfigurations do perfil de rede do seu conjunto de dimensionamento.

Escala

Em qual situação um conjunto de dimensionamento de máquinas virtuais com menos de duas VMs deverá ser criado?

Um dos motivos para criar um conjunto de dimensionamento de máquinas virtuais com menos de duas VMs é o uso das propriedades elásticas do conjunto de dimensionamento de máquinas virtuais. Por exemplo, você pode implantar um conjunto de dimensionamento de máquinas virtuais sem nenhuma VM para definir sua infraestrutura sem gerar custos de execução da VM. Então, quando estiver pronto para implantar as VMs, você poderá aumentar a capacidade do conjunto de dimensionamento de máquinas virtuais para a contagem de instâncias de produção.

Outro motivo pelo qual você poderá criar um conjunto de dimensionamento de máquinas virtuais com menos de duas VMs é se estiver menos preocupado com a disponibilidade do que com o uso de um conjunto de disponibilidade com VMs discretas. Os conjuntos de dimensionamento de máquinas virtuais fornecem uma forma de trabalhar com unidades de computação não diferenciadas que são intercambiáveis. Essa uniformidade é um diferencial importante para os conjuntos de dimensionamento de máquinas virtuais em relação aos conjuntos de disponibilidade. Muitas cargas de trabalho sem estado não rastreiam unidades individuais. Se a carga de trabalho cair, você poderá reduzir verticalmente para uma unidade de computação e escalar verticalmente para muitas quando a carga de trabalho aumentar.

Como fazer para alterar o número de VMs em um conjunto de dimensionamento de máquinas virtuais?

Para alterar o número de VMs em um conjunto de dimensionamento de máquinas virtuais no portal do Azure, na seção Propriedades do conjunto de dimensionamento de máquinas virtuais, selecione o painel Escala e use a barra de controle deslizante.

Como defino alertas personalizados para quando determinados limites são atingidos?

Há alguma flexibilidade em como lidar com os alertas para os limites especificados. Por exemplo, você pode definir webhooks personalizados. O exemplo de webhook a seguir é de um modelo do Resource Manager:

{
    "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": "<service uri>",
                        "properties": {
                            "key1": "custommetric",
                            "key2": "scalevmss"
                        }
                    }
                ]
            }
        ]
    }
}

Aplicação de patch e operações

Posso criar um conjunto de dimensionamento em um grupo de recursos existente?

Sim, você pode.

Posso mover um conjunto de dimensionamento para outro grupo de recursos?

Sim, é possível mover recursos do conjunto de dimensionamento para uma nova assinatura ou um novo grupo de recursos.

Como fazer para atualizar o conjunto de dimensionamento de máquinas virtuais para uma nova imagem? Como gerencio os patches?

Para atualizar o conjunto de dimensionamento de máquinas virtuais para uma nova imagem e gerenciar a aplicação de patch, confira Atualizar um conjunto de dimensionamento de máquinas virtuais.

Posso usar a operação de recriação de imagem para redefinir uma VM sem alterar a imagem? (Ou seja, quero redefinir uma VM para as configurações de fábrica, em vez de uma nova imagem.)

Sim, você pode usar a operação de recriação de imagem para redefinir uma VM sem alterar a imagem. No entanto, se o conjunto de dimensionamento de máquinas virtuais referenciar uma imagem de plataforma com version = latest, a VM poderá ser atualizada para uma imagem posterior do sistema operacional quando você chamar reimage.

É possível integrar os conjuntos de dimensionamento aos Logs do Azure Monitor?

Sim, isso é possível instalando a extensão do Azure Monitor nas VMs do conjunto de dimensionamento. Aqui está um exemplo que usa a CLI do Azure:

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'}"

Você pode encontrar o workspaceId e o workspaceKey exigidos no workspace do Log Analytics do portal do Azure. Na página Visão geral, selecione o bloco Configurações. Selecione a guia Fontes Conectadas na parte superior.

Observação

Se o conjunto de dimensionamento upgradePolicy estiver definido como manual, você precisará aplicar a extensão a todas as VMs do conjunto chamando a atualização neles. Na CLI do Azure, isso é az vmss update-instances.

Observação

Este artigo foi atualizado recentemente para usar o termo logs do Azure Monitor em vez de Log Analytics. Os dados de log ainda são armazenados em um espaço de trabalho do Log Analytics e ainda são coletados e analisados pelo mesmo serviço do Log Analytics. Estamos atualizando a terminologia para refletir melhor a função dos logs no Azure Monitor. Confira as alterações de terminologia do Azure Monitor para obter detalhes.

Solução de problemas

Como ativo o diagnóstico de inicialização?

Para ativar o diagnóstico de inicialização, primeiro, crie uma conta de armazenamento. Em seguida, coloque este bloco JSON no virtualMachineProfile do conjunto de dimensionamento de máquinas virtuais e atualize o conjunto:

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

Quando uma nova VM é criada, a propriedade InstanceView da VM mostra os detalhes da captura de tela. Veja um exemplo:

"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"
}

Como fazer para solucionar outros problemas?

Propriedades de máquina virtual

Como obtenho informações de propriedade para cada VM sem fazer várias chamadas? Por exemplo, como obter o domínio de falha para cada uma das 100 VMs do conjunto de dimensionamento de máquinas virtuais?

Você pode chamar ListVMInstanceViews fazendo uma API REST GET no seguinte URI de recurso:

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

Observe que o domínio de falha não é retornado quando o conjunto de dimensionamento usa a propagação máxima (platformFaultDomainCount = 1), pois não há garantia de quantos domínios de falha seriam usados com essa configuração.

Posso transmitir argumentos de extensão diferentes para diferentes VMs em um conjunto de dimensionamento de máquinas virtuais?

Não, você não pode. No entanto, as extensões podem agir com base nas propriedades exclusivas da VM na qual estão em execução, como no nome da máquina. As extensões também podem consultar os metadados de instância em http://169.254.169.254 para obter mais informações sobre a VM.

Por que há lacunas (por exemplo, 0, 1, 3) entre os nomes de computadores e as IDs das VMs do conjunto de dimensionamento de máquinas virtuais?

As lacunas existem porque a propriedade overprovision do conjunto de dimensionamento de máquinas virtuais está definida como o valor padrão true. Se o superprovisionamento estiver definido como true, serão criadas mais VMs do que o solicitado. Então, as VMs extras são excluídas. Neste caso, você ganha maior confiabilidade na implantação, mas às custas das regras de nomenclatura e de NAT (conversão de endereços de rede) contínuos.

Você pode definir essa propriedade para false. Para os Conjuntos de Dimensionamento de Máquinas Virtuais pequenos, a confiabilidade da implantação não será muito afetada.

Qual é a diferença entre a exclusão e a desalocação de uma VM em um conjunto de dimensionamento de máquinas virtuais? Quando devo escolher um ou o outro?

A principal diferença é que deallocate não exclui os VHDs (discos rígidos virtuais). Existem custos de armazenamento associados à execução de stop deallocate. Você pode usar um ou outro por um dos seguintes motivos:

  • Você deseja parar de pagar pela computação, mas quer manter o estado do disco das VMs.
  • Você deseja iniciar um conjunto de VMs mais rapidamente do que pode escalar horizontalmente um conjunto de dimensionamento de máquinas virtuais.
    • Em relação a este cenário, você pode ter criado seu próprio mecanismo de dimensionamento automático e deseja um dimensionamento de ponta a ponta mais rápido.
  • Você tem um conjunto de dimensionamento de máquinas virtuais distribuído sem uniformidade entre os domínios de falha ou os domínios de atualização. Essa distribuição desigual pode ocorrer porque você excluiu seletivamente as VMs ou porque as VMs foram excluídas depois do excesso de provisionamento. A execução de stop deallocate seguido de start no conjunto de dimensionamento de máquinas virtuais distribui as VMs de modo uniforme em domínios de falha ou em domínios de atualização.

Como fazer para criar um instantâneo de uma instância do conjunto de dimensionamento de máquinas virtuais?

Crie um instantâneo com base em uma instância de um conjunto de dimensionamento de máquinas virtuais. Veja um exemplo:

$rgname = "myResourceGroup"
$vmssname = "myVMScaleSet"
$Id = 0
$location = "East US"

$vmss1 = Get-AzVmssVM -ResourceGroupName $rgname -VMScaleSetName $vmssname -InstanceId $Id
$snapshotconfig = New-AzSnapshotConfig -Location $location -AccountType Standard_LRS -OsType Windows -CreateOption Copy -SourceUri $vmss1.StorageProfile.OsDisk.ManagedDisk.id
New-AzSnapshot -ResourceGroupName $rgname -SnapshotName 'mySnapshot' -Snapshot $snapshotconfig

Crie um novo disco gerenciado com base no instantâneo. Veja um exemplo:

$snapshotName = "mySnapshot"
$snapshot = Get-AzSnapshot -ResourceGroupName $rgname -SnapshotName $snapshotName
$diskConfig = New-AzDiskConfig -AccountType Premium_LRS -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id
$osDisk = New-AzDisk -Disk $diskConfig -ResourceGroupName $rgname -DiskName ($snapshotName + '_Disk')