Executar uma VM do Linux no Azure

Serviço de Backup do Azure
Azure Bastion
Armazenamento do Blobs do Azure
Azure Resource Manager
Armazenamento do Azure
Máquinas Virtuais do Azure

Para provisionar uma VM (máquina virtual) em Azure, você precisa de mais componentes do que a própria VM. Uma implantação completa inclui recursos de rede e armazenamento. Este artigo descreve as práticas recomendadas para executar uma VM segura do Linux em Azure.

Arquitetura

Diagrama que mostra uma implantação de VM no Azure.

Carrege um arquivo Visio desta arquitetura.

Workflow

Este exemplo mostra uma implantação básica que usa os componentes necessários para uma única VM. A VM pode executar cargas de trabalho e acessar a Internet pública, evitando a exposição direta a ameaças externas. Nessa arquitetura:

  • As cargas de trabalho na VM não têm exposição direta à Internet. O acesso é restrito a recursos da mesma rede virtual ou de uma rede virtual emparelhada, como em uma configuração hub-and-spoke.

  • Você gerencia a VM usando Azure Bastion por meio do Secure Shell (SSH). Não há acesso direto da Internet pública à VM para gerenciamento.

  • O gateway NAT (Tradução de Endereços de Rede) e seu endereço IP público associado fornecem acesso de saída à Internet externa.

Componentes

Essa arquitetura usa os seguintes componentes.

Grupo de recursos

Um grupo resource é um contêiner lógico que contém recursos Azure relacionados. Os grupos de recursos permitem implantar, monitorar e excluir recursos relacionados juntos e acompanhar seus custos como uma unidade.

Em geral, agrupe recursos por ciclo de vida compartilhado e propriedade. Use nomes descritivos e consistentes para recursos para torná-los mais fáceis de identificar e entender. Para obter mais informações, consulte Definir sua convenção de nomenclatura.

Máquina virtual

Você pode provisionar uma VM de uma lista de imagens publicadas, uma imagem gerenciada personalizada ou um VHD (disco rígido virtual) carregado para Armazenamento de Blobs do Azure. Azure dá suporte a distribuições populares do Linux, incluindo Debian, Red Hat Enterprise Linux (RHEL) e Ubuntu. Para saber mais, consulte distribuições endossadas do Linux.

Azure fornece muitos tamanhos de VM diferentes. Se você mover uma carga de trabalho existente para Azure, comece com o tamanho da VM que mais corresponde aos servidores locais. Depois de implantar a VM, meça o desempenho da carga de trabalho real em termos de operações de CPU, memória e saída de entrada por segundo (IOPS) e ajuste o tamanho conforme necessário.

Escolha uma região Azure mais próxima de seus usuários ou clientes internos. Nem todos os tamanhos de VM estão disponíveis em todas as regiões. Para obter mais informações, consulte Azure geographies. Para obter uma lista dos tamanhos de VM disponíveis em uma região específica, execute o seguinte comando no CLI do Azure:

az vm list-sizes --location <location>

Para obter informações sobre como escolher uma imagem publicada de VM, consulte Localizar informações de imagem do Azure Marketplace.

Discos

Para obter o melhor desempenho de E/S (saída de entrada de disco), recomendamos SSDs Premium, que armazenam dados em SSDs (unidades de estado sólido). A capacidade do disco provisionado determina custo, IOPS e taxa de transferência (taxa de transferência de dados). Considere todos os três fatores ao selecionar um tamanho de disco. Os SSDs Premium incluem bursting gratuito, o que ajuda você a atender aos picos de demanda sem superdimensionar a capacidade e reduz o custo da capacidade não utilizada quando combinado com o entendimento dos padrões da carga de trabalho.

Observação

Discos Premium SSD v2 e Ultra só podem ser usados para discos de dados. Eles não são compatíveis com discos de sistema operacional (SO).

O Managed Disks simplifica o gerenciamento de disco cuidando do armazenamento para você. Os discos gerenciados não exigem uma conta de armazenamento. Você define o tamanho e o tipo de disco, e ele é implementado como um recurso altamente disponível. Os discos gerenciados também reduzem os custos fornecendo o desempenho necessário sem superprovisionamento, o que ajuda você a evitar pagar pela capacidade provisionada não utilizada.

Por padrão, o disco do sistema operacional é um disco gerenciado armazenado em Armazenamento em Disco do Azure, portanto, ele persiste mesmo quando o computador host está inativo. Para cargas de trabalho sem estado, em que se deseja provisionamento rápido e não se deseja persistência do sistema operacional, use discos efêmeros do sistema operacional. Esses discos colocam a imagem do sistema operacional no armazenamento local do host da VM em vez do Armazenamento do Azure remoto, o que reduz a latência de leitura, acelera a recriação da imagem e elimina o custo dos discos gerenciados. No entanto, todos os dados em um disco do sistema operacional efêmero são perdidos ao parar (desalocar), reimagem ou eventos de recuperação de manutenção do host. Discos de SO efêmeros não dão suporte a instantâneos ou ao Backup do Azure. Use discos do sistema operacional efêmero somente quando as VMs forem totalmente reimplantáveis através de automação.

Por padrão, muitas imagens do Linux não configuram espaço de swap. Se sua carga de trabalho exigir swap, crie-o no disco temporário usando cloud-init, em vez de no disco do sistema operacional ou em um disco de dados.

Recomendamos que você crie um ou mais discos de dados para os dados do aplicativo. Os discos de dados são discos gerenciados persistentes apoiados pelo Armazenamento.

Quando você cria um disco, ele não é formatado. Entre na VM para formatar o disco. No shell do Linux, os discos de dados são exibidos como /dev/sdc, /dev/sdde letras posteriores na série. Você pode executar lsblk para listar os dispositivos de bloco, incluindo os discos. Para usar um disco de dados, crie uma partição e o sistema de arquivos e monte o disco. Por exemplo:

# Create a partition.

sudo fdisk /dev/sdc     # Enter 'n' to partition, 'w' to write the change.

# Create a file system.

sudo mkfs -t ext3 /dev/sdc1

# Mount the drive.

sudo mkdir /data1
sudo mount /dev/sdc1 /data1

Quando você adiciona um disco de dados, uma ID de LUN (número de unidade lógica) é atribuída ao disco. Você também pode especificar a ID do LUN se, por exemplo, estiver substituindo um disco e quiser manter a mesma ID do LUN ou se tiver um aplicativo que procure uma ID lun específica. No entanto, as IDs LUN devem ser exclusivas para cada disco.

Para discos de armazenamento Premium, talvez você queira alterar o agendador de E/S para otimizar o desempenho em SSDs. Uma recomendação comum é usar o agendador NOOP (Sem Operação) para SSDs, mas é necessário usar uma ferramenta como iostat para monitorar o desempenho de E/S de disco para sua carga de trabalho.

Muitas VMs são criadas com um disco temporário, que é armazenado em uma unidade física no computador host. Ele não é salvo no armazenamento e pode ser excluído durante reinicializações e outros eventos do ciclo de vida da VM. Use esse disco somente para dados temporários, como arquivos de paginação ou de permuta. Para VMs do Linux, o disco temporário é /dev/disk/azure/resource-part1 e é montado em /mnt/resource ou /mnt.

Rede

