Editar

Perguntas frequentes sobre conjuntos de escala de máquina virtual do Azure

Obtenha respostas para perguntas frequentes sobre Conjuntos de Dimensionamento de Máquina Virtual no Azure.

Principais perguntas frequentes sobre conjuntos de escalas

Quantas VMs posso ter num conjunto de dimensionamento?

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

Os conjuntos de dimensionamento suportam discos de dados?

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 obter mais informações, veja Conjuntos de dimensionamento de VMs do Azure e discos de dados anexados. As outras opções para armazenar dados são:

  • Azure Managed Disks (Premium v2, Premium, Standard, Ultra)
  • Arquivos do Azure (unidades compartilhadas SMB ou NFS)
  • Arquivos do Azure Netapp
  • Discos partilhados do Azure
  • Unidade do sistema operacional
  • Unidade temporária (local, sem o suporte do Armazenamento do Azure)
  • Serviço de dados do Azure (por exemplo, Armazenamento de Tabela do Azure ou Armazenamento de Blob do Azure)
  • Serviço de dados externo (por exemplo, um banco de dados remoto)

Que regiões do Azure suportam os conjuntos de dimensionamento?

Todas as regiões suportam conjuntos de dimensionamento.

Quais SKUs são suportados para Conjuntos de Dimensionamento de Máquina Virtual?

Todos os SKUs são suportados para Conjuntos de Escala de Máquina Virtual.

Como posso utilizar uma imagem personalizada para criar um conjunto de dimensionamento?

Crie e capture uma imagem de VM e, em seguida, use-a como a origem para seu conjunto de escala. Para obter um tutorial sobre como criar e usar uma imagem de VM personalizada, você pode usar a CLI do Azure ou o Azure PowerShell.

Qual é a diferença entre o OS Image Upgrade e o Reimage?

A Atualização de Imagem do SO é um processo gradual e sem interrupções que atualiza a imagem do SO para todo o Conjunto de Dimensionamento de Máquinas Virtuais ao longo do tempo, garantindo um impacto mínimo nas cargas de trabalho em execução.

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

Saiba mais sobre a diferença entre Atualização de Imagem do SO e Reimagem.

Se reduzir a capacidade do conjunto de dimensionamento de 20 para 15, que VMs são removidas?

Por padrão, as máquinas virtuais são removidas do conjunto de escala uniformemente em zonas de disponibilidade (se o conjunto de escala for implantado na configuração zonal) e domínios de falha, para maximizar a disponibilidade. São removidas primeiro as VMs com os IDs mais altos.

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

E se, depois, aumentar a capacidade de 15 para 18?

Se aumentar a capacidade para 18, então, são criadas três VMs novas. Sempre que isso acontecer, o ID da instância da VM é aumentado a partir do valor mais alto anterior (por exemplo, 20, 21, 22). As VMs são balanceadas entre domínios de falha.

Se utilizar várias extensões num conjunto de dimensionamento, posso forçar uma sequência de execução?

Sim, você pode usar o sequenciamento de extensão de conjunto de escala.

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

Um conjunto de escalas regionais (não zonais) usa grupos de posicionamento, que atuam como um conjunto de disponibilidade implícita 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 obter mais informações sobre grupos de posicionamento, consulte Trabalhando com grandes conjuntos de escala de máquina virtual. Um conjunto de disponibilidade de VMs pode existir na mesma rede virtual como um conjunto de dimensionamento de VMs. Uma configuração comum é colocar VMs de nó de controle (que geralmente exigem configuração exclusiva) em um conjunto de disponibilidade e colocar nós de dados no conjunto de escala.

Os conjuntos de escala funcionam com zonas de disponibilidade do Azure?

Sim. Para obter mais informações, consulte o documento de zona do conjunto de escalas.

Dimensionamento Automático

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

Onde posso encontrar nomes de métricas para dimensionamento automático que usa métricas baseadas em host?

Existem exemplos de dimensionamento automático com base em um tópico do Barramento de Serviço do Azure e no comprimento da fila?

Sim. Para obter esses exemplos, consulte Azure Monitor autoscaling common metrics.

Para uma fila do Service Bus, use o seguinte JSON:

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

