Obtenha respostas para perguntas frequentes sobre Conjuntos de Dimensionamento de Máquina Virtual no Azure.
Principais perguntas frequentes sobre conjuntos de escalas
Quanto custa usar os Conjuntos de Dimensionamento de Máquinas Virtuais?
Você paga pelos recursos subjacentes usados pelo seu conjunto de escala, como máquinas virtuais, armazenamento e recursos de rede. Não há nenhum custo extra para o conjunto de escala em si.
Quantas VMs posso ter em um conjunto de escalas?
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 mais informações, consulte Conjuntos de Dimensionamento 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 (Server Message Block) ou NFS (Network File System)
- Azure NetApp Files
- Discos partilhados do Azure
- Unidade de disco do sistema operativo
- Unidade temporária - local, sem 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
Quais regiões do Azure suportam escalonamento?
Todas as regiões suportam conjuntos de dimensionamento.
Quais SKUs (Unidades de Manutenção de Estoque de Máquina Virtual) do Azure têm suporte para Conjuntos de Dimensionamento de Máquina Virtual?
Todos os SKUs de Máquina Virtual são suportados para Conjuntos de Escala de Máquinas Virtuais.
Como posso utilizar uma imagem personalizada para criar um conjunto de escalas?
Crie e capture uma imagem de máquina virtual (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 Reinstalação.
Se reduzir a capacidade do conjunto de escalonamento de 20 para 15, quais VMs são removidas?
Por padrão, o conjunto de dimensionamento remove VMs uniformemente entre zonas de disponibilidade e domínios de falha para maximizar a disponibilidade. Ele remove primeiro as VMs com as IDs mais altas.
Você pode especificar uma política de expansão para alterar a ordem na qual as VMs são removidas.
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.
O que acontece quando uma VM em um grupo de escalonamento se torna não íntegra?
O Azure substitui automaticamente instâncias não íntegras com base em sinais de teste de integridade ou extensões de integridade do aplicativo.
As identidades geridas são suportadas por conjuntos de escalamento de VMs?
Sim, os conjuntos de escalas de VM suportam identidades geridas do Azure. Estas ferramentas permitem que as suas VMs de conjunto de escalabilidade acedam de forma segura a recursos do Azure, como o Key Vault, sem necessidade de credenciais em código.
Quando utilizo 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 colocação, 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 que um conjunto de escala de VMs. Uma configuração comum é colocar as VMs de nós de controlo (que geralmente exigem configuração exclusiva) num conjunto de disponibilidade e colocar os nós de dados num conjunto de dimensionamento.
Os conjuntos de escala funcionam com zonas de disponibilidade do Azure?
Sim. Para obter mais informações, consulte a documentação da zona de disponibilidade do conjunto de escalas.
Dimensionamento Automático
Quais são as práticas recomendadas para o dimensionamento automático do Azure?
Consulte Práticas recomendadas para dimensionamento automático de máquinas virtuais.
Onde posso encontrar nomes de métricas para dimensionamento automático que usa métricas baseadas em host?
Consulte Métricas suportadas com o Azure Monitor.
Existem exemplos de redimensionamento automático com base em um tópico do Barramento de Serviço do Azure e no comprimento de uma 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 os valores de exemplo pelos seus Identificadores Uniformes de Recurso (URIs).
Devo realizar o dimensionamento automático 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 num Virtual Machine Scale Set?
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 Escalabilidade de Máquinas Virtuais 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 desligar (desalocar) uma VM, essa VM é iniciada como parte de uma operação de dimensionamento automático?
N.º As regras de dimensionamento automático criam novas instâncias de VM quando é necessária mais capacidade. As VMs paradas (dealocadas) não são iniciadas durante um evento de escalonamento automático. No entanto, eles podem ser excluídos durante um evento de expansão, assim como qualquer outra instância de VM, com base na ordem de ID da instância.
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, num 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 confiança distribuída. Os certificados autoassinados não são recomendados para clusters do Service Fabric destinados a 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áquinas virtuais Linux a partir de um modelo do Azure Resource Manager, posso especificar um par de chaves SSH a utilizar?
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 |
Necessá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 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 ocorrer se tentar readicionar o mesmo cofre em vez de utilizar um novo certificado de cofre para o cofre-fonte 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 Scale Set de Máquinas Virtuais.
As VMs recém-provisionadas não usarão o certificado preterido. No entanto, as VMs existentes que já foram implantadas com o certificado o mantêm, a menos que sejam explicitamente modificadas.
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 é que a propriedade 'Secrets' do virtualMachineProfile.osProfile funciona num 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 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 do Conjunto de Escala de Máquinas Virtuais upgradePolicy estiver definida como manual, o certificado será adicionado à VM quando efetuar 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 reimagem apaga todo o disco do sistema operativo.
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 suas 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 de conjunto de escala de máquina virtual.
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 Escala de Máquina Virtual, 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 em cache do segredo é mantida 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 chaves públicas .cer num Conjunto de Dimensionamento de Máquina Virtual, pode gerar um ficheiro .pfx que contenha apenas arquivos .cer usando 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 string base64, pode extrair a URL versionada mais recente num 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 application/x-pkcs12de conteúdo.
De momento, não suportamos .cer ficheiros. Para usar .cer arquivos, exporte-os para .pfx contêineres.
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 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 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 geridas 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 geridas. Você pode ver alguns exemplos de modelos de Identidade de Serviço Gerenciado (MSI) em Modelos de Início Rápido do Azure para Linux e Windows.
Eliminar
Os bloqueios que defino nas instâncias do Conjunto de Escala de Máquina Virtual são respeitados quando excluo 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 selecionar várias instâncias simultaneamente, e qualquer uma dessas instâncias tiver um bloqueio ativo, os bloqueios não serão respeitados. Todas as instâncias selecionadas são eliminadas.
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 valor extensionName 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?
Quando você atualiza a definição de extensão no modelo de Conjunto de Escala de Máquina Virtual e define como upgradePolicyautomatic, o Azure atualiza automaticamente as extensões em todas as VMs. No entanto, se o upgradePolicy estiver 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ê acione manualmente uma atualização para as instâncias de VM.
Será que as extensões são executadas novamente quando uma máquina existente é corrigida automaticamente pelo serviço ou é feita uma reimagem?
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 reimageada, o processo será semelhante à substituição do disco do sistema operativo pela imagem de origem. Todas as especializações do modelo mais recente, como extensões, são executadas novamente.
Como faço para adicionar um Conjunto de Dimensionamento de Máquina Virtual a um domínio do Active 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 operativo for o Windows Server 2012 R2, o Azure extrai a instalação do Windows Management Framework (WMF) 5.0, reinicia 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 das VMs no meu Conjunto de Dimensionamento de Máquinas Virtuais?
Pode:
Altere o modelo do Conjunto de Escala de Máquinas Virtuais 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 tiverem a imagem reinstalada.
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 uma reimagem, porque a extensão não atualiza a palavra-passe 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, você precisará selecionar e atualizar manualmente instâncias individuais de VM. 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 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 $vmssUse o exemplo seguinte da CLI do Azure para um Conjunto de Escalamento de Máquinas Virtuais 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 grupo de segurança de rede (NSG) a um conjunto de escalas, para que ele se aplique a todos os controladores de interface de rede (NICs) VM no conjunto?
Sim. Você pode aplicar um NSG diretamente a uma escala definida ao mencioná-lo 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áquinas Virtuais na mesma subscrição e na mesma região?
Se você tiver dois Conjuntos de Escala de Máquina Virtual usando o Balanceador de Carga do Azure 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 escalas e atribua-o 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. Em alternativa, pode hospedar a sua aplicação com o Azure App Service, 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?
Consulte Implantar um conjunto de escala de máquina virtual em uma rede virtual existente.
Posso usar conjuntos de escala com rede acelerada?
Sim. Para usar networking acelerada, defina enableAcceleratedNetworking para true nas definições de configurações de escala do conjunto networkInterfaceConfigurations. Por exemplo:
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "niconfig1",
"properties": {
"primary": true,
"enableAcceleratedNetworking" : true,
"ipConfigurations": [
]
}
}
]
}
Como posso configurar os servidores DNS (sistema de nomes de domínio) utilizados por um conjunto de escalas?
Para criar um Conjunto de Escalas de Máquinas Virtuais com uma configuração DNS personalizada, adicione um dnsSettings pacote JSON à secção do Conjunto de Escalas networkInterfaceConfigurations. 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 Escalamento 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, e adicione um pacote JSON à seção 2017-03-30 do conjunto de escalas publicipaddressconfiguration. Eis um exemplo:
"publicipaddressconfiguration": {
"name": "pub1",
"properties": {
"idleTimeoutInMinutes": 15
}
}
Posso configurar um conjunto de escala para trabalhar com vários gateways de aplicações?
Sim. Você pode adicionar os IDs dos recursos para múltiplos pools de endereços de backend do gateway de aplicações à applicationGatewayBackendAddressPools lista na ipConfigurations seção do perfil de rede do seu conjunto de escalas.
Posso anexar múltiplas NICs ou configurações de IP personalizadas a VMs num conjunto de escala?
Sim. Os Conjuntos de Dimensionamento de Máquinas Virtuais suportam múltiplas NICs e configurações IP personalizadas por instância ao utilizar o modo de orquestração flexível. Isso permite topologias de rede complexas e isolamento de serviços.
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 nas VMs no meu conjunto de escalas?
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 = latest, a sua VM poderá atualizar para uma imagem posterior do sistema operativo quando efetuar a chamada reimage.
É possível integrar conjuntos de dimensionamento com o Azure Monitor Logs?
Sim, instalando 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'}"
Pode encontrar os workspaceId e workspaceKey necessários no espaço de trabalho do Log Analytics no portal do Azure.
Na página Visão geral, selecione o bloco Configurações. Selecione o separador Fontes Conectadas na parte superior.
Nota
Se o conjunto de dimensionamento upgradePolicy estiver definido como manual, é necessário aplicar a extensão a todas as VMs do conjunto executando a atualização nas mesmas. Para a CLI do Azure, use 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 chamada de 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
Nota: Se o conjunto de escala usar dispersã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 passar argumentos de extensão diferentes para diferentes VMs num Conjunto de Escala de Máquinas Virtuais?
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 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 das máquinas VM do meu Conjunto de Escala de Máquinas Virtuais e os IDs de VM?
As lacunas ocorrem porque a propriedade do Conjunto de Escalamento de Máquinas Virtuais overprovision está definida para 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 é 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 do stop deallocate. 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 escalar um Conjunto de Escala de Máquinas Virtuais.
- Relacionado a esse cenário, você pode ter seu próprio mecanismo de escala automática e querer 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 de
stop deallocateseguida porstartno 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 Escalabilidade de Máquinas Virtuais. 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')