Os componentes de rede incluem os seguintes recursos:

  • Rede virtual: Cada VM é implantada em uma rede virtual que é segmentada em sub-redes.

  • Placa de adaptador de rede (NIC): A NIC conecta a VM à rede virtual e manipula todo o tráfego de entrada e saída. Cada tamanho de VM define um número máximo de NICs.

  • Endereço IP público: Um endereço IP público pode ser usado para se comunicar com a VM de fora Azure via SSH. No entanto, essa opção é desencorajada porque é um risco potencial à segurança.

    Aviso

    Evite anexar um endereço IP público diretamente a uma VM. Faça isso apenas em circunstâncias extremas e inclua outras medidas de segurança, como o uso de NSGs (grupos de segurança de rede) para filtrar o tráfego.

    Para obter acesso de gerenciamento a uma VM, use Azure Bastion para acesso SSH baseado em navegador ou conecte-se privadamente por meio de uma VPN ou Azure ExpressRoute.

    • Esse endereço IP público pode ser dinâmico ou estático. O padrão é dinâmico. Reserve um endereço IP estático quando precisar de um endereço IP fixo que não seja alterado, por exemplo, se precisar criar um registro DNS 'A' ou adicionar o endereço IP a uma lista segura.

    • Você também pode criar um FQDN (nome de domínio totalmente qualificado) para o endereço IP. Em seguida, é possível registrar um registro CNAME no DNS que aponta para o FQDN. Para obter mais informações, consulte Criar um nome de domínio totalmente qualificado para uma VM.

  • NSG: Use NSGs para permitir ou negar o tráfego de rede para VMs e sub-redes. Associe-as às sub-redes ou a NICs individuais conectadas às VMs.

    Todos os NSGs contêm um conjunto de regras de segurança padrão, incluindo uma regra que bloqueia todo o tráfego de entrada da Internet. Você não pode excluir as regras padrão, mas pode substituí-las por outras regras. Por exemplo, você pode criar regras que permitem o tráfego de entrada da Internet para portas específicas, como a porta 443 para HTTPS.

  • Gateway da NAT (tradução de endereço de rede) do Azure: os gateways da NAT do Azure permitem que todas as instâncias em uma sub-rede privada se conectem à Internet enquanto permanecem totalmente privadas. Somente os pacotes que chegam como pacotes de resposta a uma conexão de saída podem passar por um gateway da NAT. Conexões de entrada não solicitadas da Internet não são permitidas.

    Observação

    Para melhorar a segurança padrão, o acesso implícito à Internet de saída está sendo preterido para todas as novas redes virtuais. Você precisa configurar explicitamente a conectividade de saída com a Internet por meio de outros recursos, como NAT Gateway, Azure Standard Load Balancers ou firewalls. Para obter mais informações, consulte Acesso de saída padrão no Azure.

  • Azure Bastion:Azure Bastion é uma solução de PaaS (plataforma como serviço) totalmente gerenciada que fornece acesso seguro a VMs por meio de endereços IP privados. Com essa configuração, as VMs não precisam de um endereço IP público que as exponha à Internet, o que aumenta sua postura de segurança. Azure Bastion fornece conectividade segura do PROTOCOLO RDP (Protocolo Área de Trabalho Remota) ou SSH para suas VMs diretamente pelo TLS (Transport Layer Security) usando vários métodos, incluindo o portal Azure ou clientes nativos de SSH ou RDP.

Operações

Esta seção aborda as principais práticas operacionais para gerenciar uma VM linux em Azure.

  • SSH: Antes de criar uma VM do Linux, gere um par de chaves pública-privada RSA de 2048 bits. Use o arquivo de chave pública ao criar a VM. Para obter mais informações, consulte Criar e usar um par de chaves pública-privada SSH.

  • Diagnostics: Ative o monitoramento e os diagnósticos, incluindo métricas básicas de integridade, logs da infraestrutura de diagnósticos e diagnósticos de inicialização. O diagnóstico de inicialização pode ajudá-lo a diagnosticar a falha de inicialização se a VM entrar em um estado não inicializável. Armazene os registros de diagnóstico em uma Conta de Armazenamento. Uma conta de armazenamento padrão com redundância local (LRS) é suficiente para logs de diagnóstico. Para obter mais informações, consulte As práticas recomendadas para monitoramento e diagnóstico.

  • Disponibilidade:a manutenção planejada ou o tempo de inatividade não planejado podem afetar sua VM. Você pode usar logs de reinicialização de VM para determinar se a manutenção planejada causou uma reinicialização da VM. Para maior disponibilidade, implante várias VMs entre zonas de disponibilidade em uma região. Essa implantação fornece um SLA (contrato de nível de serviço) mais alto. Quando não há suporte para zonas de disponibilidade, os conjuntos de disponibilidade podem ajudar a fornecer proteção contra falhas de host ou atualizações de host. No entanto, as zonas de disponibilidade são a opção recomendada sempre que possível.

  • Backups: Para proteger contra perda acidental de dados, use o serviço Backup do Azure para fazer backup de suas VMs no armazenamento. Dependendo da região, você pode usar armazenamento com redundância geográfica ou armazenamento com redundância de zona para backups. Backup do Azure fornece backups consistentes com o aplicativo. Para cargas de trabalho sensíveis ao desempenho ou distribuições especializadas do Linux que não dão suporte a agentes de backup tradicionais, use o recurso de backup consistente de falha de vários discos sem agente para automatizar a proteção de backup sem afetar o desempenho do aplicativo.

  • Parar uma VM: Azure faz uma distinção entre estados parados e desalocados. Você será cobrado quando o status da VM for interrompido, mas não quando a VM for desalocada. No portal Azure, o botão Stop desaloca a VM. No entanto, se você desligar a VM por meio do sistema operacional enquanto estiver conectado, a VM será interrompida, mas não desalocada e, portanto, você ainda deverá pagar.

  • Excluindo uma VM: Se você excluir uma VM, poderá optar por excluir ou manter seus discos, o que permite manter os dados. No entanto, você ainda paga pelos discos. Você pode excluir discos gerenciados como qualquer outro recurso de Azure. Para evitar a exclusão acidental, use um resource lock para bloquear todo o grupo de recursos ou bloquear recursos individuais, como uma VM.

