Démarrage rapide : Créer un équilibreur de charge public pour équilibrer la charge des machines virtuelles à l’aide d’Azure PowerShell
Commencez avec Azure Load Balancer en utilisant Azure PowerShell pour créer un équilibreur de charge public et deux machines virtuelles. Vous déployez également d’autres ressources, notamment Azure Bastion, NAT Gateway, un réseau virtuel et les sous-réseaux nécessaires.
Prérequis
Compte Azure avec un abonnement actif. Créez un compte gratuitement.
Azure PowerShell installé localement ou Azure Cloud Shell
Si vous choisissez d’installer et d’utiliser PowerShell en local, vous devez exécuter le module Azure PowerShell version 5.4.1 ou ultérieure pour les besoins de cet article. Exécutez Get-Module -ListAvailable Az
pour rechercher la version installée. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell. Si vous exécutez PowerShell en local, vous devez également exécuter Connect-AzAccount
pour créer une connexion avec Azure.
Créer un groupe de ressources
Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
Créez un groupe de ressources avec New-AzResourceGroup :
$rg = @{
Name = 'CreatePubLBQS-rg'
Location = 'westus2'
}
New-AzResourceGroup @rg
Créer une adresse IP publique
Utilisez New-AzPublicIpAddress pour créer une adresse IP publique.
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
New-AzPublicIpAddress @publicip
Pour créer une adresse IP publique zonale dans la zone 1, utilisez la commande suivante :
$publicip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
Créer un équilibrage de charge
Cette section explique en détail comment vous pouvez créer et configurer les composants suivants de l’équilibreur de charge :
Créez une IP front-end avec New-AzLoadBalancerFrontendIpConfig pour le pool d’IP front-end. Cette adresse IP reçoit le trafic entrant sur l’équilibreur de charge.
Créez un pool d’adresses principal avec New-AzLoadBalancerBackendAddressPoolConfig pour le trafic envoyé à partir du front-end de l’équilibreur de charge. Ce pool est l’emplacement où vos machines virtuelles de back-end sont déployées
Créez une sonde d’intégrité avec Add-AzLoadBalancerProbeConfig qui détermine l’intégrité des instances de machine virtuelle du back-end
Créez une règle d’équilibreur de charge avec Add-AzLoadBalancerRuleConfig qui définit la façon dont le trafic est distribué aux machines virtuelles
Créez un équilibreur de charge public avec New-AzLoadBalancer
## Place public IP created in previous steps into variable. ##
$pip = @{
Name = 'myPublicIP'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'myFrontEnd'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'myHealthProbe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'myHTTPRule'
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 = 'myLoadBalancer'
Location = 'westus2'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Configurer un réseau virtuel
Avant de déployer des machines virtuelles et de tester votre équilibreur de charge, créez les ressources de réseau virtuel associées.
Créez un réseau virtuel pour les machines virtuelles du back-end.
Créez un groupe de sécurité réseau pour définir les connexions entrantes vers votre réseau virtuel.
Créez un hôte Azure Bastion pour gérer en toute sécurité les machines virtuelles dans le pool principal.
Utilisez une passerelle NAT pour fournir un accès Internet sortant aux ressources dans le pool principal de votre équilibreur de charge.
Créer un réseau virtuel, un groupe de sécurité réseau, un hôte bastion et une passerelle NAT
Créer un réseau virtuel avec New-AzVirtualNetwork
Créez une règle de groupe de sécurité réseau avec New-AzNetworkSecurityRuleConfig
Créez un hôte Azure Bastion avec New-AzBastion
Créer un groupe de sécurité réseau avec New-AzNetworkSecurityGroup
Créer la ressource de passerelle NAT avec New-AzNatGateway
Utilisez New-AzVirtualNetworkSubnetConfig pour associer la passerelle NAT au sous-réseau du réseau virtuel
Important
Le tarif horaire commence à partir du moment où Bastion est déployé, quelle que soit l’utilisation des données sortantes. Pour plus d’informations, consultez Tarifications et Références SKU. Si vous déployez Bastion dans le cadre d’un tutoriel ou d’un test, nous vous recommandons de supprimer cette ressource après l’avoir utilisée.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'myNATgatewayIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'myNATgateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'westus2'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'myBackendSubnet'
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 = 'myVNet'
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. ##
$ip = @{
Name = 'myBastionIP'
ResourceGroupName = $rg.name
Location = 'westus2'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'myBastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'myNSGRuleHTTP'
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 = 'myNSG'
ResourceGroupName = $rg.name
Location = 'westus2'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Créer des machines virtuelles
Dans cette section, vous allez créer les deux machines virtuelles pour le pool principal de l’équilibreur de charge.
Créer deux interfaces réseau avec New-AzNetworkInterface
Définissez un nom d’utilisateur administrateur et un mot de passe pour les machines virtuelles avec Get-Credential
Créez les machines virtuelles avec :
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'myLoadBalancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'myNSG'
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 = "myNicVM$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 = "myVM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "myVM$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
}
Les déploiements des machines virtuelles et de l’hôte bastion sont envoyés en tant que travaux PowerShell. Pour afficher l’état des travaux, utilisez 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
Assurez-vous que l’État de la création de la machine virtuelle est Terminé avant de passer aux étapes suivantes.
Remarque
Azure fournit une adresse IP d’accès sortant par défaut pour les machines virtuelles qui n’ont pas d’adresse IP publique ou qui se trouvent dans le pool de back-ends d’un équilibreur de charge Azure de base interne. Le mécanisme d’adresse IP d’accès sortant par défaut fournit une adresse IP sortante qui n’est pas configurable.
L’adresse IP de l’accès sortant par défaut est désactivée quand l’un des événements suivants se produit :
- Une adresse IP publique est affectée à la machine virtuelle.
- La machine virtuelle est placée dans le pool principal d’un équilibreur de charge standard, avec ou sans règles de trafic sortant.
- Une ressource Azure NAT Gateway est attribuée au sous-réseau de la machine virtuelle.
Les machines virtuelles que vous avez créées, au moyen de groupes de machines virtuelles identiques en mode d’orchestration flexible, n’ont pas d’accès sortant par défaut.
Pour plus d’informations sur les connexions sortantes dans Azure, consultez Accès sortant par défaut dans Azure et Utiliser SNAT (Source Network Address Translation) pour les connexions sortantes.
Installer IIS
Utilisez Set-AzVMExtension pour installer l’extension de script personnalisé.
L’extension exécute PowerShell Add-WindowsFeature Web-Server
pour installer le serveur web IIS, puis met à jour la page Default.htm pour qu’elle affiche le nom d’hôte de la machine virtuelle :
Important
Veillez à ce que les déploiements de machines virtuelles des étapes précédentes soient terminés avant de continuer. Utilisez Get-Job
pour vérifier l’état des travaux de déploiement de machines virtuelles.
## 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 = "myVM$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
}
Les extensions sont déployées en tant que travaux PowerShell. Pour afficher l’état des travaux d’installation, utilisez 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
Assurez-vous que l’État des travaux est Terminé avant de passer aux étapes suivantes.
Tester l’équilibreur de charge
Utilisez Get-AzPublicIpAddress pour obtenir l’adresse IP publique de l’équilibreur de charge :
$ip = @{
ResourceGroupName = $rg.name
Name = 'myPublicIP'
}
Get-AzPublicIPAddress @ip | select IpAddress
Copiez l’adresse IP publique, puis collez-la dans la barre d’adresses de votre navigateur. La page par défaut du serveur Web IIS s’affiche sur le navigateur.
Nettoyer les ressources
Lorsque vous n'en avez plus besoin, vous pouvez utiliser la commande Remove-AzResourceGroup pour supprimer le groupe de ressources, l'équilibreur de charge et les ressources restantes.
Remove-AzResourceGroup -Name $rg.name
Étapes suivantes
Dans ce guide de démarrage rapide, vous :
Avez créé un Azure Load Balancer
Avez attaché 2 machines virtuelles à l’équilibreur de charge
Testé l’équilibreur de charge
Pour en savoir plus sur Azure Load Balancer, consultez :