Création d'une sonde personnalisée pour Azure Application Gateway avec PowerShell pour Azure Resource Manager

Dans cet article, une sonde personnalisée est ajoutée à une passerelle d’application existante à l’aide de PowerShell. Les sondes personnalisées sont utiles pour les applications qui ont une page de contrôle d’intégrité spécifique ou pour les applications qui ne fournissent pas de réponse correcte dans l’application web par défaut.

Remarque

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Prérequis : Installer le module Azure PowerShell

Pour exécuter la procédure indiquée dans cet article, vous devez installer et configurer le module Azure PowerShell. Veillez à suivre toutes les instructions. Une fois l’installation terminée, connectez-vous à Azure, puis sélectionnez votre abonnement.

Remarque

Pour effectuez ces étapes, vous avez besoin d’un compte Azure. Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.

Créer une passerelle d’application avec une sonde personnalisée

Se connecter et créer un groupe de ressources

  1. Utilisez Connect-AzAccount pour l’authentification.

    Connect-AzAccount
    
  2. Obtenez les abonnements associés au compte.

    Get-AzSubscription
    
  3. Parmi vos abonnements Azure, choisissez celui que vous souhaitez utiliser.

    Select-AzSubscription -Subscriptionid '{subscriptionGuid}'
    
  4. Créez un groupe de ressources. Vous pouvez ignorer cette étape si vous disposez d’un groupe de ressources existant.

    New-AzResourceGroup -Name appgw-rg -Location 'West US'
    

Azure Resource Manager requiert que tous les groupes de ressources spécifient un emplacement. Cette localisation détermine où Azure stocke les métadonnées du groupe de ressources. Assurez-vous que toutes les commandes pour la création d'une passerelle Application Gateway utiliseront le même groupe de ressources.

Dans l’exemple précédent, nous avons créé un groupe de ressources appelé appgw-RG à l’emplacement USA Ouest.

Créer un réseau virtuel et un sous-réseau

L’exemple suivant crée un réseau virtuel et un sous-réseau pour la passerelle d’application. La passerelle d’application a besoin d’utiliser son propre sous-réseau. C’est pourquoi le sous-réseau créé pour la passerelle d’application doit être plus petit que l’espace d’adressage du réseau virtuel de façon à permettre la création et l’utilisation d’autres sous-réseaux.

# Assign the address range 10.0.0.0/24 to a subnet variable to be used to create a virtual network.
$subnet = New-AzVirtualNetworkSubnetConfig -Name subnet01 -AddressPrefix 10.0.0.0/24

# Create a virtual network named appgwvnet in resource group appgw-rg for the West US region using the prefix 10.0.0.0/16 with subnet 10.0.0.0/24.
$vnet = New-AzVirtualNetwork -Name appgwvnet -ResourceGroupName appgw-rg -Location 'West US' -AddressPrefix 10.0.0.0/16 -Subnet $subnet

# Assign a subnet variable for the next steps, which create an application gateway.
$subnet = $vnet.Subnets[0]

Créer une adresse IP publique pour la configuration du front-end

Créez une ressource IP publique statique du SKU Standard nommée publicIP01 dans le groupe de ressources appgw-rg pour la région Ouest des États-Unis. Application Gateway v2 ne prend en charge que les adresses IP publiques statiques du SKU standard.

$publicip = New-AzPublicIpAddress -ResourceGroupName appgw-rg -Name publicIP01 -Location 'West US' -AllocationMethod Static -Sku Standard

Créer une passerelle Application Gateway

Avant de créer la passerelle Application Gateway, vous devez installer tous les éléments de configuration. L’exemple suivant crée les éléments de configuration nécessaires à une ressource de passerelle d’application.

Composant Description
Configuration IP de la passerelle Configuration IP d’une passerelle d’application.
Pool back-end Pool d’adresses IP, noms de domaine complets ou cartes d’interface réseau pour les serveurs d’applications qui hébergent l’application web.
Sonde d’intégrité Sonde personnalisée utilisée pour surveiller l’état des membres du pool back-end.
Paramètres HTTP Collection de paramètres comprenant le port, le protocole, l’affinité basée sur les cookies, la sonde et le délai d’expiration. Ces paramètres déterminent la façon dont le trafic est acheminé vers les membres du pool back-end.
Port frontal Port sur lequel la passerelle d’application écoute le trafic.
Port d'écoute Combinaison d’un protocole, d’une configuration d’adresses IP frontales et d’un port frontal. C’est ce qui écoute les demandes entrantes.
Règle Route le trafic vers le back-end approprié en fonction des paramètres HTTP.
# Creates an application gateway Frontend IP configuration named gatewayIP01
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $subnet

#Creates a backend IP address pool named pool01 with IP addresses 134.170.185.46, 134.170.188.221, 134.170.185.50.
$pool = New-AzApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 134.170.185.46, 134.170.188.221, 134.170.185.50

# Creates a probe that will check health at http://contoso.com/path/path.htm
$probe = New-AzApplicationGatewayProbeConfig -Name probe01 -Protocol Http -HostName 'contoso.com' -Path '/path/path.htm' -Interval 30 -Timeout 30 -UnhealthyThreshold 8

# Creates the backend http settings to be used. This component references the $probe created in the previous command.
$poolSetting = New-AzApplicationGatewayBackendHttpSettings -Name poolsetting01 -Port 80 -Protocol Http -CookieBasedAffinity Disabled -Probe $probe -RequestTimeout 80

# Creates a frontend port for the application gateway to listen on port 80 that will be used by the listener.
$fp = New-AzApplicationGatewayFrontendPort -Name frontendport01 -Port 80

# Creates a frontend IP configuration. This associates the $publicip variable defined previously with the frontend IP that will be used by the listener.
$fipconfig = New-AzApplicationGatewayFrontendIPConfig -Name fipconfig01 -PublicIPAddress $publicip

# Creates the listener. The listener is a combination of protocol and the frontend IP configuration $fipconfig and frontend port $fp created in previous steps.
$listener = New-AzApplicationGatewayHttpListener -Name listener01  -Protocol Http -FrontendIPConfiguration $fipconfig -FrontendPort $fp

# Creates the rule that routes traffic to the backend pools. In this example, we create a basic rule that uses the previously defined HTTP settings and backend address pool. It also associates the listener with the rule.
$rule = New-AzApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool -Priority 1

# Sets the SKU of the application gateway. In this example, we create a Standard v2 application gateway with two instances.
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2 -Capacity 2

# The final step creates the application gateway with all the previously defined components.
$appgw = New-AzApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg -Location 'West US' -BackendAddressPools $pool -Probes $probe -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig  -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku

Ajouter une sonde à une passerelle d’application existante

L’extrait de code suivant ajoute une sonde à une passerelle d’application existante.

# Load the application gateway resource into a PowerShell variable by using Get-AzApplicationGateway.
$getgw =  Get-AzApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg

# Create the probe object that will check health at http://contoso.com/path/path.htm
$probe = Add-AzApplicationGatewayProbeConfig -ApplicationGateway $getgw -Name probe01 -Protocol Http -HostName 'contoso.com' -Path '/path/custompath.htm' -Interval 30 -Timeout 30 -UnhealthyThreshold 8

# Set the backend HTTP settings to use the new probe
$getgw = Set-AzApplicationGatewayBackendHttpSettings -ApplicationGateway $getgw -Name $getgw.BackendHttpSettingsCollection.name -Port 80 -Protocol Http -CookieBasedAffinity Disabled -Probe $probe -RequestTimeout 120

# Save the application gateway with the configuration changes
Set-AzApplicationGateway -ApplicationGateway $getgw

Supprimer une sonde d’une passerelle d’application existante

L’extrait de code suivant supprime une sonde au niveau d’une passerelle d’application existante.

# Load the application gateway resource into a PowerShell variable by using Get-AzApplicationGateway.
$getgw =  Get-AzApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg

# Remove the probe from the application gateway configuration object
$getgw = Remove-AzApplicationGatewayProbeConfig -ApplicationGateway $getgw -Name $getgw.Probes.name

# Set the backend HTTP settings to remove the reference to the probe. The backend http settings now use the default probe
$getgw = Set-AzApplicationGatewayBackendHttpSettings -ApplicationGateway $getgw -Name $getgw.BackendHttpSettingsCollection.name -Port 80 -Protocol http -CookieBasedAffinity Disabled

# Save the application gateway with the configuration changes
Set-AzApplicationGateway -ApplicationGateway $getgw

Obtenez l’adresse IP publique de la passerelle d’application

Après avoir créé la passerelle, récupérez son adresse IP publique statique. Pour utiliser un domaine personnalisé, créez un enregistrement A qui mappe le domaine à cette adresse. Pour plus d’informations, voir Mapper un domaine personnalisé vers une ressource Azure.

$publicip = Get-AzPublicIpAddress -ResourceGroupName appgw-rg -Name publicIP01
$publicip.IpAddress

Étapes suivantes

Découvrez comment configurer le déchargement TLS en visitant : configurer le déchargement TLS