Alternatives

  • Os Conjuntos de Dimensionamento de Máquinas Virtuais do Azure oferecem a capacidade de distribuir cargas de trabalho entre nós. Cargas de trabalho essenciais para operações de negócios nunca devem depender de uma única VM. Você pode adicionar ou remover instâncias de VM automaticamente com base na demanda e escalar horizontalmente em momentos de maior tráfego ou reduzir horizontalmente quando o tráfego estiver menor para ajudar a minimizar os custos.

  • Azure Load Balancer distribui o tráfego entre várias VMs ou um conjunto de dimensionamento de máquinas virtuais. Ele também pode ser usado como uma alternativa a um gateway NAT para permitir o acesso a uma carga de trabalho pela internet, ao mesmo tempo que oferece suporte ao acesso de saída.

  • O Gateway de Aplicativo fornece funcionalidade de balanceamento de carga para o Azure Load Balancer para cargas de trabalho HTTP/HTTPS em uma região Azure.

  • Para uma implantação em nível empresarial, consulte Arquitetura de linha de base do Máquinas Virtuais do Azure em uma zona de destino do Azure.

Detalhes do cenário

O diagrama anterior mostra uma implantação básica de uma única VM em uma rede virtual. Esse cenário é útil para fornecer uma carga de trabalho não crítica para usuários somente internos.

Possíveis casos de uso

Essa arquitetura se adapta a um aplicativo simples que não precisa de exposição pública à Internet e pode tolerar tempo de inatividade ocasional. Uma ferramenta de relatório interna básica é um caso de uso típico.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que você pode usar para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Well-Architected Framework.

Fiabilidade

A confiabilidade ajuda a garantir que seu aplicativo possa cumprir os compromissos que você faz aos seus clientes. Para obter mais informações, consulte Lista de verificação de revisão de design para confiabilidade.

Esta arquitetura de exemplo usa uma única VM, portanto, ela fornece um nível mínimo de confiabilidade. Qualquer problema com a VM ou com o host em que ela é executada causa uma interrupção e torna as cargas de trabalho hospedadas indisponíveis. Para qualquer carga de trabalho que precise de maior disponibilidade, implante várias VMs que contenham a mesma carga de trabalho e coloque essas instâncias atrás de uma solução de balanceamento de carga apropriada. Se eles estiverem localizados na mesma região, implante essas VMs em zonas de disponibilidade (onde houver suporte) e adicione-as ao back-end de um Azure Standard Load Balancer ou um Gateway de Aplicativo se a carga de trabalho for baseada em HTTP/HTTPS. Essa arquitetura permite que a carga de trabalho permaneça disponível se uma única VM no back-end falhar.

Os conjuntos de dimensionamento de máquinas virtuais são outra opção para ajudar a simplificar o gerenciamento de cargas de trabalho de vários nós que precisam da capacidade de dimensionar automaticamente o número de instâncias dentro ou fora, dependendo de qualquer uma das várias métricas, como CPU e consumo de memória.

Alta disponibilidade e recuperação de desastre (HA/DR)

Para reduzir o raio de explosão e melhorar a resiliência, implante a carga de trabalho em várias regiões e use as diretrizes da zona de destino Azure. Essa implantação pode estar configurada como ativa-passiva, com failover para a região secundária se a região primária ficar indisponível, ou como uma arquitetura ativa-ativa, em que ambas as regiões atendem ao tráfego dos consumidores.

Para obter um exemplo, consulte o aplicativo Web Multitier criado para alta disponibilidade e recuperação de desastre. O exemplo nesse artigo usa Azure Site Recovery para replicar os discos de VMs individuais para uma região secundária. Você pode usar o Site Recovery para executar o failover dessas VMs para a região secundária com um baixo objetivo de ponto de recuperação (RPO) e um baixo objetivo de tempo de recuperação (RTO).

Avalie sua arquitetura para atender aos requisitos de HA/DR em todos os componentes, não apenas nas VMs. Em todas essas decisões, inclua considerações como rede, identidade e dados.

Segurança

A segurança fornece proteções contra ataques deliberados e o uso indevido de seus valiosos dados e sistemas. Para obter mais informações, consulte Lista de verificação de revisão de design para segurança.

Considere estes pontos ao desenvolver sua arquitetura:

  • Use Microsoft Defender para Nuvem para obter uma visão central do estado de segurança de seus recursos de Azure. Defender para Nuvem monitora possíveis problemas de segurança e fornece uma visão abrangente da integridade de segurança de sua implantação. Configure o Defender para Nuvem para cada assinatura do Azure e habilite a coleta de dados de segurança. Defender para Nuvem verifica automaticamente as VMs criadas nessa assinatura.

    • Gerenciamento de patch: Quando habilitado, Defender para Nuvem identifica atualizações críticas e de segurança ausentes.

    • Antimalware: Quando habilitado, Defender para Nuvem verifica se o software antimalware está instalado. Você também pode usar Defender para Nuvem para instalar software antimalware diretamente no portal do Azure.

  • Use o RBAC (controle de acesso baseado em função) do Azure para controlar o acesso a recursos do Azure. Com Azure RBAC, você concede aos usuários apenas as permissões necessárias para que eles façam seu trabalho. Por exemplo, a função Leitor pode exibir Azure recursos, mas não pode criá-los, gerenciá-los ou excluí-los. Algumas permissões são específicas para um tipo de recurso Azure. Por exemplo, a função Colaborador de Máquina Virtual pode reiniciar ou desalocar uma VM, redefinir a senha de administrador e criar uma nova VM. Outras funções internas que podem ser úteis para essa arquitetura incluem Usuário do DevTest Labs e Colaborador de Rede.

    Observação

    Azure RBAC não limita as ações que um usuário conectado a uma VM pode executar. O tipo de conta no sistema operacional convidado determina essas permissões.

  • Use audit logs para ver ações de provisionamento e outros eventos de VM.

  • Habilite a criptografia no host para obter criptografia de ponta a ponta para seus dados de VM, incluindo discos temporários e caches de disco. A criptografia no host manipula a criptografia na infraestrutura de host da VM e não consome recursos de CPU de VM, ao contrário da criptografia baseada em convidado. Você pode usar chaves gerenciadas por customer com Azure Key Vault para discos de dados e sistema operacional persistentes. Discos temporários e discos efêmeros do SO são criptografados com chaves gerenciadas pela plataforma. Verifique se o tamanho VM selecionado dá suporte à criptografia no host antes de provisionar a VM.

Otimização de custos

A Otimização de Custos concentra-se em encontrar maneiras de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Lista de verificação de revisão de design para otimização de custos.

Há várias opções para tamanhos de VM, dependendo do uso e da carga de trabalho. O intervalo inclui a opção mais econômica da série Bs para as VMs de GPU mais recentes otimizadas para machine learning. ** Para obter informações sobre as opções disponíveis, consulte Preços de Azure VM Linux.

Para cargas de trabalho previsíveis, use Reservas do Azure e plano de economia do Azure para computação. Um contrato de um ou três anos pode reduzir substancialmente os custos de computação em comparação com as taxas pagas conforme o uso. Para cargas de trabalho sem tempo previsível de conclusão ou consumo de recursos, considere a opção Pagamento conforme o uso.

As VMs Spot do Azure usam capacidade do Azure sobressalente a taxas significativamente reduzidas. O Azure pode desalojar VMs Spot com pouco aviso prévio quando precisar recuperar a capacidade, portanto elas só são adequadas para cargas de trabalho tolerantes a falhas sem prazo rígido para conclusão. Considere VMs Spot para:

  • Cenários de computação de alto desempenho, processamento em lotes ou aplicativos de renderização visual.
  • Ambientes de teste, incluindo cargas de trabalho de integração contínua e entrega contínua.
  • Aplicativos sem estado de grande escala.

Use a calculadora de preços Azure para estimar os custos.

Excelência Operacional

A Excelência Operacional abrange os processos de operações que implantam um aplicativo e o mantêm em execução em produção. Para obter mais informações, consulte Lista de verificação de revisão de design para Excelência Operacional.

Use modelos de IaC (infraestrutura como código) para provisionar Azure recursos e suas dependências. Você pode escrever esses modelos usando Bicep, Azure Resource Manager ou Terraform. Esses modelos podem ser usados como parte de um pipeline de CI/CD (integração contínua e implantação contínua) por meio da implantação automatizada. Essa abordagem fornece controle de versão sobre sua arquitetura, garante a consistência entre ambientes e impõe reprodutibilidade, segurança e conformidade.

Para ajudar a monitorar e diagnosticar problemas, habilite os logs de diagnóstico em seus recursos e envie-os para Azure Monitor para análise e otimização. Você pode usar esses logs para implementar alertas e notificações sobre eventos críticos e, em alguns casos, permitir a remediação automatizada ou o registro de chamados no seu sistema de Gerenciamento de Serviços de TI (ITSM).

Eficiência de desempenho

A Eficiência de Desempenho refere-se à capacidade da carga de trabalho de dimensionar para atender às demandas do usuário com eficiência. Para obter mais informações, consulte a Lista de Verificação de Design para Eficiência de Desempenho.

A Eficiência de Desempenho ajuda a minimizar a latência, obter arquiteturas escalonáveis, otimizar a utilização de recursos e melhorar continuamente o desempenho do sistema. As decisões tomadas em relação à arquitetura da carga de trabalho, ao tamanho da VM e às configurações de disco podem afetar muito o desempenho da carga de trabalho. Fazer as escolhas certas pode impedir a necessidade de rearquitar a solução no futuro, adicionar flexibilidade e economizar custos.

Considere estes pontos ao desenvolver sua arquitetura:

  • Use conjuntos de dimensionamento de máquinas virtuais se a carga de trabalho tiver uma carga dinâmica. Por exemplo, expanda horizontalmente em períodos de alto tráfego e, em seguida, reduza horizontalmente quando o tráfego diminuir. Essa abordagem garante o poder de processamento adequado, mantendo os custos sob controle.

  • Escolha as SKUs de disco e VM apropriadas para atender ao IOPS necessário durante o processamento. Configure o cache para melhorar ainda mais o desempenho.

  • Se sua carga de trabalho for extraordinariamente sensível à latência, use PPGs (grupos de posicionamento por proximidade) para garantir que várias VMs estejam localizadas fisicamente próximas umas das outras para obter um melhor desempenho. Você também pode combinar PPGs com conjuntos de disponibilidade para obter baixa latência e alta disponibilidade em um único datacenter físico.

  • Sempre que possível, habilite a rede acelerada para minimizar a latência entre os componentes.

  • Criar arquitetura de rede para minimizar saltos desnecessários.

  • Use Azure Monitor e outras ferramentas para analisar continuamente as métricas e criar linhas de base de desempenho atualizadas. Use as informações de desempenho para determinar onde implementar alterações e, em seguida, testar essas linhas de base.

Contributors

A Microsoft mantém este artigo. Os colaboradores a seguir escreveram originalmente o artigo.

Autor principal:

Para ver perfis de LinkedIn não públicos, entre em LinkedIn.

Próximas etapas