Поделиться через


Создание виртуальной машины (классической) с несколькими сетевыми адаптерами с помощью PowerShell

Вы можете создать виртуальные машины в Azure и подключить несколько сетевых интерфейсов к каждой из виртуальных машин. Несколько сетевых адаптеров позволяют распределить трафик по их типам. Например, один сетевой адаптер может взаимодействовать с Интернетом, а другой взаимодействует только с внутренними ресурсами, не подключенными к Интернету. Возможность разделения сетевого трафика между несколькими сетевыми адаптерами необходима для многих виртуальных сетевых устройств, таких как доставка приложений и решения оптимизации глобальной сети.

Это важно

В Azure предлагаются две модели развертывания для создания ресурсов и работы с ними: модель Resource Manager и классическая модель. В этой статье рассматривается использование классической модели развертывания. Корпорация Майкрософт рекомендует использовать модель Resource Manager для большинства новых развертываний. Узнайте, как выполнить эти действия с помощью модели развертывания Resource Manager.

Сценарий

В этом документе описывается развертывание, использующее несколько сетевых адаптеров в виртуальных машинах в определенном сценарии. В этом сценарии у вас есть двухуровневая рабочая нагрузка IaaS, размещенная в Azure. Каждый уровень развертывается в своей подсети в виртуальной сети (VNet). Интерфейсный уровень состоит из нескольких веб-серверов, сгруппированных в набор подсистемы балансировки нагрузки для обеспечения высокой доступности. Внутренний уровень состоит из нескольких серверов баз данных. Серверы базы данных развертываются с двумя сетевыми адаптерами: один для доступа к базе данных, другой — для управления. Этот сценарий также включает группы безопасности сети (NSG) для управления разрешенным трафиком для каждой подсети и сетевого адаптера в развертывании. На следующем рисунке показана базовая архитектура этого сценария:

сценарий MultiNIC

Следующие шаги используют группу ресурсов с именем IaaSStory для веб-серверов и группы ресурсов с именем IaaStory-BackEnd для серверов базы данных.

Предпосылки

Прежде чем создавать серверы базы данных, необходимо создать группу ресурсов IaaSStory со всеми необходимыми ресурсами для этого сценария. Чтобы создать эти ресурсы, выполните следующие действия. Создайте виртуальную сеть, выполнив действия, описанные в статье Создание виртуальной сети.

Предварительные требования. Установка модуля Azure PowerShell

Для выполнения действий, описанных в этой статье, требуется установить и настроить модуль Azure PowerShell. Обязательно выполните все инструкции. По завершении установки войдите в Azure и выберите свою подписку.

Примечание.

Для выполнения этих инструкций требуется учетная запись Azure. Если у вас нет учетной записи Azure, вы можете зарегистрироваться для получения бесплатной пробной версии .

Создание внутренних виртуальных машин

Серверные виртуальные машины зависят от создания следующих ресурсов:

  • подсеть бэкенда. Серверы базы данных будут частью отдельной подсети для разделения трафика. Приведенный ниже скрипт ожидает, что эта подсеть будет существовать в виртуальной сети с именем WTestVnet.
  • учетная запись хранения для дисков данных. Для повышения производительности диски данных на серверах базы данных будут использовать технологию ssd-диска с твердым состоянием, которая требует учетной записи хранения класса Premium. Убедитесь, что расположение Azure, на котором вы собираетесь развертывать, поддерживает хранилище класса Premium.
  • Группа доступности. Все серверы базы данных будут добавлены в единую группу доступности, чтобы обеспечить работу по крайней мере одной из виртуальных машин во время обслуживания.

Шаг 1. Запуск скрипта

Вы можете скачать полный скрипт PowerShell, используемый здесь ,. Выполните приведенные ниже действия, чтобы изменить сценарий для работы в вашей среде.

  1. Измените значения приведенных ниже переменных на основе существующей группы ресурсов, развернутой выше в разделе Подготовка.

     $location              = "West US"
     $vnetName              = "WTestVNet"
     $backendSubnetName     = "BackEnd"
    
  2. Измените значения указанных ниже переменных на основе значений, которые вы хотите использовать для внутреннего развертывания.

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

Шаг 2. Создание необходимых ресурсов для виртуальных машин

