Tutorial: Criar e implantar máquinas virtuais altamente disponíveis com o CLI do AzureTutorial: Create and deploy highly available virtual machines with the Azure CLI

Neste tutorial, irá aprender a aumentar a disponibilidade e a fiabilidade das suas soluções de Máquina Virtual no Azure através de uma função chamada Conjuntos de Disponibilidade.In this tutorial, you learn how to increase the availability and reliability of your Virtual Machine solutions on Azure using a capability called Availability Sets. Os conjuntos de disponibilidade garantem que as VMs que implementa no Azure são distribuídas por vários clusters de hardware isolados.Availability sets ensure that the VMs you deploy on Azure are distributed across multiple isolated hardware clusters. Fazer isto garante que, se ocorrer uma falha de hardware ou software no Azure, apenas um subconjunto das suas VMs é afetado e que a solução global permanece disponível e operacional.Doing this ensures that if a hardware or software failure within Azure happens, only a subset of your VMs is impacted and that your overall solution remains available and operational.

Neste tutorial, ficará a saber como:In this tutorial, you learn how to:

  • Criar um conjunto de disponibilidadeCreate an availability set
  • Criar uma VM num conjunto de disponibilidadeCreate a VM in an availability set
  • Verificar os tamanhos de VM disponíveisCheck available VM sizes

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure hospeda Azure Cloud Shell, um ambiente de shell interativo que você pode usar por meio de seu navegador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell permite que você use bash o PowerShell ou o para trabalhar com os serviços do Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Você pode usar os comandos pré-instalados Cloud Shell para executar o código neste artigo sem precisar instalar nada em seu ambiente local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Para iniciar o Azure Cloud Shell:To launch Azure Cloud Shell:

OpçãoOption Exemplo/linkExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de try não copia automaticamente o código para Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo de teste para Azure Cloud Shell
Vá para https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir Cloud Shell em seu navegador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell em uma nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus superior direita na portal do Azure.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo em Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Abra o Cloud Shell.Open Cloud Shell.
  2. Selecione o botão copiar em um bloco de código para copiar o código.Select the Copy button on a code block to copy the code.
  3. Cole o código na sessão de Cloud shell com Ctrl+Shift+v no Windows e Linux, ou cmd+Shift+v no MacOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Pressione Enter para executar o código.Press Enter to run the code.

Se optar por instalar e utilizar a CLI localmente, este tutorial requer que execute uma versão da CLI do Azure que seja a 2.0.30 ou posterior.If you choose to install and use the CLI locally, this tutorial requires that you are running the Azure CLI version 2.0.30 or later. Executar az --version para localizar a versão.Run az --version to find the version. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.If you need to install or upgrade, see Install Azure CLI.

Visão geral da alta disponibilidade no AzureHigh Availability in Azure overview

A alta disponibilidade no Azure pode ser criada de várias maneiras diferentes.High availability in Azure can be created in many different ways. Duas opções que você tem são conjuntos de disponibilidade e zonas de disponibilidade.Two options that you have are availability sets and availability zones. Usando conjuntos de disponibilidade, suas VMs serão protegidas contra falhas que podem ocorrer em um datacenter.By using availability sets, your VMs will be protected from failures that may happen within a datacenter. Isso inclui falhas de hardware e falhas de software do Azure.This includes hardware failures and Azure software failures. Usando zonas de disponibilidade, suas VMs serão colocadas em infraestrutura fisicamente separada sem recursos compartilhados e, portanto, serão protegidas de falhas de datacenter inteiras.By using availability zones, your VMs will be placed on physically separate infrastructure with no shared resources, and will therefore be protected from entire datacenter failures.

Use conjuntos de disponibilidade ou Zonas de Disponibilidade quando desejar implantar soluções confiáveis baseadas em VM no Azure.Use Availability Sets or Availability Zones when you want to deploy reliable VM-based solutions within Azure.

Descrição geral do conjunto de disponibilidadeAvailability set overview

Um Conjunto de Disponibilidade é uma função de agrupamento lógico que pode utilizar no Azure para garantir que os recursos de VM que nele colocar estão isolados uns dos outros quando são implementados num datacenter do Azure.An Availability Set is a logical grouping capability that you can use in Azure to ensure that the VM resources you place within it are isolated from each other when they are deployed within an Azure datacenter. O Azure garante que as VMs que colocar num Conjunto de Disponibilidade são executadas em vários servidores físicos, suportes de computação, unidades de armazenamento e comutadores de rede.Azure ensures that the VMs you place within an Availability Set run across multiple physical servers, compute racks, storage units, and network switches. Se ocorrer uma falha de software do Azure ou de hardware, apenas um subconjunto das suas VMs será afetado, e a aplicação global mantém-se e continua disponível para os seus clientes.If a hardware or Azure software failure occurs, only a subset of your VMs are impacted, and your overall application stays up and continues to be available to your customers. Os Conjuntos de Disponibilidade são uma função essencial quando pretende criar soluções cloud fiáveis.Availability Sets are an essential capability when you want to build reliable cloud solutions.

