Como criar uma máquina virtual Linux no Azure com várias placas de adaptador de rede

Aplicável a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Este artigo fornece detalhes sobre como criar uma VM com várias NICs com a CLI do Azure.

Criar recursos de suporte

Instale a CLI do Azure mais recente do Azure e faça logon em uma conta do Azure usando az login.

Nos exemplos a seguir, substitua os nomes de parâmetro de exemplo com seus próprios valores. Os nomes de parâmetro de exemplo incluem myResourceGroup, mystorageaccount e myVM.

Primeiro, crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:

az group create --name myResourceGroup --location eastus

Crie a rede virtual com az network vnet create. O exemplo a seguir cria uma rede virtual chamada myVnet e uma sub-rede chamada mySubnetFrontEnd:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 10.0.0.0/16 \
    --subnet-name mySubnetFrontEnd \
    --subnet-prefix 10.0.1.0/24

Crie uma sub-rede para o tráfego de back-end com az network vnet subnet create. O exemplo a seguir cria uma sub-rede chamada mySubnetBackEnd:

az network vnet subnet create \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnetBackEnd \
    --address-prefix 10.0.2.0/24

Crie um grupo de segurança de rede com az network nsg create. O exemplo a seguir cria um grupo de segurança de rede denominado myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Criar e configurar várias NICs

Crie duas NICs com az network nic create. O exemplo a seguir cria duas NICs, chamadas myNic1 e myNic2, conectadas ao Grupo de Segurança de Rede, com uma NIC se conectando a cada sub-rede:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic1 \
    --vnet-name myVnet \
    --subnet mySubnetFrontEnd \
    --network-security-group myNetworkSecurityGroup
az network nic create \
    --resource-group myResourceGroup \
    --name myNic2 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Criar uma VM e conectar as NICs

Quando você criar a VM, especifica as NICs que criou com --nics. Você também precisa tomar cuidado ao selecionar o tamanho da VM. Há limites para o número total de NICs que podem ser adicionados a uma VM. Leia mais sobre Tamanhos de VM Linux.

Crie uma VM com az vm create. O exemplo a seguir cria uma VM chamada myVM:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image UbuntuLTS \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics myNic1 myNic2

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configure o SO convidado para várias NICs.

Adicionar uma NIC a uma VM

As etapas anteriores criaram uma VM com várias NICs. Também é possível adicionar NICs a uma VM existente com a CLI do Azure. Diferentes tamanhos de VM dão suporte a um número variável de NICs, sendo assim, dimensione sua VM adequadamente. Se necessário, é possível redimensionar uma VM.

Crie outra NIC com az network nic create. O exemplo a seguir cria uma NIC chamada myNic3 conectada à sub-rede de back-end e ao Grupo de Segurança de Rede criado nas etapas anteriores:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic3 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Para adicionar uma NIC a uma VM existente, primeiro desaloque a VM com az vm deallocate. O exemplo a seguir desaloca a VM chamada myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Adicione a NIC com az vm nic add. O exemplo a seguir adiciona myNic3 à myVM:

az vm nic add \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Inicie a VM com az vm start:

az vm start --resource-group myResourceGroup --name myVM

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configure o SO convidado para várias NICs.

Remover uma NIC de uma VM

Para remover uma NIC de uma VM existente, primeiro desaloque a VM com az vm deallocate. O exemplo a seguir desaloca a VM chamada myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Remova a NIC com az vm nic remove. O exemplo a seguir remove myNic3 de myVM:

az vm nic remove \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Inicie a VM com az vm start:

az vm start --resource-group myResourceGroup --name myVM

Criar várias NICs usando modelos do Resource Manager

Os modelos do Azure Resource Manager usam arquivos JSON declarativos para definir o seu ambiente. Você pode ler uma visão geral do Azure Resource Manager. Os modelos do Gerenciador de Recursos oferecem uma maneira de criar várias instâncias de um recurso durante a implantação, como a criação de várias NICs. Você usa copiar para especificar o número de instâncias a serem criadas:

"copy": {
    "name": "multiplenics"
    "count": "[parameters('count')]"
}

Leia mais sobre a criação de várias instâncias usando copiar.

Você também pode usar um copyIndex() para, depois, acrescentar um número ao nome de um recurso, o que permite que você crie myNic1, myNic2, etc. Veja a seguir um exemplo de como acrescentar o valor do índice:

"name": "[concat('myNic', copyIndex())]", 

Você pode ler um exemplo completo em Criando várias NICs usando modelos do Gerenciador de Recursos.

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configure o SO convidado para várias NICs.

Configurar o SO convidado para várias NICs

As etapas anteriores criaram uma rede virtual e uma sub-rede, conectaram adaptadores de rede e, em seguida, criaram uma VM. Um endereço IP público e regras de grupo de segurança de rede que permitem tráfego SSH não foram criados. Para configurar o SO convidado para vários adaptadores de rede, é necessário permitir conexões remotas e executar comandos localmente na VM.

Para permitir tráfego SSH, crie uma regra de grupo de segurança de rede com az network nsg rule create, conforme a seguir:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

Crie um endereço IP público com az network public-ip create e atribua-o ao primeiro adaptador de rede com az network nic ip-config update:

az network public-ip create --resource-group myResourceGroup --name myPublicIP

az network nic ip-config update \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --name ipconfig1 \
    --public-ip myPublicIP

Para exibir o endereço IP público da VM, use az vm show, conforme a seguir:

az vm show --resource-group myResourceGroup --name myVM -d --query publicIps -o tsv

Exemplo de SSH para o endereço IP público da VM. O nome de usuário padrão fornecido em uma etapa anterior era azureuser. Forneça seu próprio nome de usuário e endereço IP público:

ssh azureuser@137.117.58.232

Para enviar para ou de um adaptador de rede secundário, é necessário adicionar manualmente rotas persistentes ao sistema operacional para cada adaptador de rede secundário. Neste artigo, eth1 é o adaptador de rede secundário. As instruções para adicionar rotas persistentes ao sistema operacional variam de acordo com a distribuição. Consulte a documentação da sua distribuição para obter mais instruções.

Ao adicionar a rota ao sistema operacional, o endereço do gateway será .1 para qualquer sub-rede na qual o adaptador de rede está. Por exemplo, se o adaptador de rede tiver o endereço 10.0.2.4, o gateway especificado para a rota será 10.0.2.1. É possível definir uma rede específica para o destino da rota ou especificar um destino 0.0.0.0, se você quiser que todo o tráfego do adaptador passe pelo gateway especificado. O gateway de cada sub-rede é gerenciado pela rede virtual.

Após adicionar a rota para um adaptador de rede secundário, verifique se a rota está na tabela de rotas com route -n. A saída de exemplo a seguir é para a tabela de rotas que tem as dois adaptadores de rede adicionadas à VM neste artigo:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

Confirme se a rota que você adicionou persistiu entre os reinícios, verificando a tabela de rotas novamente após reiniciar. Para testar a conectividade, é possível inserir o comando a seguir, por exemplo, em que eth1 é o nome de um adaptador de rede secundário:

ping bing.com -c 4 -I eth1

Próximas etapas

Examine Tamanhos de VM Linux ao tentar criar uma VM com várias NICs. Preste atenção ao número máximo de NICs a que cada VM dá suporte.

Para proteger ainda mais as VMs, use acesso just-in-time à VM. Esse recurso abre regras de grupo de segurança de rede para tráfego SSH quando necessário e por um período de tempo definido. Para saber mais, confira Gerenciar o acesso à máquina virtual usando o just in time.