Creare un gateway applicazione con l'hosting di più siti usando Azure PowerShellCreate an application gateway with multiple site hosting using Azure PowerShell

È possibile usare Azure PowerShell per configurare l'hosting di più siti Web quando si crea un gateway applicazione.You can use Azure Powershell to configure hosting of multiple web sites when you create an application gateway. In questa esercitazione si creano pool back-end usando set di scalabilità di macchine virtuali,In this tutorial, you create backend pools using virtual machines scale sets. e quindi si configurano i listener e le regole in base ai domini di cui si è proprietari per assicurarsi che il traffico Web raggiunga i server appropriati nei pool.You then configure listeners and rules based on domains that you own to make sure web traffic arrives at the appropriate servers in the pools. Questa esercitazione presuppone che l'utente sia proprietario di più domini e che usi gli esempi di www.contoso.com e www.fabrikam.com.This tutorial assumes that you own multiple domains and uses examples of www.contoso.com and www.fabrikam.com.

In questo articolo viene spiegato come:In this article, you learn how to:

  • Configurare la reteSet up the network
  • Creare un gateway applicazioneCreate an application gateway
  • Creare i listener e le regole di routingCreate listeners and routing rules
  • Creare set di scalabilità di macchine virtuali con i pool back-endCreate virtual machine scale sets with the backend pools
  • Creare un record CNAME nel dominioCreate a CNAME record in your domain

Esempio di routing multisito

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Avviare Azure Cloud ShellLaunch Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.The Azure Cloud Shell is a free interactive shell that you can use to run the steps in this article. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.It has common Azure tools preinstalled and configured to use with your account. È sufficiente fare clic su Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just click the Copy to copy the code, paste it into the Cloud Shell, and then press enter to run it. Esistono alcuni modi per avviare Cloud Shell:There are a few ways to launch the Cloud Shell:

Fare clic su Prova nell'angolo superiore destro di un blocco di codice.Click Try It in the upper right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/powershell
Fare clic sul pulsante Cloud Shell nel menu in alto a destra nel portale di Azure.Click the Cloud Shell button on the menu in the upper right of the Azure portal. Cloud Shell nel portaleCloud Shell in the portal

Se si sceglie di installare e usare PowerShell in locale, per questa esercitazione è necessario il modulo Azure PowerShell versione 3.6 o successiva.If you choose to install and use the PowerShell locally, this tutorial requires the Azure PowerShell module version 3.6 or later. Per trovare la versione, eseguire Get-Module -ListAvailable AzureRM.To find the version, run Get-Module -ListAvailable AzureRM . Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzureRmAccount per creare una connessione con Azure.If you are running PowerShell locally, you also need to run Connect-AzureRmAccount to create a connection with Azure.

Creare un gruppo di risorseCreate a resource group

Un gruppo di risorse è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.A resource group is a logical container into which Azure resources are deployed and managed. Creare un gruppo di risorse di Azure usando New-AzureRmResourceGroup.Create an Azure resource group using New-AzureRmResourceGroup.

New-AzureRmResourceGroup -Name myResourceGroupAG -Location eastus

Creare risorse di reteCreate network resources

Configurare le subnet denominate myBackendSubnet e myAGSubnet usando New-AzureRmVirtualNetworkSubnetConfig.Configure the subnets named myBackendSubnet and myAGSubnet using New-AzureRmVirtualNetworkSubnetConfig. Creare la rete virtuale denominata myVNet usando New-AzureRmVirtualNetwork con le configurazioni di subnet.Create the virtual network named myVNet using New-AzureRmVirtualNetwork with the subnet configurations. Creare infine l'indirizzo IP pubblico denominato myAGPublicIPAddress con New AzureRmPublicIpAddress.And finally, create the public IP address named myAGPublicIPAddress using New-AzureRmPublicIpAddress. Queste risorse vengono usate per fornire la connettività di rete al gateway applicazione e alle risorse associate.These resources are used to provide network connectivity to the application gateway and its associated resources.

$backendSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.0.1.0/24
$agSubnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.0.2.0/24
$vnet = New-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.0.0.0/16 `
  -Subnet $backendSubnetConfig, $agSubnetConfig
$pip = New-AzureRmPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Dynamic

Creare un gateway applicazioneCreate an application gateway

Creare le configurazioni IP e la porta front-endCreate the IP configurations and frontend port

Associare la subnet myAGSubnet creata in precedenza al gateway applicazione usando New-AzureRmApplicationGatewayIPConfiguration.Associate myAGSubnet that you previously created to the application gateway using New-AzureRmApplicationGatewayIPConfiguration. Assegnare myAGPublicIPAddress al gateway applicazione usando New-AzureRmApplicationGatewayFrontendIPConfig.Assign myAGPublicIPAddress to the application gateway using New-AzureRmApplicationGatewayFrontendIPConfig.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$subnet=$vnet.Subnets[0]
$gipconfig = New-AzureRmApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzureRmApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

Creare i pool e le impostazioni back-endCreate the backend pools and settings

Creare i pool back-end denominati contosoPool e fabrikamPool per il gateway applicazione usando New-AzureRmApplicationGatewayBackendAddressPool.Create backend pools named contosoPool and fabrikamPool for the application gateway using New-AzureRmApplicationGatewayBackendAddressPool. Configurare le impostazioni per il pool usando New-AzureRmApplicationGatewayBackendHttpSettings.Configure the settings for the pool using New-AzureRmApplicationGatewayBackendHttpSettings.

$contosoPool = New-AzureRmApplicationGatewayBackendAddressPool `
  -Name contosoPool 
$fabrikamPool = New-AzureRmApplicationGatewayBackendAddressPool `
  -Name fabrikamPool 
$poolSettings = New-AzureRmApplicationGatewayBackendHttpSettings `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 120

Creare i listener e le regoleCreate the listeners and rules

È necessario un listener per consentire al gateway applicazione di instradare il traffico in modo appropriato ai pool back-end.A listener is required to enable the application gateway to route traffic appropriately to the backend pools. In questa esercitazione si creano i listener per ognuno dei due domini.In this tutorial, you create listeners for each of your two domains. In questo esempio vengono creati i listener per i domini www.contoso.com e www.fabrikam.com.In this example, listeners are created for the domains of www.contoso.com and www.fabrikam.com.

Creare i listener denominati contosoListener e fabrikamListener usando New-AzureRmApplicationGatewayHttpListener con la configurazione front-end e la porta front-end create prima.Create the listeners named contosoListener and fabrikamListener using New-AzureRmApplicationGatewayHttpListener with the frontend configuration and frontend port that you previously created. Sono necessarie regole per comunicare ai listener quale pool back-end usare per il traffico in ingresso.Rules are required for the listeners to know which backend pool to use for incoming traffic. Creare le regole di base denominate contosoRule e fabrikamRule usando New-AzureRmApplicationGatewayRequestRoutingRule.Create basic rules named contosoRule and fabrikamRule using New-AzureRmApplicationGatewayRequestRoutingRule.

$contosolistener = New-AzureRmApplicationGatewayHttpListener `
  -Name contosoListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport `
  -HostName "www.contoso.com"
$fabrikamlistener = New-AzureRmApplicationGatewayHttpListener `
  -Name fabrikamListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport `
  -HostName "www.fabrikam.com"
$contosoRule = New-AzureRmApplicationGatewayRequestRoutingRule `
  -Name contosoRule `
  -RuleType Basic `
  -HttpListener $contosoListener `
  -BackendAddressPool $contosoPool `
  -BackendHttpSettings $poolSettings
$fabrikamRule = New-AzureRmApplicationGatewayRequestRoutingRule `
  -Name fabrikamRule `
  -RuleType Basic `
  -HttpListener $fabrikamListener `
  -BackendAddressPool $fabrikamPool `
  -BackendHttpSettings $poolSettings

Creare il gateway applicazioneCreate the application gateway

Ora che sono state create le risorse di supporto necessarie, specificare i parametri per il gateway applicazione denominato myAppGateway usando New-AzureRmApplicationGatewaySku e quindi crearlo usando New-AzureRmApplicationGateway.Now that you created the necessary supporting resources, specify parameters for the application gateway named myAppGateway using New-AzureRmApplicationGatewaySku, and then create it using New-AzureRmApplicationGateway.

$sku = New-AzureRmApplicationGatewaySku `
  -Name Standard_Medium `
  -Tier Standard `
  -Capacity 2
$appgw = New-AzureRmApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $contosoPool, $fabrikamPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $contosoListener, $fabrikamListener `
  -RequestRoutingRules $contosoRule, $fabrikamRule `
  -Sku $sku

Creare set di scalabilità di macchine virtualiCreate virtual machine scale sets

In questo esempio si creano due set di scalabilità di macchine virtuali che supportano i due pool back-end creati.In this example, you create two virtual machine scale sets that support the two backend pools that you created. I set di scalabilità creati sono denominati myvmss1 e myvmss2.The scale sets that you create are named myvmss1 and myvmss2. Ogni set di scalabilità contiene due istanze di macchina virtuale in cui si installa IIS.Each scale set contains two virtual machine instances on which you install IIS. Il set di scalabilità viene assegnato al pool back-end quando si configurano le impostazioni IP.You assign the scale set to the backend pool when you configure the IP settings.

$vnet = Get-AzureRmVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Name myVNet
$appgw = Get-AzureRmApplicationGateway `
  -ResourceGroupName myResourceGroupAG `
  -Name myAppGateway
$contosoPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name contosoPool `
  -ApplicationGateway $appgw
