Obtenha respostas para as perguntas frequentes sobre os conjuntos de dimensionamento de máquinas virtuais no Azure.
Perguntas frequentes sobre os conjuntos de dimensionamento
Quanto custa usar Conjuntos de Dimensionamento de Máquinas Virtuais?
Você paga pelos recursos subjacentes usados pelo conjunto de dimensionamento, como máquinas virtuais, armazenamento e recursos de rede. Não há nenhum custo extra para o conjunto de dimensionamento em si.
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:
- Discos Gerenciados do Azure – Premium v2, Premium, Standard, Ultra
- Arquivos do Azure – SMB (protocolo SMB) ou unidades compartilhadas NFS (Sistema de Arquivos de Rede)
- Azure NetApp Files
- Discos compartilhados do Azure
- Unidade do sistema operacional
- Unidade temporária – local, não apoiada pelo Armazenamento do Microsoft 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.
Quais unidades de manutenção de estoque (SKUs) de Máquina Virtual do Azure têm suporte para Conjuntos de Dimensionamento de Máquinas Virtuais?
Todos os SKUs de Máquina Virtual têm suporte para 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 (máquina virtual) e 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 Refazer imagem e Atualização de Imagem do sistema operacional?
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, o conjunto de dimensionamento remove as VMs uniformemente entre zonas de disponibilidade e domínios de falha para maximizar a disponibilidade. Ele remove as máquinas virtuais com os IDs mais altos primeiro.
Você pode especificar uma política de escala para alterar a ordem na qual as VMs são removidas.
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.
O que acontece quando uma VM em um conjunto de dimensionamento se torna não saudável?
O Azure substitui automaticamente instâncias comprometidas com base em sinais de sondagem de integridade ou extensões de saúde do aplicativo.
Existe suporte para identidades gerenciadas com VM Scale Sets?
Sim, os conjuntos de dimensionamento de VM dão suporte a identidades gerenciadas do Azure. Elas permitem que as VMs do conjunto de dimensionamento acessem com segurança recursos do Azure, como o Key Vault, sem precisar de credenciais no código.
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 posicionamento, que atuam 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, consulte a documentação da zona de disponibilidade de conjuntos de escalas.
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 parar (desalocar) uma VM, essa VM será iniciada como parte de uma operação de dimensionamento automático?
Não. As regras de dimensionamento automático criam novas instâncias de VM quando mais capacidade é necessária. As VMs interrompidas (desalocadas) não são iniciadas durante um evento de dimensionamento automático. No entanto, elas podem ser excluídas durante um evento de escala, assim como qualquer outra instância de VM, com base na ordem de ID da instância.
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 imprime para stdout:
az sf cluster create -h
Evite usar certificados autoassinados para a confiança distribuída. Certificados autoassinados não são recomendados para clusters do Service Fabric destinados a soluções de produção corporativa. 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 | Tipo | 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 eu executar 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 ler 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 VMs provisionadas recentemente não usarão o certificado preterido. No entanto, as VMs existentes que já foram implantadas com o certificado o retêm, a menos que sejam explicitamente modificadas.
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 do virtualMachineProfile.osProfile para um Conjunto de Dimensionamento de Máquinas Virtuais? Por que preciso do valor sourceVault quando preciso especificar o URI absoluto para 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 pré-existentes. 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 um segredo for excluído do cofre de chaves e você posteriormente stop deallocate todas as VMs, reiniciá-las falhará. Essa falha ocorre porque o provedor de recursos de computação tenta recuperar o segredo do cofre de chaves, mas ele não está mais disponível. Para resolver esse problema, você pode remover os certificados do modelo do Conjunto de Dimensionamento de Máquinas Virtuais.
O provedor de recursos de computação não armazena segredos do cliente persistentemente. Quando você executa stop deallocate para todas as VMs no Conjunto de Dimensionamento de Máquinas Virtuais, os segredos armazenados em cache são limpos. Nesse caso, o provedor de recursos de computação tenta recuperar os segredos do cofre de chaves novamente.
Esse problema não ocorre durante uma operação de expansão porque uma cópia armazenada em cache do segredo é mantida 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 .cer chaves públicas em um Conjunto de Dimensionamento de Máquinas Virtuais, você pode gerar um arquivo .pfx que contém apenas arquivos .cer usando 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 damos suporte ao tipo application/x-pkcs12de conteúdo.
Atualmente, não há suporte .cer para arquivos. Para usar .cer arquivos, exporte-os para .pfx contêineres.
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 as seguintes informações com o próprio provedor de recursos de computação: uma equipe, ferramentas, processos, metodologia de implantação, controles de segurança, compilação just-in-time (JIT), 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 ver alguns exemplos de modelos de MSI (Identidade de Serviço Gerenciado) nos Modelos de Início Rápido do Azure para Linux e Windows.
Excluindo
Os bloqueios que defini nas instâncias do Conjunto de Dimensionamento de Máquinas Virtuais são respeitados quando excluo essas 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 sã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?
Quando você atualiza a definição de extensão no modelo de Escala de Máquinas Virtuais e define o upgradePolicy para automatic, a Azure atualiza automaticamente as extensões em todas as VMs. No entanto, se estiver upgradePolicy definido como manual, as extensões serão marcadas como fora de sincronia com o modelo. Nesse caso, as extensões não serão atualizadas até que você dispare manualmente uma atualização para as instâncias da VM.
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ê pode:
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. As VMs existentes só terão as novas credenciais se forem imagem.
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 como
manual, você precisará selecionar e atualizar manualmente instâncias de VM individuais. Se estiver definido comoAutomatic, 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 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 $vmssUse 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 para que ele se aplique a todos os NICs (controladores de interface de rede) da VM no 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. Aqui está 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 usando o Azure Load Balancer na mesma assinatura e região, poderá trocar seus endereços IP públicos. Para fazer isso, desaloque o IP público de cada conjunto de dimensionamento e atribua-o ao outro. 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?
Confira Implantar um conjunto de dimensionamento de máquinas virtuais em uma rede virtual 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 (sistema de nomes de domínio) 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. Aqui está 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 atribua um endereço IP público a cada VM, verifique se a versão da API do Microsoft.Compute/virtualMachineScaleSets recurso está 2017-03-30e adicione um publicipaddressconfiguration pacote JSON à seção do conjunto ipConfigurations de dimensionamento. Aqui está 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.
Posso anexar várias placas de rede ou configurações de IP personalizadas às VMs em um conjunto escalável?
Sim. Os Conjuntos de Dimensionamento de Máquinas Virtuais dão suporte a várias NICs e configurações de IP personalizadas por instância ao usar o modo de orquestração flexível. Isso permite topologias de rede complexas e isolamento de serviço.
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, 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 posso gerenciar a aplicação de patch das VMs no meu conjunto de dimensionamento?
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, 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. Para a CLI do Azure, use 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. Aqui está 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?
Acesse a página Solução de problemas comuns com os conjuntos de dimensionamento de máquinas virtuais.
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 chamada à 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
Observação: se o conjunto de dimensionamento usar a propagação máxima (platformFaultDomainCount = 1), as informações de domínio de falha não serão retornadas, pois o número de domínios de falha usados não é garantido 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 em que estão sendo executadas, como no nome do computador. 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 conjuntos de escala de máquinas virtuais de pequeno porte, a confiabilidade da implantação não é 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.
- Relacionado a esse cenário, você pode ter o seu próprio mecanismo de dimensionamento automático e desejar ter uma escala de ponta a ponta mais rápida.
- 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 deallocateseguido destartno 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. Aqui está 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 instantâneo. Aqui está 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')