Para 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 valores de exemplo por seus URIs (Uniform Resource Identifiers) de recurso.

Devo dimensionar automaticamente usando 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 de métricas suportadas, consulte Azure Monitor autoscaling common metrics.

Para obter um exemplo completo de Conjuntos de Dimensionamento de Máquina Virtual, consulte Configuração avançada de dimensionamento automático usando modelos do Gerenciador de Recursos para Conjuntos de Dimensionamento de Máquina Virtual.

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

Como defino regras de alerta em um Conjunto de Dimensionamento de Máquina Virtual?

Você pode criar alertas sobre métricas para Conjuntos de Escala de Máquina Virtual via PowerShell ou a CLI do Azure. Para obter mais informações, consulte Exemplos de início rápido do Azure Monitor PowerShell e Exemplos de início rápido da CLI entre plataformas do Azure Monitor.

O TargetResourceId do Conjunto de Escala de Máquina Virtual tem a seguinte aparência:

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

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

Como configuro o dimensionamento automático em um Conjunto de Dimensionamento de Máquina Virtual usando o PowerShell?

Consulte dimensionar automaticamente um Conjunto de Dimensionamento de Máquina Virtual. Você também pode configurar o dimensionamento automático com a CLI do Azure e os modelos do Azure.

Se eu tiver interrompido (deslocalizado) 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 escala, uma nova instância de VM será criada. As instâncias de VM interrompidas (deslocalizadas) não são iniciadas como parte de um evento de dimensionamento automático. No entanto, essas VMs interrompidas (deslocalizadas) podem ser excluídas como parte de um evento de dimensionamento automático que é dimensionado no número de instâncias, da mesma forma que qualquer instância de VM pode ser excluída com base na ordem dos IDs de instância da VM.

Certificados

Como faço para enviar um certificado com segurança para a VM?

Para enviar um certificado com segurança 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 seguinte 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"
            }
        ]
    }
]

O código suporta Windows e Linux.

Para obter mais informações, consulte Criar ou atualizar um conjunto de dimensionamento de máquina virtual.

Como uso certificados autoassinados provisionados para clusters do Azure Service Fabric?

Para obter 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

Os certificados autoassinados 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 orientações de segurança, consulte as práticas recomendadas de segurança do Azure Service Fabric e os cenários de segurança de cluster do Service Fabric.

Para autenticação SSH com um conjunto de escala de máquina virtual Linux a partir de um modelo do Resource Manager, posso especificar um par de chaves SSH a ser usado?

Sim. A API REST for osProfile é semelhante à API REST 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, consulte Criar ou atualizar um conjunto de dimensionamento de máquina virtual.

Como faço para remover certificados preteridos?

Para remover certificados preteridos, remova o certificado antigo da lista de certificados do vault. Deixe todos os certificados que você deseja manter no seu computador na lista. Essa ação não remove o certificado de todas as suas VMs. Ele também não adiciona o certificado a novas VMs criadas no Conjunto de Dimensionamento de Máquina Virtual.

Para remover o certificado de VMs existentes, use uma extensão de script personalizada para remover manualmente o certificado do armazenamento de certificados.

Como injeto uma chave pública SSH existente na camada SSH do Conjunto de Escala de Máquina Virtual durante o provisionamento?

Se você estiver fornecendo as VMs apenas com uma chave SSH pública, não precisará colocar as chaves públicas no Cofre de Chaves do Azure. As chaves públicas não são secretas.

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

"linuxConfiguration": {
    "ssh": {
        "publicKeys": [
            {
                "path": "path",
                "keyData": "publickey"
            }
        ]
    }
}
linuxConfiguration nome do elemento Obrigatório Type Description
ssh Não Coleção Especifica a configuração da chave SSH para um sistema operacional Linux.
path Sim String Especifica o caminho do arquivo Linux onde 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' depois de adicionar mais de um certificado do mesmo cofre de chaves, por que recebo uma mensagem de erro?

Esse erro pode acontecer se você tentar adicionar novamente o mesmo cofre em vez de usar um novo certificado de cofre para o cofre de origem existente. O Add-AzVmssSecret comando não funciona corretamente se você estiver adicionando mais segredos.

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

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

Encontre o segredo no objeto Conjunto de Escala de Máquina Virtual que está no cofre de chaves. Em seguida, adicione a referência do certificado (o URL e o nome do repositório secreto) à lista associada ao cofre.

Nota

Atualmente, não é possível remover certificados de VMs usando a API do Conjunto de Dimensionamento de Máquina Virtual.

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 Escala de Máquina Virtual sem fornecer a senha, quando o certificado está no armazenamento secreto?

Você não precisa codificar senhas em scripts. Você pode recuperar senhas dinamicamente com as permissões usadas para executar o script de implantação. Se você tiver um script que move um certificado do cofre de chaves de armazenamento secreto, o comando secret store get certificate também emite a senha do arquivo .pfx.

Como funciona a propriedade 'Secrets' de 'virtualMachineProfile.osProfile' para um conjunto de escala de máquina virtual? Por que preciso do valor 'sourceVault' quando tenho que especificar o URI absoluto para um certificado usando a propriedade 'certificateUrl'?

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

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

Se você fornecer um ID de cofre de origem incorreto, mas um URL de cofre de chave válido, um erro será relatado quando você pesquisar a operação.

Se eu adicionar segredos a um Conjunto de Dimensionamento de Máquina Virtual existente, os segredos serão injetados em VMs existentes ou apenas em novas?

Os certificados são adicionados a todas as suas VMs, mesmo as pré-existentes. Se a propriedade Conjunto de upgradePolicy Escala da Máquina Virtual estiver definida como manual, o certificado será adicionado à VM quando você executar uma atualização manual na VM.

Onde coloco certificados para VMs Linux?

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

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

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

$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 aos certificados se eu recriar a imagem de uma VM?

Se você recriar a imagem de uma VM, os certificados serão excluídos. A nova criação de imagens 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, em seguida, você executar stop deallocate todas as suas VMs e, em seguida, iniciá-las novamente, você encontrará uma falha. A falha ocorre porque a CRP precisa recuperar os segredos do cofre de chaves, mas não pode. Nesse cenário, você pode excluir os certificados do modelo de conjunto de escala de máquina virtual.

O componente CRP não torna os segredos do cliente persistentes. Se você executar stop deallocate para todas as VMs no Conjunto de Dimensionamento de Máquina Virtual, o cache será excluído. Nesse cenário, os segredos são recuperados do cofre de chaves.

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

Por que tenho que especificar a versão do certificado quando uso o Cofre de Chaves?

O objetivo é deixar claro para o usuário qual certificado é implantado em suas VMs.

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

Minha equipe trabalha com vários certificados que são distribuídos para nós como .cer chaves públicas. Qual é a abordagem recomendada para implantar esses certificados em um Conjunto de Dimensionamento de Máquina Virtual?

Para implantar .cer chaves públicas em um Conjunto de Dimensionamento de Máquina Virtual, você pode gerar um arquivo .pfx que contenha apenas arquivos .cer. Para fazer isso, use X509ContentType = Pfx. Por exemplo, carregue o arquivo .cer como um x509Certificate2 objeto em C# ou PowerShell e chame o método.

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

Como faço para passar certificados como cadeias de caracteres base64?

Para emular a passagem de um certificado como uma cadeia de caracteres base64, você pode extrair a URL versionada mais recente em um modelo do Gerenciador de Recursos. Inclua a seguinte propriedade JSON no seu modelo do Resource Manager:

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

Tenho que encapsular certificados em objetos JSON em cofres de chaves?

Em Conjuntos de Dimensionamento de Máquina Virtual e VMs, os certificados devem ser encapsulados em objetos JSON.

Também suportamos o tipo de conteúdo application/x-pkcs12.

De momento, não suportamos ficheiros .cer. Para usar arquivos .cer, exporte-os para contêineres .pfx.

Conformidade e segurança

Os conjuntos de dimensionamento de máquina virtual são compatíveis com PCI?

Os Conjuntos de Dimensionamento de Máquina Virtual são uma camada fina de API sobre o CRP. Os dois componentes fazem parte da plataforma de computação da árvore de serviço do Azure.