$fabrikamPool = Get-AzureRmApplicationGatewayBackendAddressPool `
  -Name fabrikamPool `
  -ApplicationGateway $appgw
for ($i=1; $i -le 2; $i++)
{
  if ($i -eq 1) 
  {
    $poolId = $contosoPool.Id
  }
  if ($i -eq 2)
  {
    $poolId = $fabrikamPool.Id
  }
  $ipConfig = New-AzureRmVmssIpConfig `
    -Name myVmssIPConfig$i `
    -SubnetId $vnet.Subnets[1].Id `
    -ApplicationGatewayBackendAddressPoolsId $poolId
  $vmssConfig = New-AzureRmVmssConfig `
    -Location eastus `
    -SkuCapacity 2 `
    -SkuName Standard_DS2 `
    -UpgradePolicyMode Automatic
  Set-AzureRmVmssStorageProfile $vmssConfig `
    -ImageReferencePublisher MicrosoftWindowsServer `
    -ImageReferenceOffer WindowsServer `
    -ImageReferenceSku 2016-Datacenter `
    -ImageReferenceVersion latest
  Set-AzureRmVmssOsProfile $vmssConfig `
    -AdminUsername azureuser `
    -AdminPassword "Azure123456!" `
    -ComputerNamePrefix myvmss$i
  Add-AzureRmVmssNetworkInterfaceConfiguration `
    -VirtualMachineScaleSet $vmssConfig `
    -Name myVmssNetConfig$i `
    -Primary $true `
    -IPConfiguration $ipConfig
  New-AzureRmVmss `
    -ResourceGroupName myResourceGroupAG `
    -Name myvmss$i `
    -VirtualMachineScaleSet $vmssConfig
}

Installare IISInstall IIS

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }

for ($i=1; $i -le 2; $i++)
{
  $vmss = Get-AzureRmVmss `
    -ResourceGroupName myResourceGroupAG `
    -VMScaleSetName myvmss$i
  Add-AzureRmVmssExtension -VirtualMachineScaleSet $vmss `
    -Name "customScript" `
    -Publisher "Microsoft.Compute" `
    -Type "CustomScriptExtension" `
    -TypeHandlerVersion 1.8 `
    -Setting $publicSettings
  Update-AzureRmVmss `
    -ResourceGroupName myResourceGroupAG `
    -Name myvmss$i `
    -VirtualMachineScaleSet $vmss
}

Creare un record CNAME nel dominioCreate CNAME record in your domain

Dopo aver creato il gateway applicazione con l'indirizzo IP pubblico, è possibile ottenere l'indirizzo DNS e usarlo per creare un record CNAME nel dominio.After the application gateway is created with its public IP address, you can get the DNS address and use it to create a CNAME record in your domain. È possibile usare Get-AzureRmPublicIPAddress per ottenere l'indirizzo DNS del gateway applicazione.You can use Get-AzureRmPublicIPAddress to get the DNS address of the application gateway. Copiare il valore fqdn di DNSSettings e usarlo come valore del record CNAME creato.Copy the fqdn value of the DNSSettings and use it as the value of the CNAME record that you create. Non è consigliabile usare record A perché l'indirizzo VIP può cambiare quando il gateway applicazione viene riavviato.The use of A-records is not recommended because the VIP may change when the application gateway is restarted.

Get-AzureRmPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

Testare il gateway applicazioneTest the application gateway

Immettere il nome di dominio nella barra degli indirizzi del browser.Enter your domain name into the address bar of your browser. Ad esempio, http://www.contoso.com.Such as, http://www.contoso.com.

Testare il sito contoso nel gateway applicazione

Sostituire l'indirizzo con l'altro dominio come nell'esempio seguente:Change the address to your other domain and you should see something like the following example:

Testare il sito fabrikam nel gateway applicazione

Passaggi successiviNext steps

In questo articolo si è appreso come:In this article, you learned how to:

  • Configurare la reteSet up the network
  • Creare un gateway applicazioneCreate an application gateway
  • Creare i listener e le regole di routingCreate listeners and routing rules
  • Creare set di scalabilità di macchine virtuali con i pool back-endCreate virtual machine scale sets with the backend pools
  • Creare un record CNAME nel dominioCreate a CNAME record in your domain