Criar um Conjunto de Dimensionamento de Máquinas Virtuais que use Zonas de Disponibilidade
As zonas de disponibilidade do Azure são locais isolados contra falhas em uma região do Azure que fornecem energia, resfriamento e rede redundantes. Elas permitem que você execute aplicativos com alta disponibilidade e tolerância a falhas de data center. As regiões do Azure que dão suporte a Zonas de Disponibilidade têm no mínimo três zonas separadas. Cada zona de disponibilidade consiste em um ou mais data centers equipados com infraestrutura, energia, rede e resfriamento independentes. As zonas de disponibilidade são conectadas por uma rede de alto desempenho com uma latência de viagem de ida e volta de menos de 2 milissegundos. Para obter mais informações, consulte Visão geral de zonas de disponibilidade.
Para proteger seus Conjuntos de Dimensionamento de Máquinas Virtuais contra falhas do nível do datacenter, é possível criar um conjunto de dimensionamento entre Zonas de Disponibilidade. Para usar Zonas de Disponibilidade, seu conjunto de dimensionamento deve ser criado em uma região do Azure com suporte.
Considerações de design para zonas de disponibilidade
Conjuntos de Dimensionamento de Máquinas Virtuais dão suporte a três modelos de implantação zonal:
- Redundância de zona ou abrangência de zona (recomendado)
- Zonal ou alinhado a zonas (zona única)
- Regional
Redundância de zona ou abrangência de zona
Um conjunto de dimensionamento com redundância de zona ou abrangência de zona espalha instâncias em todas as zonas selecionadas, "zones": ["1","2","3"]
. Por padrão, o conjunto de dimensionamento executa uma abordagem de melhor esforço para distribuir instâncias uniformemente entre as zonas selecionadas. No entanto, você pode especificar que deseja um equilíbrio de zona estrito definindo "zoneBalance": "true"
em sua implantação. Cada VM e seus discos são zonais, portanto, eles são fixados em uma zona específica. As instâncias entre zonas são conectadas por uma rede de alto desempenho com baixa latência. No caso de uma interrupção ou problema de conectividade zonal, a conectividade com instâncias dentro da zona afetada pode ficar comprometida, enquanto as instâncias em outras zonas de disponibilidade não devem ser afetadas. Você pode adicionar capacidade ao conjunto de dimensionamento durante uma interrupção zonal e o conjunto de dimensionamento adicionará instâncias às zonas não afetadas. Quando a zona é restaurada, talvez seja necessário reduzir verticalmente o conjunto de dimensionamento à capacidade original. A melhor prática seria configurar regras de dimensionamento automático com base no uso de CPU ou memória. As regras de dimensionamento automático permitem que o conjunto de dimensionamento responda a uma perda das instâncias de VM em uma zona expandindo novas instâncias nas zonas operacionais restantes.
A disseminação de instâncias entre zonas de disponibilidade atende ao SLA de 99,99% para instâncias distribuídas entre zonas de disponibilidade e é recomendada para a maioria das cargas de trabalho no Azure.
Zonal ou alinhado a zonas (zona única)
Um conjunto de dimensionamento zonal ou alinhado a zonas coloca instâncias em uma única zona de disponibilidade "zones": ['1']
. Cada VM e seus discos são zonais, portanto, eles são fixados em uma zona específica. Essa configuração é usada principalmente quando você precisa de menor latência entre instâncias.
Regional
O conjunto de dimensionamento de máquinas virtuais é regional quando a atribuição de zona não é definida explicitamente ("zones"=[]
ou "zones"=null
). Nessa configuração, o conjunto de dimensionamento cria instâncias regionais (não fixadas por zona) e coloca implicitamente instâncias em toda a região. Não há nenhuma garantia de equilíbrio ou distribuição entre zonas nem que as instâncias cheguem à mesma zona de disponibilidade. A colocação de disco é garantida para discos Ultra e Premium v2, o melhor esforço para discos Premium V1 e não é garantida para discos SSD (SSD ou HDD) Standard.
No caso raro de uma interrupção zonal completa, qualquer ou todas as instâncias dentro do conjunto de dimensionamento poderão ser afetadas.
Domínios de falha e zonas de disponibilidade
Um domínio de falha é um grupo de isolamento de falhas em uma zona de disponibilidade ou datacenter de nós de hardware que compartilham o mesmo agendamento de manutenção de plataforma, potência, rede e resfriamento. As instâncias de VM que estão em domínios de falha diferentes provavelmente não serão afetadas pela mesma interrupção planejada ou não planejada. Você pode especificar como as instâncias são distribuídas nos domínios de falha de uma região ou zona.
- Difusão máxima (platformFaultDomainCount = 1)
- Difusão estática corrigida (platformFaultDomainCount = 5)
- Distribuição alinhada com domínios de falha de disco de armazenamento (platformFaultDomainCount = 2 ou 3, somente para implantações regionais)
Com a distribuição máxima, o conjunto de dimensionamento distribui suas VMs em no máximo de domínios de falha possíveis dentro de cada zona. Essa distribuição pode ser entre mais ou menos de cinco domínios de falha por zona. Com a difusão estática corrigida o conjunto de dimensionamento distribui suas VMs em exatamente cinco domínios de falha por zona. Se o conjunto de dimensionamento não conseguir localizar cinco domínios de falha distintos por zona para atender à solicitação de alocação, a solicitação falhará.
É recomendável implantar com distribuição máxima para a maioria das cargas de trabalho, uma vez que esse método fornece a melhor distribuição na maioria dos casos. Se você precisar que réplicas sejam distribuídas em unidades de isolamento de hardware diferentes, é recomendável distribuir por Zonas de Disponibilidade e utilizar a distribuição máxima dentro de cada região.
Observação
Com a distribuição máxima, você verá apenas um domínio de falha na exibição da VM do conjunto de dimensionamento e nos metadados de instância, independentemente de em quantos domínios de falha as VMs estão espalhadas. A distribuição dentro de cada região é implícita.
Grupos de posicionamento
Importante
Os grupos de posicionamento se aplicam somente a Conjuntos de Dimensionamento de Máquinas Virtuais em execução no modo de orquestração Uniforme.
Quando você implanta um conjunto de escala, você também pode implantar um único grupo posicionamento por Zona de Disponibilidade ou com vários por zona. Para conjuntos de dimensionamento regionais (não zonal), a opção é ter um único grupo posicionamento na região ou ter vários na região. Se a propriedade de conjunto de dimensionamento chamada singlePlacementGroup
for definida como falso, o conjunto de dimensionamento poderá ser composto de vários grupos de posicionamento e ter um intervalo de 0 a 1.000 VMs. Quando definido com o valor padrão verdadeiro, o conjunto de dimensionamento é composto de um grupo único posicionamento e tem um intervalo de 0 a 100 VMs. Para a maioria das cargas de trabalho, é recomendável vários grupos de posicionamento, o que permite maior dimensionamento. Na API versão 2017-12-01, os conjuntos de dimensionamento têm como padrão múltiplos grupos de posicionamento para conjuntos de dimensionamento de zona única e entre zonas, mas eles têm como padrão um grupo de posicionamento único para conjuntos de dimensionamento regionais (não zonal).
Observação
Se você usar a distribuição máxima, deverá usar vários grupos de posicionamento.
Balanceamento de zona
Para conjuntos de dimensionamento implantados em várias regiões, você também tem a opção de escolher "melhor balanceamento de zona possível" ou "balanceamento de zona estrito". Um conjunto de dimensionamento é considerado "balanceado" se em cada zona tiver o mesmo número de VMs +\- 1 VM como todas as outras zonas para o conjunto de dimensionamento. Por exemplo:
- Um conjunto de dimensionamento com 2 VMs na zona 1, 3 VMs na zona 2 e 3 VMs na zona 3 é considerado balanceado. Há apenas uma zona com uma contagem de VM diferente e ela é apenas 1 a menos do que outras zonas.
- Um conjunto de dimensionamento com 1 VM na zona 1, 3 VMs na zona 2 e 3 VMs na zona 3 é considerado não balanceado. Zona 1 tem 2 VMs a menos do que as zonas 2 e 3.
É possível que as VMs no conjunto de dimensionamento sejam criadas com êxito, mas extensões nessas VMs falham na implantação. Essas VMs com falhas de extensão ainda são contadas ao determinar se um conjunto de dimensionamento está balanceado. Por exemplo, um conjunto de dimensionamento com 3 VMs na zona 1, 3 VMs na zona 2 e 3 VMs na zona 3 é considerado balanceado mesmo se todas as extensões falham na zona 1 e todas as extensões obtêm êxito nas zonas 2 e 3.
Com melhor balanceamento de zona possível, o conjunto de dimensionamento tenta reduzir e expandir mantendo o balanceamento. No entanto, se por algum motivo o equilíbrio de zona não for possível (por exemplo, se uma zona ficar inativa, o conjunto de dimensionamento não poderá criar uma VM nessa zona), o conjunto de dimensionamento permitirá o desequilíbrio temporário para reduzir horizontalmente ou verticalmente com êxito. Nas tentativas de expansão subsequentes, o conjunto de dimensionamento adicionará VMs a zonas que precisam de mais VMs para que o conjunto de dimensionamento seja balanceado. De forma semelhante, em tentativas de redução subsequentes, o conjunto de dimensionamento remove VMs de zonas que precisam de menos VMs para que o conjunto de dimensionamento seja balanceado. Com "balanceamento de zona estrito", o conjunto de dimensionamento falhará em qualquer tentativa de expandir ou reduzir que cause desbalanceamento.
Para usar o melhor balanceamento de zona possível, defina zoneBalance como false. Esta é a configuração padrão na versão de API 2017-12-01. Para usar o balanceamento de zona estrito, defina zoneBalance como true.
Observação
A propriedade zoneBalance
só poderá ser definida se a propriedade zonas do conjunto de dimensionamento contiver mais de uma zona. Se não houver zonas ou apenas uma zona especificada, a propriedade zoneBalance não deverá ser definida.
Criar conjuntos de dimensionamento zonais ou abrangentes em zonas
Ao implantar um Conjunto de Dimensionamento de Máquinas Virtuais, você pode optar por usar uma única Zona de Disponibilidade em uma região ou várias zonas.
Você pode criar um conjunto de dimensionamento que usa Zonas de Disponibilidade com um dos seguintes métodos:
Use o Portal do Azure
O processo para criar um conjunto de dimensionamento que use uma Zona de Disponibilidade é o mesmo detalhado no artigo de introdução. Quando você seleciona uma região do Azure com suporte, pode criar um conjunto de dimensionamento em uma ou mais zonas disponíveis, conforme mostrado no exemplo a seguir:
O conjunto de escala e os recursos de suporte, como o balanceador de carga do Azure e o endereço IP público, são criados na zona única especificada por você.
Usar a CLI do Azure
O processo para criar um conjunto de dimensionamento que use uma Zona de Disponibilidade é o mesmo detalhado no artigo de introdução. Para usar Zonas de Disponibilidade, você deve criar seu conjunto de dimensionamento em uma região do Azure com suporte.
Adicione o parâmetro --zones
ao comando az vmss create e especifique qual zona usar (como zona 1, 2 ou 3).
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU Image> \
--upgrade-policy-mode automatic \
--admin-username azureuser \
--generate-ssh-keys \
--zones 1 2 3
Leva alguns minutos para criar e configurar todos os recursos e as VMs do conjunto de dimensionamento na zona especificada por você. Para obter um exemplo completo de um conjunto de dimensionamento com redundância de zona e recursos de rede, consulte este script CLI de exemplo
Usar PowerShell do Azure
Para usar Zonas de Disponibilidade, você deve criar seu conjunto de dimensionamento em uma região do Azure com suporte. Adicione o parâmetro -Zone
ao comando New-AzVmssConfig e especifique qual zona ou quais zonas usar (como zona 1, 2 ou 3).
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "EastUS2" `
-VMScaleSetName "myScaleSet" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-UpgradePolicy "Automatic" `
-Zone "1", "2", "3"
Usar modelos do Gerenciador de Recursos do Azure
O processo para criar um conjunto de dimensionamento que use uma Zona de Disponibilidade é o mesmo detalhado no artigo de introdução para Linux ou Windows.
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "myScaleSet",
"location": "East US 2",
"apiVersion": "2017-12-01",
"zones": [
"1",
"2",
"3"
]
}
Se você criar um endereço IP público ou um balanceador de carga, especifique a propriedade "sku": {"name":"Standard"}
para criar recursos de rede com redundância de zona. Você também precisa criar um grupo de segurança de rede e regras para permitir que qualquer tráfego. Para obter mais informações, consulte Visão geral do Azure Load Balancer Standard e Standard Load Balancer e Zonas de Disponibilidade.
Atualizar conjunto de dimensionamento para adicionar zonas de disponibilidade
Você pode modificar uma escala para expandir o conjunto de zonas sobre as quais as instâncias de VM serão distribuídas. A expansão permite que você aproveite o SLA de maior disponibilidade zonal (99,99%) em relação ao SLA de disponibilidade regional (99,95%). Ou expandir seu conjunto de dimensionamento para aproveitar as novas zonas de disponibilidade que não estavam disponíveis quando o conjunto de dimensionamento foi criado.
Esse recurso pode ser usado com a versão da API 2023-03-01 ou superior.
Expandir conjunto de dimensionamento para usar zonas de disponibilidade
Você pode atualizar o conjunto de dimensionamento para escalar horizontalmente instâncias para uma ou mais zonas de disponibilidade adicionais, até o número de zonas de disponibilidade compatíveis com a região. Para regiões que dão suporte a zonas, o número mínimo de zonas é 3.
Importante
Ao expandir o conjunto de dimensionamento para zonas adicionais, as instâncias originais não são migradas ou alteradas. Quando você escala horizontalmente, novas instâncias são criadas e distribuídas uniformemente entre as zonas de disponibilidade selecionadas. Os dados das instâncias originais não são migrados para as novas zonas. Quando você reduz horizontalmente o conjunto de dimensionamento, as instâncias regionais são priorizadas para remoção. Depois disso, as instâncias serão removidas com base na política de redução horizontal.
A expansão para um conjunto de dimensionamento zonal é feita em três etapas:
- Preparar-se para expansão zonal
- Atualizar o parâmetro de zonas no conjunto de dimensionamento
- Adicionar novas instâncias zonais e remover instâncias originais
Preparar-se para expansão zonal
Aviso
Esse recurso permite adicionar zonas ao conjunto de dimensionamento. Você não pode voltar para um conjunto de dimensionamento regional nem remover zonas depois que elas tiverem sido adicionadas.
Para se preparar para a expansão zonal:
- Verifique se você tem cota suficiente para o tamanho da VM na região selecionada a fim de lidar com mais instâncias.
- Verifique se o tamanho da VM e os tipos de disco que você está usando estão disponíveis em todas as zonas desejadas. Você pode usar a API de SKUs de Recursos de Computação para determinar quais tamanhos estão disponíveis em quais zonas
- Confirme se a configuração do conjunto de dimensionamento é válida para conjuntos de dimensionamento zonais:
platformFaultDomainCount
deve ser definido como 1 ou 5. Não há suporte para distribuição fixa com 2 ou 3 domínios de falha em implantações zonais.- Não há suporte para reservas de capacidade durante a expansão da zona. Depois que o conjunto de dimensionamento estiver totalmente zonal (sem instâncias regionais), você poderá adicionar um grupo de reserva de capacidade ao conjunto de dimensionamento.
- Não há suporte para implantações de Host Dedicado do Azure.
Atualizar o parâmetro de zonas no conjunto de dimensionamento
Atualize o conjunto de dimensionamento para alterar o parâmetro de zonas.
- Navegue até o conjunto de dimensionamento que você deseja atualizar
- Na guia Propriedades da página de aterrissagem do conjunto de dimensionamento, localize a propriedade Zona de disponibilidade e pressione Editar
- Na caixa de diálogo Editar Local, selecione as zonas desejadas
- Selecione Aplicar.
Adicionar novas instâncias zonais e remover instâncias originais
Escalar e reduzir horizontalmente de maneira manual
Atualize a capacidade do conjunto de dimensionamento para adicionar instâncias. A nova capacidade deve ser definida como a capacidade original mais o número de novas instâncias. Por exemplo, se o conjunto de dimensionamento tinha 5 instâncias regionais e você deseja escalar horizontalmente para ter três instâncias em cada uma das três zonas, defina a capacidade como 14.
Você pode atualizar o parâmetro de zonas e a capacidade do conjunto de dimensionamento no mesmo modelo do ARM ou chamada à API REST.
Quando estiver satisfeito com as novas instâncias que estiverem, reduz horizontalmente seu conjunto de dimensionamento para remover as instâncias regionais originais. Você pode excluir manualmente as instâncias regionais específicas ou reduzir horizontalmente a capacidade do conjunto de dimensionamento. Ao dimensionar por meio da redução da capacidade do conjunto de dimensionamento, a plataforma sempre preferirá remover as instâncias regionais e, em seguida, seguir a política de redução horizontal.
Limitações e problemas conhecidos
As instâncias originais não são migradas para as zonas recém-adicionadas. Sua carga de trabalho deve lidar com qualquer migração ou replicação de dados necessária.
Não há suporte para conjuntos de dimensionamento que executam o Service Fabric RP ou Serviço de Kubernetes do Azure.
Você não pode remover nem substituir zonas, apenas adicionar zonas
Você não pode atualizar de uma abrangência de zonas ou de um conjunto de dimensionamento zonal para um conjunto de dimensionamento regional.
platformFaultDomainCount
deve ser definido como 1 ou 5. Não há suporte para distribuição fixa com 2 ou 3 domínios de falha em implantações zonais.Não há suporte para reservas de capacidade durante a expansão da zona. Depois que o conjunto de dimensionamento estiver totalmente zonal (sem instâncias regionais), você poderá adicionar um grupo de reserva de capacidade ao conjunto de dimensionamento.
Não há suporte para implantações do Host Dedicado do Azure
Próximas etapas
Agora que você criou conjunto de dimensionamento em uma Zona de Disponibilidade, você pode aprender como Implantar aplicativos em Conjuntos de Dimensionamento de Máquinas Virtuais ou Usar o dimensionamento automático com Conjuntos de Dimensionamento de Máquinas Virtuais.