Consideremos uma solução típica baseada em VM em que poderá ter quatro servidores Web de front-end e utilizar duas VMs de back-end que alojam uma base de dados.Let’s consider a typical VM-based solution where you might have four front-end web servers and use two back-end VMs that host a database. Com o Azure, irá definir dois conjuntos de disponibilidade antes de implementar as suas VMs: um conjunto de disponibilidade para a camada "Web" e um conjunto de disponibilidade para a camada de "base de dados".With Azure, you’d want to define two availability sets before you deploy your VMs: one availability set for the “web” tier and one availability set for the “database” tier. Quando cria uma nova VM, pode especificar o conjunto de disponibilidade como um parâmetro para o comando az vm create, e o Azure garante automaticamente que as VMs que criar no conjunto disponível ficam isoladas em vários recursos de hardware físico.When you create a new VM you can then specify the availability set as a parameter to the az vm create command, and Azure automatically ensures that the VMs you create within the available set are isolated across multiple physical hardware resources. Se o hardware físico em execução por uma das VMs do Servidor Web ou Servidor de Base de Dados tiver um problema, sabe que as outras instâncias das VMs do Servidor Web e de Base de Dados permanecem em execução porque estão em hardware diferente.If the physical hardware that one of your Web Server or Database Server VMs is running on has a problem, you know that the other instances of your Web Server and Database VMs remain running because they are on different hardware.

Visão geral da zona de disponibilidadeAvailability zone overview

Zonas de Disponibilidade é uma oferta de alta disponibilidade que protege seus aplicativos e dados de falhas do datacenter.Availability Zones is a high-availability offering that protects your applications and data from datacenter failures. As zonas de disponibilidade são localizações físicas únicas dentro de uma região do Azure.Availability Zones are unique physical locations within an Azure region. Cada zona é constituída por um ou mais datacenters equipados com energia, refrigeração e redes.Each zone is made up of one or more datacenters equipped with independent power, cooling, and networking. Para garantir a resiliência, há um mínimo de três zonas separadas em todas as regiões habilitadas.To ensure resiliency, there is a minimum of three separate zones in all enabled regions. A separação física de Zonas de Disponibilidade dentro de uma região protege aplicativos e dados de falhas do datacenter.The physical separation of Availability Zones within a region protects applications and data from datacenter failures. Os serviços com redundância de zona replicam seus aplicativos e dados em Zonas de Disponibilidade para proteger contra pontos únicos de falha.Zone-redundant services replicate your applications and data across Availability Zones to protect from single-points-of-failure. Com o Zonas de Disponibilidade, o Azure oferece um SLA de tempo de atividade de VM de 99,99% melhor do setor.With Availability Zones, Azure offers an industry-best 99.99% VM uptime SLA.

Semelhante aos conjuntos de disponibilidade, vamos considerar uma solução típica baseada em VM em que você pode ter quatro servidores Web front-end e usar duas VMs de back-end que hospedam um banco de dados.Similar to availability sets, let’s consider a typical VM-based solution where you might have four front-end web servers and use two back-end VMs that host a database. Semelhante aos conjuntos de disponibilidade, você desejará implantar suas VMs em duas zonas de disponibilidade separadas: uma zona de disponibilidade para a camada "Web" e uma zona de disponibilidade para a camada "banco de dados".Similar to availability sets, you’ll want to deploy your VMs in two separate availability zones: one availability zone for the “web” tier and one availability zone for the “database” tier. Quando você cria uma nova VM e especifica a zona de disponibilidade como um parâmetro para o comando AZ VM Create, o Azure garante automaticamente que as VMs criadas sejam isoladas entre zonas de disponibilidade totalmente diferentes.When you create a new VM and specify the availability zone as a parameter to the az vm create command, Azure automatically ensures that the VMs you create are isolated across entirely different availability zones. Se o datacenter inteiro em que um de seus servidores Web ou VMs do servidor de banco de dados estiver em execução tiver um problema, você saberá que as outras instâncias do servidor Web e das VMs de banco de dados permanecerão em execução porque estão em execução em datacenters completamente separados.If the entire datacenter that one of your Web Server or Database Server VMs is running on has a problem, you know that the other instances of your Web Server and Database VMs remain running because they are running on completely separate datacenters.

Criar um conjunto de disponibilidadeCreate an availability set

Pode criar um conjunto de disponibilidade com az vm availability-set create.You can create an availability set using az vm availability-set create. Neste exemplo, o número de domínios de atualização e com falha é definido como 2 para o conjunto de disponibilidade designado myAvailabilitySet no grupo de recursos myResourceGroupAvailability.In this example, the number of update and fault domains is set to 2 for the availability set named myAvailabilitySet in the myResourceGroupAvailability resource group.

