Criar uma VM (Clássica) com diversas NICs usando PowerShell
Você pode criar máquinas virtuais (VMs) no Azure e anexar várias interfaces de rede (NICs) para cada uma de suas VMs. Várias NICs permitem a separação dos tipos de tráfego entre NICs. Por exemplo, uma NIC pode se comunicar com a Internet, enquanto outra se comunica apenas com recursos internos que não estão conectados à Internet. A capacidade de separar o tráfego de rede entre as várias NICs é necessária para vários dispositivos de rede virtual, como a 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: Resource Manager e clássico. Este artigo aborda o uso do modelo de implantação clássica. A Microsoft recomenda que a maioria das implantações novas use o modelo do Gerenciador de Recursos. Saiba como executar essas etapas usando o modelo de implantação Resource Manager.
Cenário
Este documento orientará durante uma implantação que usa várias NICs em máquinas virtuais em um cenário específico. Nesse cenário, você tem uma carga de trabalho de IaaS em duas camadas hospedadas no Azure. Cada camada é implantada na sua própria sub-rede em uma rede virtual (VNet). A camada de front-end é composta de vários servidores da Web, agrupados em um balanceador de carga definida para alta disponibilidade. A camada de back-end é composta de vários servidores de banco de dados. Esses servidores de banco de dados serão implantados com duas NICs cada, uma para acesso de banco de dados, outra para gerenciamento. O cenário também inclui grupos de segurança de rede (NSGs) para controlar o que o tráfego seja permitido para cada sub-rede e NIC na implantação. A figura a seguir mostra a arquitetura básica desse cenário:
As etapas a seguir usam um grupo de recursos chamado IaaSStory para os servidores Web e o grupo de recursos e IaaSStory-BackEnd para os servidores DB.
Pré-requisitos
Antes de criar os servidores DB, você precisa criar o grupo de recursos IaaSStory com todos os recursos necessários para este 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 do Azure PowerShell
Para seguir as etapas deste artigo, será necessário instalar e configurar o módulo do Azure PowerShell. Certifique-se de concluir todas as instruções. Depois que a instalação for concluída, entre no Azure e selecione sua assinatura.
Observação
É necessária uma conta do Azure para concluir essas etapas. Se não tiver uma conta do Azure, você poderá assinar uma versão de avaliação gratuita.
Criar 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 serão parte de uma sub-rede separada, para segregar o tráfego. O script a seguir espera que essa sub-rede exista em uma vnet chamada WTestVnet.
- Conta de armazenamento para discos de dados. Para obter um melhor desempenho, os discos de dados dos servidores de banco de dados usam a tecnologia SDD (unidade de estado sólido), que requer uma conta de Armazenamento Premium. Verifique se o local do Azure no qual você vai implantar é compatível com o Armazenamento Premium.
- Conjunto de disponibilidade. Todos os servidores de banco de dados são adicionados a um conjunto de disponibilidade único, para garantir que pelo menos uma das VMs está ativa e em execução durante a manutenção.
Etapa 1 – Iniciar o script
Baixe o script completo do PowerShell usado aqui. Realize os procedimentos abaixo para alterar o script para funcionar em seu ambiente.
Altere os valores das variáveis a seguir com base no grupo de recursos existente implantado acima, no tópico Pré-requisitos.
$location = "West US" $vnetName = "WTestVNet" $backendSubnetName = "BackEnd"
Altere os valores das variáveis a seguir de acordo com os valores que deseja usar na implantação do 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 recursos necessários para as VMs
Você precisa criar um novo serviço de nuvem e 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, siga estas etapas:
Crie um novo serviço de nuvem
New-AzureService -ServiceName $backendCSName -Location $location
Crie uma nova conta de armazenamento Premium.
New-AzureStorageAccount -StorageAccountName $prmStorageAccountName ` -Location $location -Type Premium_LRS
Defina a conta de armazenamento criada acima como a conta de armazenamento para sua assinatura.
$subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true} Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName ` -CurrentStorageAccountName $prmStorageAccountName
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
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ê deve usar um loop para criar várias VMs desejadas e para criar as NICs e VMs necessárias dentro do loop. Para criar as NICs e VMs, faça o seguinte:
Inicie um loop
for
para repetir os comandos para criar uma VM e duas NICs, quantas vezes forem necessárias, com base no valor da variável$numberOfVMs
.for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
Crie um objeto
VMConfig
que especifica a imagem, o tamanho e o conjunto de disponibilidade da VM.$vmName = $vmNamePrefix + $suffixNumber $vmConfig = New-AzureVMConfig -Name $vmName ` -ImageName $image ` -InstanceSize $vmSize ` -AvailabilitySetName $avSetName
Provisione a VM como uma VM do Windows.
Add-AzureProvisioningConfig -VM $vmConfig -Windows ` -AdminUsername $cred.UserName ` -Password $cred.GetNetworkCredential().Password
Defina a NIC padrão e atribua um endereço IP estático.
Set-AzureSubnet -SubnetNames $backendSubnetName -VM $vmConfig Set-AzureStaticVNetIP -IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
Adicione uma segunda NIC para cada VM.
Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) ` -SubnetName $backendSubnetName ` -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) ` -VM $vmConfig
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
Crie cada VM e encerre 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 de acordo com suas necessidades, execute o script para criar VMs do banco de dados de back-end com várias NICs.
Salve seu script e execute-o no prompt de comando do PowerShell ou PowerShell ISE. A saída inicial será exibida, conforme 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'.
Preencha as informações necessárias na solicitação de credenciais e clique em OK. A seguinte saída será retornada.
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 protocolo DHCP do Azure atribui um gateway padrão ao primeiro adaptador de rede (primário) anexado à máquina virtual. O Azure não atribui um gateway padrão aos adaptadores de rede adicionais (secundários) anexados à máquina virtual. Portanto, por padrão, não é possível se comunicar com os recursos fora da sub-rede na qual um adaptador de rede secundária se encontra. No entanto, os adaptador de rede secundários podem se comunicar com os recursos fora da sua sub-rede. Para configurar o roteamento de interfaces de rede secundárias, consulte os seguintes artigos: