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

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

Важно!

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

Сценарий

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

Сценарий с несколькими сетевыми картами

В приведенных ниже действиях используются следующие группы ресурсов: IaaSStory для веб-серверов и IaaSStory-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.

     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. Вы увидите начальный вывод сценария, как показано ниже.

     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. Настройка маршрутизации в операционной системе виртуальной машины

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