Em primeiro lugar, crie um grupo de recursos com az group create e, em seguida, crie o conjunto de disponibilidade:First, create a resource group with az group create, then create the availability set:

az group create --name myResourceGroupAvailability --location eastus

az vm availability-set create \
    --resource-group myResourceGroupAvailability \
    --name myAvailabilitySet \
    --platform-fault-domain-count 2 \
    --platform-update-domain-count 2

Os Conjuntos de Disponibilidade permitem isolar os recursos em domínios com falha e domínios de atualização.Availability Sets allow you to isolate resources across fault domains and update domains. Um domínio com falha representa uma coleção isolada do servidor + rede + recursos de armazenamento.A fault domain represents an isolated collection of server + network + storage resources. No exemplo anterior, o conjunto de disponibilidade é distribuído por, pelo menos, dois domínios com falha quando as VMs forem implementadas.In the preceding example, the availability set is distributed across at least two fault domains when the VMs are deployed. O conjunto de disponibilidade é também distribuído por dois domínios de atualização.The availability set is also distributed across two update domains. Dois domínios de atualização garantem que, quando o Azure executa as atualizações de software, os recursos da VM ficam isolados, impedindo assim que todo o software em execução na VM seja atualizado ao mesmo tempo.Two update domains ensure that when Azure performs software updates, the VM resources are isolated, preventing all the software that runs on the VM from being updated at the same time.

Criar VMs num conjunto de disponibilidadeCreate VMs inside an availability set

As VMs têm de ser criadas no conjunto de disponibilidade para garantir que são distribuídas corretamente pelo hardware.VMs must be created within the availability set to make sure they are correctly distributed across the hardware. Não é possível adicionar uma VM existente a um conjunto de disponibilidade depois de ter sido criado.An existing VM cannot be added to an availability set after it is created.

Quando uma VM for criada com az vm create, utilize o parâmetro --availability-set para especificar o nome do conjunto de disponibilidade.When a VM is created with az vm create, use the --availability-set parameter to specify the name of the availability set.

for i in `seq 1 2`; do
   az vm create \
     --resource-group myResourceGroupAvailability \
     --name myVM$i \
     --availability-set myAvailabilitySet \
     --size Standard_DS1_v2  \
     --vnet-name myVnet \
     --subnet mySubnet \
     --image UbuntuLTS \
     --admin-username azureuser \
     --generate-ssh-keys
done

Existem agora duas máquinas virtuais no conjunto de disponibilidade.There are now two virtual machines within the availability set. Dado que se encontram no mesmo conjunto de disponibilidade, o Azure garante que as VMs e todos os respetivos recursos (incluindo os discos de dados) são distribuídos por hardware físico isolado.Because they are in the same availability set, Azure ensures that the VMs and all their resources (including data disks) are distributed across isolated physical hardware. Esta distribuição ajuda a garantir uma disponibilidade muito mais elevada da solução global de VM.This distribution helps ensure much higher availability of the overall VM solution.

A distribuição do conjunto de disponibilidade pode ser visualizada no portal, ao aceder a Grupos de Recursos > myResourceGroupAvailability > myAvailabilitySet.The availability set distribution can be viewed in the portal by going to Resource Groups > myResourceGroupAvailability > myAvailabilitySet. As VMs estão distribuídas pelos dois domínios de atualização e com falha, conforme apresentado no seguinte exemplo:The VMs are distributed across the two fault and update domains, as shown in the following example:

Conjunto de disponibilidade no portal

Verificar os tamanhos de VM disponíveisCheck for available VM sizes

É possível adicionar posteriormente VMs adicionais ao conjunto de disponibilidade, quando os tamanhos da VM estiverem disponíveis no hardware.Additional VMs can be added to the availability set later, where VM sizes are available on the hardware. Utilize az vm availability-set list-sizes para listar todos os tamanhos disponíveis no hardware de cluster para o conjunto de disponibilidade:Use az vm availability-set list-sizes to list all the available sizes on the hardware cluster for the availability set:

az vm availability-set list-sizes \
     --resource-group myResourceGroupAvailability \
     --name myAvailabilitySet \
     --output table

Passos seguintesNext steps

Neste tutorial, ficou a saber como:In this tutorial, you learned how to:

  • Criar um conjunto de disponibilidadeCreate an availability set
  • Criar uma VM num conjunto de disponibilidadeCreate a VM in an availability set
  • Verificar os tamanhos de VM disponíveisCheck available VM sizes

Avance para o tutorial seguinte para saber mais sobre os conjuntos de dimensionamento de máquinas virtuais.Advance to the next tutorial to learn about virtual machine scale sets.