Do ponto de vista da conformidade, os Conjuntos de Dimensionamento de Máquina Virtual são uma parte fundamental da plataforma de computação do Azure. Eles compartilham o seguinte com o próprio CRP: uma equipe, ferramentas, processos, metodologia de implantação, controles de segurança, compilação just-in-time (JIT), monitoramento e alerta. Os Conjuntos de Dimensionamento de Máquina Virtual são compatíveis com PCI (Payment Card Industry) porque o CRP faz parte do atual certificado DSS (PCI Data Security Standard).

Para obter mais informações, veja o Centro de Fidedignidade da Microsoft.

As identidades gerenciadas para recursos do Azure funcionam com Conjuntos de Escala de Máquina Virtual?

Sim. Para obter mais informações, consulte a visão geral de identidades gerenciadas. Você pode ver alguns exemplos de modelos MSI em Modelos de Início Rápido do Azure para Linux e Windows.

Eliminar

Os bloqueios que eu definir em instâncias do Conjunto de Escala de Máquina Virtual serão respeitados quando eu estiver excluindo instâncias?

No portal do Azure, você tem a capacidade de excluir uma instância individual ou excluir em massa selecionando várias instâncias. Se você tentar excluir uma única instância que tenha um bloqueio no lugar, o bloqueio será respeitado e você não poderá excluir a instância. No entanto, se você selecionar várias instâncias em massa e qualquer uma dessas instâncias tiver um bloqueio no lugar, os bloqueios não serã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 individual. Se você tentar excluir uma única instância que tenha um bloqueio em vigor, o bloqueio será respeitado e você não poderá excluir essa instância.

Extensões

Como faço para excluir uma extensão do Conjunto de Escala de Máquina Virtual?

Para excluir uma extensão do Conjunto de Escala de Máquina Virtual, 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 extensionName valor em $vmss.

Existe um exemplo de modelo de Conjunto de Escala de Máquina Virtual que se integra com os Logs do Azure Monitor?

Para obter um exemplo de modelo de Conjunto de Escala de Máquina Virtual que se integra aos Logs do Azure Monitor, consulte o segundo exemplo em Implantar um cluster do Azure Service Fabric e habilitar o monitoramento usando os Logs do Azure Monitor.

Como adiciono uma extensão a todas as VMs no meu Conjunto de Dimensionamento de Máquina Virtual?

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

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

Se as extensões associadas a um Conjunto de Escala de Máquina Virtual existente forem atualizadas, as VMs existentes serão afetadas?

Se a definição de extensão no modelo de Conjunto de Escala de Máquina Virtual for atualizada e a upgradePolicy propriedade estiver definida como automatic, ela atualizará as VMs. Se a upgradePolicy propriedade estiver definida como , as extensões serão sinalizadas como manualnão correspondendo ao modelo.

As extensões são executadas novamente quando uma máquina existente é recuperada pelo serviço ou recriada?

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

Como faço para ingressar um Conjunto de Escala de Máquina Virtual em um domínio do Ative Directory?

Para associar um Conjunto de Dimensionamento de Máquina Virtual a um domínio do Ative Directory, você pode definir uma extensão.

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

"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 Virtual Machine Scale set está tentando instalar algo que requer uma reinicialização. O que devo fazer?

Você pode usar a extensão Configuração de Estado Desejado da Automação do Azure. Se o sistema operacional for o Windows Server 2012 R2, o Azure extrai a instalação do Windows Management Framework (WMF) 5.0, reinicializa e continua com a configuração.

Como executar um script personalizado hospedado em uma conta de armazenamento privado?

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

Palavras-chave

Como redefinir a senha para VMs no meu Conjunto de Dimensionamento de Máquina Virtual?

Pode:

  • Altere o modelo do Conjunto de Escala de Máquina Virtual diretamente. Esta opção só está disponível com a API 2017-12-01 e versões posteriores.

    Atualize as credenciais de administrador diretamente no modelo de conjunto de escala (por exemplo, usando o Gerenciador de Recursos do Azure, o PowerShell ou a CLI do Azure). Depois que o conjunto de escala é atualizado, todas as novas VMs têm as novas credenciais. As VMs existentes só terão as novas credenciais se forem recriadas.

  • Redefina a senha usando as extensões de acesso da VM. Certifique-se de seguir os requisitos de senha, conforme descrito nas Perguntas frequentes.

    Usar uma extensão de acesso à VM não requer recriação de imagens, porque a extensão não atualiza a senha no modelo. A extensão executa um script para anexar 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 de VM.

    Nota

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

    Use o seguinte exemplo do PowerShell para um Conjunto de Dimensionamento de Máquina Virtual 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 de CLI do Azure para um Conjunto de Escala de Máquina Virtual 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 escalas, para que ele se aplique a todas as NICs de VM no conjunto?

Sim. Você pode aplicar um NSG diretamente a uma escala definida fazendo referência a networkInterfaceConfigurations ele na seção do perfil de rede. Eis 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 faço uma troca de IP virtual (VIP) para Conjuntos de Escala de Máquina Virtual na mesma assinatura e na mesma região?

Se você tiver dois Conjuntos de Escala de Máquina Virtual com o Balanceador de Carga do Azure e eles estiverem na mesma assinatura e região, poderá desalocar os endereços IP públicos de cada um e atribuir ao outro. Para obter mais informações, consulte Troca VIP: implantação azul-verde no Azure Resource Manager. No entanto, você pode sofrer 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 à troca rápida entre slots de preparação e produção.

Como especifico um intervalo de endereços IP privados a serem usados para alocação de endereços IP privados estáticos?

Os endereços IP são selecionados a partir de uma sub-rede que você especificar.

O método de alocação de endereços IP do Conjunto de Escala de Máquina Virtual é sempre dinâmico, mas isso não significa que esses endereços IP possam ser alterados. Nesse caso, dinâmico significa apenas que você não especifica o endereço IP em uma PUT solicitação. Especifique o conjunto estático usando a sub-rede.

Como implantar um Conjunto de Escala de Máquina Virtual em uma rede virtual existente do Azure?

Posso usar conjuntos de escala com rede acelerada?

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

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

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

Para criar um Conjunto de Dimensionamento de Máquina Virtual com uma configuração DNS personalizada, adicione um dnsSettings pacote JSON à seção Conjunto networkInterfaceConfigurations de escalas. Eis um exemplo:

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

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

Para criar um Conjunto de Dimensionamento de Máquina Virtual que atribua 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 publicipaddressconfiguration pacote JSON à seção do conjunto ipConfigurations de escalas. Eis um exemplo:

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

Posso configurar um conjunto de escala para trabalhar com vários gateways de aplicativos?

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

Escala

Em que caso eu criaria um Conjunto de Escala de Máquina Virtual com menos de duas VMs?

Um motivo para criar um Conjunto de Dimensionamento de Máquina Virtual com menos de duas VMs é usar as propriedades elásticas de um Conjunto de Dimensionamento de Máquina Virtual. Por exemplo, você pode implantar um Conjunto de Dimensionamento de Máquina Virtual com zero VMs para definir sua infraestrutura sem pagar os custos de execução da VM. Em seguida, quando estiver pronto para implantar VMs, você poderá aumentar a capacidade do Conjunto de Dimensionamento de Máquina Virtual para a contagem de instâncias de produção.

Outra razão pela qual você pode criar um Conjunto de Dimensionamento de Máquina Virtual com menos de duas VMs é se você estiver menos preocupado com a disponibilidade do que com o uso de um conjunto de disponibilidade com VMs discretas. Os Conjuntos de Escala de Máquina Virtual oferecem uma maneira de trabalhar com unidades de computação indiferenciadas que são fungíveis. Essa uniformidade é um diferencial importante para Conjuntos de Dimensionamento de Máquina Virtual 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 para uma unidade de computação e, em seguida, aumentar para muitas quando a carga de trabalho aumentar.

Como faço para alterar o número de VMs em um Conjunto de Dimensionamento de Máquina Virtual?

Para alterar o número de VMs em um Conjunto de Dimensionamento de Máquina Virtual no portal do Azure, na seção Propriedades do Conjunto de Escala de Máquina Virtual, selecione o painel Dimensionamento e use a barra deslizante.

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

Você tem alguma flexibilidade na forma como lida com alertas para 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 patches e operações

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

Sim, pode.

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

Sim, você pode mover recursos do conjunto de escala para uma nova assinatura ou grupo de recursos.

Como atualizo meu Conjunto de Escala de Máquina Virtual para uma nova imagem? Como faço para gerenciar a aplicação de patches?

Para atualizar seu Conjunto de Dimensionamento de Máquina Virtual para uma nova imagem e gerenciar patches, consulte Atualizar um Conjunto de Dimensionamento de Máquina Virtual.

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 para 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áquina Virtual fizer referência a uma imagem de plataforma com version = latesto , sua VM poderá atualizar para uma imagem posterior do sistema operacional quando você chamar reimage.

É possível integrar conjuntos de dimensionamento com o Azure Monitor Logs?

Sim, você pode instalar a extensão Azure Monitor nas VMs do conjunto de escala. 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 espaço de trabalho necessário workspaceId e workspaceKey no 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.

Nota

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 nelas. Na CLI do Azure, isso é az vmss update-instances.

Nota

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. Consulte Alterações de terminologia do Azure Monitor para obter detalhes.

Resolução de Problemas

Como faço para ativar 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 seu Conjunto virtualMachineProfilede Dimensionamento de Máquina Virtual e atualize o Conjunto de Dimensionamento de Máquina Virtual:

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

Quando uma nova VM é criada, a InstanceView propriedade da VM mostra os detalhes da captura de tela. Eis 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 posso resolver outros problemas?

Propriedades da máquina virtual

Como faço para obter informações de propriedade para cada VM sem fazer várias chamadas? Por exemplo, como eu obteria o domínio de falha para cada uma das 100 VMs no meu Conjunto de Escala de Máquina Virtual?

Você pode chamar ListVMInstanceViews fazendo uma API GET REST 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 escala usa dispersão máxima (platformFaultDomainCount = 1), porque não há garantia de quantos domínios de falha seriam usados com essa configuração.

Posso passar diferentes argumentos de extensão para VMs diferentes em um Conjunto de Dimensionamento de Máquina Virtual?

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

Por que há lacunas (por exemplo, 0, 1, 3) entre meus nomes de máquina VM do Conjunto de Escala de Máquina Virtual e IDs de VM?

As lacunas ocorrem porque a propriedade Conjunto de Dimensionamento overprovision de Máquina Virtual está definida como o valor padrão de true. Se o provisionamento excessivo estiver definido como true, mais VMs do que o solicitado serão criadas. As VMs extras são então excluídas. Nesse caso, você ganha maior confiabilidade de implantação, mas às custas de regras contíguas de nomenclatura e NAT (conversão de endereços de rede) contíguas.

Você pode definir essa propriedade como false. Para pequenos conjuntos de escala de máquina virtual, a confiabilidade da implantação não será significativamente afetada.

Qual é a diferença entre excluir uma VM em um Conjunto de Dimensionamento de Máquina Virtual e deslocalizar a VM? Quando devo escolher um em detrimento do outro?

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

  • Você deseja parar de pagar custos de computação, mas deseja manter o estado do disco das VMs.
  • Você deseja iniciar um conjunto de VMs mais rapidamente do que pode dimensionar um Conjunto de Dimensionamento de Máquina Virtual.
    • Relacionado a esse cenário, você pode ter criado seu próprio mecanismo de dimensionamento automático e desejar uma escala de ponta a ponta mais rápida.
  • Você tem um Conjunto de Dimensionamento de Máquina Virtual que é distribuído de forma desigual entre domínios de falha ou domínios de atualização. Essa distribuição irregular pode ser porque você excluiu seletivamente VMs ou porque as VMs foram excluídas após o provisionamento excessivo. A execução stop deallocate seguida pelo start Conjunto de Escala de Máquina Virtual distribui uniformemente as VMs entre domínios de falha ou domínios de atualização.

Como faço para tirar um instantâneo de uma instância do Conjunto de Escala de Máquina Virtual?

Crie um instantâneo a partir de uma instância de um Conjunto de Dimensionamento de Máquina Virtual. Eis 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 disco gerenciado a partir do snapshot. Eis 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')