Необходимо создать облачную службу и учетную запись хранения для дисков данных для всех виртуальных машин. Кроме того, необходимо указать образ и учетную запись локального администратора для виртуальных машин. Чтобы создать эти ресурсы, выполните следующие действия.

  1. Создайте облачную службу.

     New-AzureService -ServiceName $backendCSName -Location $location
    
  2. Создайте новую учетную запись хранения класса Premium.

     New-AzureStorageAccount -StorageAccountName $prmStorageAccountName `
     -Location $location -Type Premium_LRS
    
  3. Задайте учетную запись хранения, созданную выше, в качестве текущей учетной записи хранения для вашей подписки.

     $subscription = Get-AzureSubscription | where {$_.IsCurrent -eq $true}  
     Set-AzureSubscription -SubscriptionName $subscription.SubscriptionName `
     -CurrentStorageAccountName $prmStorageAccountName
    
  4. Выберите образ виртуальной машины.

     $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. Задайте учетные данные учетной записи локального администратора.

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

Шаг 3. Создание виртуальных машин

Необходимо использовать цикл, чтобы создать столько виртуальных машин, сколько требуется, и создать необходимые сетевые адаптеры и виртуальные машины в цикле. Чтобы создать сетевые адаптеры и виртуальные машины, выполните следующие действия.

  1. Запустите цикл for, чтобы повторить команды, чтобы создать виртуальную машину и два сетевых адаптера столько раз, сколько необходимо, на основе значения переменной $numberOfVMs.

     for ($suffixNumber = 1; $suffixNumber -le $numberOfVMs; $suffixNumber++){
    
  2. Создайте объект VMConfig, указывающий образ, размер и группу доступности для виртуальной машины.

     $vmName = $vmNamePrefix + $suffixNumber
     $vmConfig = New-AzureVMConfig -Name $vmName `
     	-ImageName $image `
     	-InstanceSize $vmSize `
     	-AvailabilitySetName $avSetName
    
  3. Подготовьте виртуальную машину как Windows VM.

     Add-AzureProvisioningConfig -VM $vmConfig -Windows `
     	-AdminUsername $cred.UserName `
     	-Password $cred.GetNetworkCredential().Password
    
  4. Задайте сетевой адаптер по умолчанию и назначьте ему статический IP-адрес.

     Set-AzureSubnet			-SubnetNames $backendSubnetName -VM $vmConfig
     Set-AzureStaticVNetIP 	-IPAddress ($ipAddressPrefix+$suffixNumber+3) -VM $vmConfig
    
  5. Добавьте второй сетевой адаптер для каждой виртуальной машины.

     Add-AzureNetworkInterfaceConfig -Name ("RemoteAccessNIC"+$suffixNumber) `
     -SubnetName $backendSubnetName `
     -StaticVNetIPAddress ($ipAddressPrefix+(53+$suffixNumber)) `
     -VM $vmConfig
    
  6. Создайте два диска данных для каждой виртуальной машины.

     $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. Создайте каждую виртуальную машину и завершите цикл.

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

Шаг 4. Запуск скрипта

Теперь, когда вы скачали и изменили скрипт на основе ваших потребностей, запустите скрипт, чтобы создать внутренние виртуальные машины базы данных с несколькими сетевыми адаптерами.

  1. Сохраните скрипт и запустите его из командной строки PowerShell PowerShell или из среды разработки PowerShell ISE . Вы увидите начальные выходные данные, как показано ниже.

     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. Заполните информацию, необходимую в запросе учетных данных, и нажмите кнопку ОК. Возвращается следующий результат.

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

Шаг 5. Настройка маршрутизации в операционной системе виртуальной машины

Azure DHCP назначает шлюз по умолчанию первому сетевому интерфейсу , подключенному к виртуальной машине. Azure не назначает шлюз по умолчанию для второго (дополнительного) сетевого интерфейса, подключенного к виртуальной машине. Таким образом, невозможно по умолчанию связываться с ресурсами, к которым подключен дополнительный сетевой интерфейс вне подсети. Дополнительные сетевые интерфейсы могут взаимодействовать с ресурсами вне их подсети. Сведения о настройке маршрутизации для вторичных сетевых интерфейсов см. в следующих статьях: