Partilhar via


Criar uma VM (clássica) com várias NICs usando o PowerShell

Você pode criar máquinas virtuais (VMs) no Azure e anexar várias interfaces de rede (NICs) a cada uma de suas VMs. Várias NICs permitem a separação de tipos de tráfego entre NICs. Por exemplo, uma NIC pode se comunicar com a Internet, enquanto outra se comunica apenas com recursos internos não conectados à Internet. A capacidade de separar o tráfego de rede em várias NICs é necessária para muitos dispositivos virtuais de rede, como entrega de aplicativos e soluções de otimização de WAN.

Importante

O Azure tem dois modelos de implantação diferentes para criar e trabalhar com recursos: o Resource Manager e o clássico. Este artigo cobre a utilização do modelo de implementação clássica. A Microsoft recomenda que a maioria das novas implantações use o modelo do Gerenciador de Recursos. Saiba como executar essas etapas usando o modelo de implantação do Resource Manager.

Cenário

Este documento apresenta uma implantação que usa várias NICs em VMs em um cenário específico. Nesse cenário, você tem uma carga de trabalho IaaS de duas camadas hospedada no Azure. Cada camada é implantada em sua própria sub-rede em uma rede virtual (VNet). A camada front-end é composta por vários servidores Web, agrupados em um conjunto de balanceadores de carga para alta disponibilidade. A camada de back-end é composta por vários servidores de banco de dados. Os servidores de banco de dados são implantados com duas NICs cada, uma para acesso ao banco de dados e outra para gerenciamento. O cenário também inclui NSGs (Grupos de Segurança de Rede) para controlar qual tráfego é permitido para cada sub-rede e NIC na implantação. A imagem a seguir mostra a arquitetura básica desse cenário:

cenário MultiNIC

As etapas a seguir usam um grupo de recursos chamado IaaSStory para os servidores WEB e um grupo de recursos chamado IaaSStory-BackEnd para os servidores de banco de dados.

Pré-requisitos

Antes de criar os servidores de banco de dados, você precisa criar o IaaSStory grupo de recursos com todos os recursos necessários para esse cenário. Para criar esses recursos, conclua as etapas a seguir. Crie uma rede virtual seguindo as etapas no artigo Criar uma rede virtual.

Pré-requisito: instalar o módulo Azure PowerShell

Para efetuar os passos neste artigo, terá de instalar e configurar o módulo Azure PowerShell. Certifique-se de que conclui todas as instruções. Após a conclusão da instalação, inicie sessão no Azure e selecione a sua subscrição.

Observação

Precisa de uma conta do Azure para efetuar estes passos. Se não tiver uma conta do Azure, pode inscrever-se para obter uma avaliação gratuita.

Criar as VMs de back-end

As VMs de back-end dependem da criação dos seguintes recursos:

  • Sub-rede de back-end. Os servidores de banco de dados farão parte de uma sub-rede separada, para segregar o tráfego. O script abaixo espera que essa sub-rede exista em uma vnet chamada WTestVnet.
  • Conta de armazenamento para discos de dados. Para um melhor desempenho, os discos de dados nos servidores de banco de dados usarão a tecnologia de unidade de estado sólido (SSD), que requer uma conta de armazenamento premium. Certifique-se de que a localização do Azure para onde vai implementar permite o armazenamento premium.
  • Conjunto de disponibilidade. Todos os servidores de banco de dados serão adicionados a um único conjunto de disponibilidade, para garantir que pelo menos uma das VMs esteja ativa e em execução durante a manutenção.

Etapa 1 - Inicie o script

Você pode baixar o script completo do PowerShell usado aqui. Siga as etapas abaixo para alterar o script para funcionar em seu ambiente.

  1. Altere os valores das variáveis abaixo com base no grupo de recursos existente implantado acima em Pré-requisitos.

     $location              = "West US"
     $vnetName              = "WTestVNet"
     $backendSubnetName     = "BackEnd"
    
  2. Altere os valores das variáveis abaixo com base nos valores que você deseja usar para sua implantação de back-end.

     $backendCSName         = "IaaSStory-Backend"
     $prmStorageAccountName = "iaasstoryprmstorage"
     $avSetName             = "ASDB"
     $vmSize                = "Standard_DS3"
     $diskSize              = 127
     $vmNamePrefix          = "DB"
     $dataDiskSuffix        = "datadisk"
     $ipAddressPrefix       = "192.168.2."
     $numberOfVMs           = 2
    

Etapa 2 - Criar os recursos necessários para suas VMs

Você precisa criar um novo serviço de nuvem e uma conta de armazenamento para os discos de dados para todas as VMs. Você também precisa especificar uma imagem e uma conta de administrador local para as VMs. Para criar esses recursos, conclua as seguintes etapas:

  1. Crie um novo serviço de nuvem.

     New-AzureService -ServiceName $backendCSName -Location $location
    
  2. Crie uma nova conta de armazenamento premium.

     New-AzureStorageAccount -StorageAccountName $prmStorageAccountName `
     -Location $location -Type Premium_LRS
    
  3. Defina a conta de armazenamento criada acima como a conta de armazenamento atual da sua assinatura.

     $subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true}  
     Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName `
     -CurrentStorageAccountName $prmStorageAccountName
    
  4. Selecione uma imagem para a VM.

     $image = Get-AzureVMImage `
     | where{$_.ImageFamily -eq "SQL Server 2014 RTM Web on Windows Server 2012 R2"} `
     | sort PublishedDate -Descending `
     | select -ExpandProperty ImageName -First 1
    
  5. Defina as credenciais da conta de administrador local.

     $cred = Get-Credential -Message "Enter username and password for local admin account"
    

Etapa 3 - Criar VMs

Você precisa usar um loop para criar quantas VMs quiser e criar as NICs e VMs necessárias dentro do loop. Para criar as NICs e VMs, execute as etapas a seguir.

  1. Inicie um for loop para repetir os comandos para criar uma VM e duas NICs quantas vezes forem necessárias, com base no valor da $numberOfVMs variável.

     for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
    
  2. Crie um VMConfig objeto especificando a imagem, o tamanho e o conjunto de disponibilidade para a VM.

     $vmName = $vmNamePrefix + $suffixNumber
     $vmConfig = New-AzureVMConfig -Name $vmName `
     	-ImageName $image `
     	-InstanceSize $vmSize `
     	-AvailabilitySetName $avSetName
    
  3. Provisione a VM como uma VM Windows.

     Add-AzureProvisioningConfig -VM $vmConfig -Windows `
     	-AdminUsername $cred.UserName `
     	-Password $cred.GetNetworkCredential().Password
    
  4. Defina a NIC padrão e atribua-lhe um endereço IP estático.

     Set-AzureSubnet			-SubnetNames $backendSubnetName -VM $vmConfig
     Set-AzureStaticVNetIP 	-IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
    
  5. Adicione uma segunda NIC para cada VM.

     Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) `
     -SubnetName $backendSubnetName `
     -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) `
     -VM $vmConfig
    
  6. Crie discos de dados para cada VM.

     $dataDisk1Name = $vmName + "-" + $dataDiskSuffix + "-1"    
     Add-AzureDataDisk -CreateNew -VM $vmConfig `
     -DiskSizeInGB $diskSize `
     -DiskLabel $dataDisk1Name `
     -LUN 0
    
     $dataDisk2Name = $vmName + "-" + $dataDiskSuffix + "-2"   
     Add-AzureDataDisk -CreateNew -VM $vmConfig `
     -DiskSizeInGB $diskSize `
     -DiskLabel $dataDisk2Name `
     -LUN 1
    
  7. Crie cada VM e termine o loop.

     New-AzureVM -VM $vmConfig `
     -ServiceName $backendCSName `
     -Location $location `
     -VNetName $vnetName
     }
    

Etapa 4 - Executar o script

Agora que você baixou e alterou o script com base em suas necessidades, execute o script para criar as VMs de banco de dados back-end com várias NICs.

  1. Salve seu script e execute-o no prompt de comando do PowerShell ou ISE do PowerShell. Você verá a saída inicial, como mostrado abaixo.

     OperationDescription    OperationId                          OperationStatus
    
     New-AzureService        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureStorageAccount xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
    
     WARNING: No deployment found in service: 'IaaSStory-Backend'.
    
  2. Preencha as informações necessárias no prompt de credenciais e clique em OK. O resultado seguinte é retornado.

     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
     New-AzureVM             xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Succeeded
    

Etapa 5 - Configurar o roteamento dentro do sistema operacional da VM

O DHCP do Azure atribui um gateway padrão à primeira interface de rede (primária) conectada à máquina virtual. O Azure não atribui um gateway predefinido a interfaces de rede (secundárias) adicionais ligadas a uma máquina virtual. Por conseguinte, não pode comunicar com recursos que estejam fora da sub-rede em que se encontre uma interface de rede secundária, por predefinição. Contudo, as interfaces de rede secundárias podem comunicar com recursos fora das respetivas sub-redes. Para configurar o roteamento para interfaces de rede secundárias, consulte os seguintes artigos: