Erstellen eines benutzerdefinierten Tests für Azure Application Gateway mithilfe von PowerShell für Azure-Ressourcen-Manager

In diesem Artikel fügen Sie einen benutzerdefinierten Test zu einem vorhandenen Anwendungsgateway mit PowerShell hinzu. Benutzerdefinierte Tests sind für Anwendungen, die über eine bestimmte Seite für die Integritätsprüfung verfügen, oder für Anwendungen hilfreich, die keine erfolgreiche Antwort für die Standardwebanwendung bereitstellen.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Voraussetzung: Das Azure PowerShell-Modul muss installiert sein.

Um die Schritte in diesem Artikel ausführen zu können, müssen Sie das Azure PowerShell-Modul installieren und konfigurieren. Führen Sie unbedingt alle Anweisungen vollständig aus. Nach dem Abschluss der Installation melden Sie sich bei Azure an und wählen Ihr Abonnement aus.

Hinweis

Sie benötigen ein Azure-Konto, um diese Schritte durchführen zu können. Wenn Sie nicht über ein Azure-Konto verfügen, können Sie sich für eine kostenlose Testversionregistrieren.

Erstellen eines Anwendungsgateways mit benutzerdefiniertem Test

Anmelden und Erstellen einer Ressourcengruppe

  1. Verwenden Sie zum Authentifizieren Connect-AzAccount.

    Connect-AzAccount
    
  2. Rufen Sie die Abonnements für das Konto ab.

    Get-AzSubscription
    
  3. Wählen Sie aus, welches Azure-Abonnement Sie verwenden möchten.

    Select-AzSubscription -Subscriptionid '{subscriptionGuid}'
    
  4. Erstellen Sie eine Ressourcengruppe. Dieser Schritt kann übersprungen werden, wenn Sie über eine vorhandene Ressourcengruppe verfügen.

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

Azure Resource Manager erfordert, dass alle Ressourcengruppen einen Speicherort angeben. Dieser wird als Standardspeicherort für Ressourcen in dieser Ressourcengruppe verwendet. Stellen Sie sicher, dass alle Befehle, mit denen ein Anwendungsgateway erstellt wird, die gleiche Ressourcengruppe verwenden.

Im obigen Beispiel haben wir eine Ressourcengruppe namens appgw-RG mit dem Standort USA, Westen erstellt.

Erstellen eines virtuellen Netzwerks und eines Subnetzes

Mit dem folgenden Beispiel erstellen Sie ein virtuelles Netzwerk und ein Subnetz für das Anwendungsgateway. Für die Verwendung des Anwendungsgateways ist ein eigenes Subnetz erforderlich. Aus diesem Grund sollte das für das Anwendungsgateway erstellte Subnetz kleiner sein als der Adressraum des VNETs, damit auch andere Subnetze erstellt und verwendet werden können.

# 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]

Erstellen der öffentlichen IP-Adresse für die Front-End-Konfiguration

Erstellen Sie eine öffentliche IP-Ressource namens publicIP01 in der Ressourcengruppe appgw-rg für die Region „USA, Westen“. In diesem Beispiel wird eine öffentliche IP-Adresse für die Front-End-IP-Adresse des Anwendungsgateways verwendet. Das Anwendungsgateway erfordert, dass die öffentliche IP-Adresse einen dynamisch erstellten DNS-Namen aufweist, daher kann die -DomainNameLabel nicht während der Erstellung der öffentlichen IP-Adresse angegeben werden.

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

Erstellen eines Anwendungsgateways

Sie richten alle Konfigurationselemente ein, bevor Sie das Anwendungsgateway erstellen. Das folgende Beispiel erstellt die Konfigurationselemente, die für eine Anwendungsgatewayressource benötigt werden.

Komponente Beschreibung
Gateway-IP-Konfiguration Eine IP-Konfiguration für ein Anwendungsgateway.
Back-End-Pool Ein Pool von IP-Adressen, FQDNs oder NICs, die zu den Anwendungsservern gehören, die die Webanwendung hosten.
Integritätstest Eine benutzerdefinierter Test, mit dem die Integrität der Back-End-Poolmitglieder überwacht wird.
HTTP-Einstellungen Eine Sammlung von Einstellungen, einschließlich, Port, Protokoll, cookiebasierte Affinität, Test und Timeout. Diese Einstellungen bestimmen, wie Datenverkehr zu den Back-End-Poolmitgliedern geleitet wird.
Front-End-Port Der Port, den das Anwendungsgateway hinsichtlich des Datenverkehrs überwacht.
Listener Eine Kombination aus Protokoll, Front-End-IP-Konfiguration und Front-End-Port. Dieser überwacht auf eingehende Anforderungen.
Regel Leitet den Datenverkehr auf Basis von HTTP-Einstellungen an das entsprechende Back-End weiter.
# 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 120 -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 previous defined http settings and backend address pool.  It also associates the listener to the rule
$rule = New-AzApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

# Sets the SKU of the application gateway, in this example we create a small standard application gateway with 2 instances.
$sku = New-AzApplicationGatewaySku -Name Standard_Small -Tier Standard -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

Hinzufügen eines Tests zu einem vorhandenen Application Gateway

Der folgende Codeausschnitt fügt einen Test zu einem vorhandenen Anwendungsgateway hinzu.

# 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 120 -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

Entfernen eines Tests aus einem vorhandenen Application Gateway

Der folgende Codeausschnitt entfernt einen Test aus einem vorhandenen Anwendungsgateway.

# 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

Abrufen des DNS-Namens des Anwendungsgateways

Nach dem Erstellen des Gateways wird das Front-End für die Kommunikation konfiguriert. Wenn Sie eine öffentliche IP-Adresse verwenden, wird für das Anwendungsgateway ein dynamisch zugewiesener DNS-Name benötigt. Dieser Name ist kein Anzeigename. Um sicherzustellen, dass die Endbenutzer auf das Anwendungsgateway zugreifen können, kann mit einem CNAME-Eintrag auf den öffentlichen Endpunkt des Anwendungsgateways verwiesen werden. Konfigurieren eines benutzerdefinierten Domänennamens in Azure Rufen Sie hierzu mithilfe des PublicIPAddress-Elements, das an das Anwendungsgateway angefügt ist, Details zum Anwendungsgateway und den zugeordneten IP/DNS-Namen ab. Verwenden Sie den DNS-Namen des Anwendungsgateways zum Erstellen eines CNAME-Eintrags, der die beiden Webanwendungen an diesen DNS-Namen verweist. Die Verwendung von A-Einträgen wird nicht empfohlen, da sich die VIP beim Neustart des Anwendungsgateways möglicherweise verändert.

Get-AzPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name                     : publicIP01
ResourceGroupName        : appgw-RG
Location                 : westus
Id                       : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag                     : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid             : 00000000-0000-0000-0000-000000000000
ProvisioningState        : Succeeded
Tags                     : 
PublicIpAllocationMethod : Dynamic
IpAddress                : xx.xx.xxx.xx
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                                "Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
                            Configurations/frontend1"
                            }
DnsSettings              : {
                                "Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
                            }

Nächste Schritte

Informationen zum Konfigurieren der TLS-Auslagerungen finden Sie unter: Konfigurieren der TLS-Auslagerung