Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Iniziare a usare Azure Load Balancer con Azure PowerShell per creare un servizio di bilanciamento del carico pubblico e due macchine virtuali. È anche possibile distribuire altre risorse, tra cui Azure Bastion, gateway NAT, una rete virtuale e le subnet necessarie.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
Azure PowerShell installato localmente o Azure Cloud Shell.
Se si sceglie di installare e usare PowerShell in locale, per questo articolo è necessario il modulo Azure PowerShell 5.4.1 o versione successiva. Eseguire Get-Module -ListAvailable Az per trovare la versione installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzAccount per creare una connessione con Azure.
Creare un gruppo di risorse
Un gruppo di risorse Azure è un contenitore logico in cui si distribuiscono e si gestiscono le risorse Azure.
Creare un gruppo di risorse usando New-AzResourceGroup:
$rg = @{
Name = 'load-balancer-ps-rg'
Location = 'eastus'
}
New-AzResourceGroup @rg
Creare un indirizzo IP pubblico
Usare New-AzPublicIpAddress per creare un indirizzo IP pubblico.
$publicip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
New-AzPublicIpAddress @publicip
Per creare un indirizzo IP pubblico di zona nella zona 1, usare il comando seguente:
$publicip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
Creare un servizio di bilanciamento del carico
Questa sezione illustra come creare e configurare i componenti seguenti del servizio di bilanciamento del carico:
Creare un IP front-end con New-AzLoadBalancerFrontendIpConfig per il pool di indirizzi IP front-end. Questo indirizzo IP riceve il traffico in ingresso nel servizio di bilanciamento del carico.
Creare un pool di indirizzi back-end con New-AzLoadBalancerBackendAddressPoolConfig per il traffico inviato dal front-end del servizio di bilanciamento del carico. Distribuisci le macchine virtuali di back-end in questo pool.
Creare una sonda di salute con Add-AzLoadBalancerProbeConfig che determina l'integrità delle istanze back-end della macchina virtuale.
Creare una regola di bilanciamento del carico con Add-AzLoadBalancerRuleConfig che definisce la modalità di distribuzione del traffico alle macchine virtuali.
Creare un servizio di bilanciamento del carico pubblico con New-AzLoadBalancer.
## Place public IP created in previous steps into variable. ##
$pip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'lb-frontend'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## 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 -DisableOutboundSNAT
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'load-balancer'
Location = 'eastus'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Configurare la rete virtuale
Prima di distribuire le macchine virtuali e testare il servizio di bilanciamento del carico, creare le risorse di rete virtuale di supporto.
Creare una rete virtuale per le macchine virtuali back-end.
Creare un gruppo di sicurezza di rete per definire le connessioni in ingresso alla rete virtuale.
Creare un host Azure Bastion per gestire in modo sicuro le macchine virtuali nel pool di back-end.
Usa un gateway NAT per fornire accesso a Internet in uscita alle risorse nel pool di backend del bilanciatore del carico.
Creare una rete virtuale, un gruppo di sicurezza di rete, un host bastion e un gateway NAT
Creare una rete virtuale con New-AzVirtualNetwork.
Creare una regola del gruppo di sicurezza di rete con New-AzNetworkSecurityRuleConfig.
Creare un host Azure Bastion con New-AzBastion.
Creare un gruppo di sicurezza di rete con New-AzNetworkSecurityGroup.
Creare la risorsa del gateway NAT con New-AzNatGateway.
Usare New-AzVirtualNetworkSubnetConfig per associare il gateway NAT alla subnet della rete virtuale.
Importante
La tariffa oraria inizia dal momento in cui viene distribuito Bastion, a prescindere dall'utilizzo dei dati in uscita. Per altre informazioni, vedere Prezzi e SKU. Se si distribuisce Bastion come parte di un'esercitazione o un test, è consigliabile eliminare questa risorsa dopo averla usata.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'nat-gw-public-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'lb-nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus'
PublicIpAddress = $publicIP
}
$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/27'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
Location = 'eastus'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'lb-vnet-bastion-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'lb-vnet-bastion'
PublicIpAddress = $publicip
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 = '200'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'lb-nsg'
ResourceGroupName = $rg.name
Location = 'eastus'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Creare macchine virtuali
In questa sezione si creano le due macchine virtuali per il pool back-end del servizio di bilanciamento del carico.
Creare due interfacce di rete con New-AzNetworkInterface.
Impostare un nome utente e una password di amministratore per le macchine virtuali con Get-Credential.
Creare le macchine virtuali con i cmdlet seguenti:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network 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. ##
$ns = @{
Name = 'lb-nsg'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns
## 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 = 'eastus'
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 = 'eastus'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -AsJob
}
Inviare le distribuzioni delle macchine virtuali e dell'host bastion come processi di PowerShell. Per visualizzare lo stato dei processi, usare 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
Verificare che lo Stato della creazione della macchina virtuale sia Completato prima di passare ai passaggi successivi.
Nota
Azure fornisce un IP di accesso in uscita predefinito per le macchine virtuali a cui non è stato assegnato un indirizzo IP pubblico o che si trovano nel pool back-end di un servizio del bilanciamento del carico di base di Azure. Il meccanismo dell'IP di accesso in uscita predefinito fornisce un IP in uscita non configurabile.
L'IP di accesso in uscita predefinito è disabilitato quando si verifica uno degli eventi seguenti:
- Alla macchina virtuale viene assegnato un indirizzo IP pubblico.
- La macchina virtuale è posizionata nel pool back-end di un servizio di bilanciamento del carico standard, con o senza regole in uscita.
- Una risorsa del gateway NAT di Azure viene assegnata alla subnet della macchina virtuale.
Le macchine virtuali create usando set di scalabilità di macchine virtuali nella modalità orchestrazione flessibile non dispongono dell'accesso in uscita predefinito.
Per altre informazioni sulle connessioni in uscita in Azure, vedere Accesso in uscita predefinito in Azure e Uso di Source Network Address Translation (SNAT) per le connessioni in uscita.
Installare IIS
Usare Set-AzVMExtension per installare l'estensione per script personalizzati.
L'estensione viene eseguita PowerShell Add-WindowsFeature Web-Server per installare il server Web IIS e quindi aggiorna la pagina Default.htm per visualizzare il nome host della macchina virtuale:
Importante
Assicurarsi che le distribuzioni delle macchine virtuali siano state completate nel passaggio precedente prima di procedere. Usare Get-Job per verificare lo stato dei processi di distribuzione delle macchine virtuali.
## 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 = 'eastus'
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
}
Le estensioni vengono distribuite come processi di PowerShell. Per visualizzare lo stato dei processi di installazione, usare 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
Verificare che lo Stato dei processi sia Completato prima di passare ai passaggi successivi.
Testare il bilanciatore del carico
Usare Get-AzPublicIpAddress per ottenere l'indirizzo IP pubblico del servizio di bilanciamento del carico:
$ip = @{
ResourceGroupName = $rg.name
Name = 'lb-frontend-ip'
}
Get-AzPublicIPAddress @ip | select IpAddress
Copiare l'indirizzo IP pubblico e quindi incollarlo nella barra degli indirizzi del browser. La pagina predefinita del server Web IIS viene visualizzata nel browser.
Pulire le risorse
Quando le risorse non sono più necessarie, usare il comando Remove-AzResourceGroup per rimuovere il gruppo di risorse, il servizio di bilanciamento del carico e le risorse rimanenti.
Remove-AzResourceGroup -Name $rg.name
Passaggi successivi
Questo avvio rapido spiega come:
Creato un Azure Load Balancer
Due macchine virtuali collegate al servizio di bilanciamento del carico
Bilanciatore del carico testato
Per altre informazioni su Azure Load Balancer, passare a: