Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приступая к работе с Azure Load Balancer, создайте внутреннюю подсистему балансировки нагрузки и две виртуальные машины с помощью Azure PowerShell. Кроме того, вы развертываете другие ресурсы, включая Бастион Azure, шлюз NAT, виртуальную сеть и необходимые подсети.
Предварительные требования
Учетная запись Azure с активной подпиской. Создание бесплатной учетной записи
Локальная установка Azure PowerShell или Azure Cloud Shell
Чтобы установить и использовать PowerShell локально, для работы с этой статьей вам понадобится модуль Azure PowerShell 5.4.1 или более поздней версии. Выполните Get-Module -ListAvailable Az, чтобы узнать установленную версию. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. При использовании PowerShell на локальном компьютере также нужно запустить Connect-AzAccount, чтобы создать подключение к Azure.
Создайте группу ресурсов
Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими.
Создайте группу ресурсов с помощью командлета New-AzResourceGroup.
$rg = @{
Name = 'load-balancer-ps-rg'
Location = 'westus2'
}
New-AzResourceGroup @rg
Настройка виртуальной сети
При создании внутренней подсистемы балансировки нагрузки виртуальная сеть настраивается в качестве сети для подсистемы балансировки нагрузки. Прежде чем развертывать виртуальные машины и тестировать подсистему балансировки нагрузки, создайте вспомогательные ресурсы виртуальной сети.
Создание общедоступного IP-адреса для шлюза NAT
Создайте виртуальную сеть для серверных виртуальных машин.
Создайте группу безопасности сети для определения входящих подключений к виртуальной сети.
Создайте узел Бастион Azure для безопасного управления виртуальными машинами во внутреннем пуле.
Создание общедоступного IP-адреса
Используйте New-AzPublicIpAddress, чтобы создать публичный IP-адрес для шлюза NAT.
## Create public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
Name = 'nat-gw-public-ip'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip
Чтобы создать зональный общедоступный IP-адрес в зоне доступности 1, используйте следующую команду:
## Create a zonal public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
Name = 'nat-gw-public-ip'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip
Примечание.
Общедоступный IP-адрес используется шлюзом NAT для обеспечения исходящего подключения для виртуальных машин в серверном пуле. Это рекомендуется при создании внутренней подсистемы балансировки нагрузки и необходимости в ресурсах внутреннего пула для исходящего подключения. Дополнительные сведения см. в разделе шлюза NAT.
Создание виртуальной сети, группы безопасности сети, узла-бастиона и шлюза NAT
Создайте виртуальную сеть с помощью командлета New-AzVirtualNetwork
Создайте правило группы сетевой безопасности с помощью командлета New-AzNetworkSecurityRuleConfig
Создайте узел Бастион Azure с помощью командлета New-AzBastion
Создайте ресурс шлюза NAT с помощью командлета New-AzNatGateway
Примените командлет New-AzVirtualNetworkSubnetConfig, чтобы связать шлюз NAT с подсетью виртуальной сети
Внимание
Почасовая оплата начисляется с момента развертывания Bastion независимо от объема исходящего трафика. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'lb-nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'westus2'
PublicIpAddress = $gwpublicip
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'backend-subnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet. ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
Location = 'westus2'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$bastionip = @{
Name = 'lb-vnet-bastion-ip'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$bastionip = New-AzPublicIpAddress @bastionip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'lb-vnet-bastion'
PublicIpAddress = $bastionip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'lb-NSG-Rule'
Description = 'Allow HTTP'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '80'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '2000'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'lb-NSG'
ResourceGroupName = $rg.name
Location = 'westus2'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Создание подсистемы балансировки нагрузки
В этом разделе описано, как создать и настроить следующие компоненты подсистемы балансировки нагрузки:
Создайте интерфейсный IP-адрес внешнего интерфейса с помощью New-AzLoadBalancerFrontendIpConfig для пула IP-адресов внешнего интерфейса. Этот IP-адрес получает входящий трафик в подсистеме балансировки нагрузки.
Создайте пул внутренних адресов с помощью New-AzLoadBalancerBackendAddressPoolConfig для трафика, отправляемого из внешнего интерфейса балансировщика нагрузки
Создайте с помощью командлета Add-AzLoadBalancerProbeConfig пробу работоспособности, которая определяет работоспособность внутренних экземпляров виртуальных машин
Создайте с помощью командлета Add-AzLoadBalancerRuleConfig правило подсистемы балансировки нагрузки, которое определяет способ распределения трафика между виртуальными машинами
Создайте общедоступный балансировщик нагрузки с помощью New-AzLoadBalancer
## Place virtual network created in previous step into a variable. ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
Name = 'lb-frontend'
PrivateIpAddress = '10.1.0.4'
SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'lb-backend-pool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'lb-health-probe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'lb-HTTP-rule'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'load-balancer'
Location = 'westus2'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Создание виртуальных машин
В этом разделе описано, как создать две виртуальные машины для внутреннего пула подсистемы балансировки нагрузки.
Создайте три сетевых интерфейса с помощью командлета New-AzNetworkInterface.
Укажите имя пользователя и пароль администратора для виртуальных машин с помощью Get-Credential
Создайте виртуальные машины, выполнив:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place virtual network created in previous step into a variable. ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'load-balancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$sg = @{
Name = 'lb-NSG'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @sg
## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++)
{
## Command to create network interface for VMs ##
$nic = @{
Name = "lb-nic-vm$i"
ResourceGroupName = $rg.name
Location = 'westus2'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
LoadBalancerBackendAddressPool = $bepool
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "lb-VM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "lb-VM$i"
Credential = $cred
}
$vmimage = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Windows `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = $rg.name
Location = 'westus2'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -asjob
}
Развертывание виртуальных машин и узла бастиона запускается в виде заданий PowerShell. Чтобы просмотреть состояние заданий, используйте команду Get-Job.
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running O… AzureLongRunni… Completed True localhost New-AzBastion
2 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
3 Long Running O… AzureLongRunni… Completed True localhost New-AzVM
Примечание.
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс Azure NAT Gateway назначен подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Установить IIS
Воспользуйтесь командлетом Set-AzVMExtension, чтобы установить расширение пользовательских скриптов.
Это расширение запускает PowerShell Add-WindowsFeature Web-Server для установки веб-сервера IIS, а затем обновляет страницу Default.htm для отображения имени узла виртуальной машины.
Внимание
Прежде чем продолжить убедитесь, что развертывания виртуальной машины, выполняемые на предыдущих шагах, завершились. Используйте Get-Job, чтобы проверить состояние заданий развертывания виртуальной машины.
## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
$ext = @{
Publisher = 'Microsoft.Compute'
ExtensionType = 'CustomScriptExtension'
ExtensionName = 'IIS'
ResourceGroupName = $rg.name
VMName = "lb-VM$i"
Location = 'westus2'
TypeHandlerVersion = '1.8'
SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
}
Set-AzVMExtension @ext -AsJob
}
Расширения развернуты в виде заданий PowerShell. Чтобы просмотреть состояние заданий установки, используйте Get-Job:
Get-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
8 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
9 Long Running O… AzureLongRunni… Running True localhost Set-AzVMExtension
Создание тестовой виртуальной машины
Создайте виртуальную машину с помощью:
# Set the administrator and password for the VM. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the network security group into a variable. ##
$sg = @{
Name = 'lb-NSG'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @sg
## Command to create network interface for VM ##
$nic = @{
Name = "lb-nic-testvm"
ResourceGroupName = $rg.name
Location = 'westus2'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "lb-TestVM"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "lb-TestVM"
Credential = $cred
}
$vmimage = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2019-Datacenter'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Windows `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = $rg.name
Location = 'westus2'
VM = $vmConfig
}
New-AzVM @vm
Тестирование подсистемы балансировки нагрузки
Найдите частный IP-адрес для подсистемы балансировки нагрузки на экране обзора. Выберите все службы в меню слева, выберите все ресурсы и выберите подсистему балансировки нагрузки.
Запишите или скопируйте адрес рядом с частным IP-адресом в обзореподсистемы балансировки нагрузки.
Выберите Все службы в меню слева, выберите Все ресурсы, затем в списке ресурсов выберите lb-TestVM, расположенный в группе ресурсов load-balancer-ps-rg.
На странице Обзор выберите Подключиться и Бастион.
Введите имя пользователя и пароль, введенные в процессе создания виртуальной машины.
Откройте Internet Explorer на lb-TestVM.
Введите IP-адрес с предыдущего шага в адресную строку браузера. Отображается пользовательская страница веб-сервера IIS.
Чтобы увидеть, как подсистема балансировки нагрузки распределяет трафик по всем трем виртуальным машинам, вы можете принудительно обновить веб-браузер с тестового компьютера.
Очистка ресурсов
Когда они больше не нужны, можно использовать командлет Remove-AzResourceGroup, чтобы удалить группу ресурсов, балансировщик нагрузки и оставшиеся ресурсы.
Remove-AzResourceGroup -Name $rg.name
Следующие шаги
В этом кратком руководстве:
вы создали внутреннюю подсистему балансировки нагрузки;
Подключенные виртуальные машины
Настроили правило маршрутизации трафика балансировщика нагрузки и проверку работоспособности
Протестировали подсистему балансировки нагрузки
Чтобы узнать больше об Azure Load Balancer, ознакомьтесь со следующей статьей: