Delen via


Zelfstudie: Toepassingen installeren in Virtuele-machineschaalsets met Azure PowerShell

Als u toepassingen wilt uitvoeren op de exemplaren van een virtuele machine (VM) in een schaalset, moet u eerst de toepassingsonderdelen en de vereiste bestanden installeren. In een vorige zelfstudie hebt u geleerd om een aangepaste VM-installatiekopie te maken en te gebruiken voor het implementeren van uw VM-exemplaren. Deze aangepaste installatiekopie bevat handmatige installaties van toepassingen en configuraties. U kunt de installatie van toepassingen op een schaalset ook automatiseren nadat elk VM-exemplaar is geïmplementeerd. Bovendien kunt u toepassingen bijwerken die al worden uitgevoerd in een schaalset. In deze zelfstudie leert u het volgende:

  • Automatisch toepassingen installeren in een schaalset
  • De aangepaste scriptextensie van Azure gebruiken
  • Een actieve toepassing in een schaalset bijwerken

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Azure Cloud Shell

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde Cloud Shell-opdrachten gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell op te starten:

Optie Voorbeeld/koppeling
Selecteer Uitproberen in de rechterbovenhoek van een code- of opdrachtblok. Als u Try It selecteert, wordt de code of opdracht niet automatisch gekopieerd naar Cloud Shell. Schermopname van een voorbeeld van Probeer het nu voor Azure Cloud Shell.
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Knop om Azure Cloud Shell te starten.
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Schermopname van de knop Cloud Shell in Azure Portal

Azure Cloud Shell gebruiken:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok (of opdrachtblok) om de code of opdracht te kopiëren.

  3. Plak de code of opdracht in de Cloud Shell-sessie door Ctrl+Shift+V in Windows en Linux te selecteren of door Cmd+Shift+V te selecteren in macOS.

  4. Selecteer Enter om de code of opdracht uit te voeren.

Wat is de aangepaste scriptextensie van Azure?

Met de aangepaste scriptextensie kunnen scripts worden gedownload en uitgevoerd op virtuele machines in Azure. Deze uitbreiding is handig voor post-implementatieconfiguraties, software-installaties of andere configuratie-/beheertaken. Scripts kunnen worden gedownload uit Azure Storage of GitHub, of worden geleverd in Azure Portal tijdens de uitvoering van extensies.

De aangepaste scriptextensie is geïntegreerd met Azure Resource Manager-sjablonen. Het kan ook worden gebruikt in combinatie met Azure CLI, Azure PowerShell, de Azure-portal of de REST-API. Zie voor meer informatie het overzicht van de aangepaste scriptextensie.

Als u de aangepaste scriptextensie in actie wilt zien, maakt u een schaalset die de IIS-webserver installeert en de hostnaam levert van het schaalset-VM-exemplaar. De definitie van de aangepaste scriptextensie downloadt een voorbeeldscript vanuit GitHub, installeert de vereiste pakketten en schrijft de hostnaam van het VM-exemplaar naar een standaard-HTML-pagina.

Een schaalset maken

Maak een resourcegroep met behulp van de opdracht New-AzResourceGroup. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost:

New-AzResourceGroup -Name myResourceGroup -Location "East US"

Maak nu een virtuele-machineschaalset met New-AzVmss. Om het verkeer te distribueren naar de verschillende VM-exemplaren, wordt er ook een load balancer gemaakt. De load balancer bevat regels voor het distribueren van verkeer op TCP-poort 80. Daarnaast is extern bureaubladverkeer op TCP-poort 3389 en externe communicatie met PowerShell op TCP-poort 5985 mogelijk. Wanneer u hierom wordt gevraagd, kunt u uw eigen beheerdersreferenties instellen voor de VM-exemplaren in de schaalset:

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -OrchestrationMode "Flexible" `
  -Location "EastUS" `
  -UpgradePolicyMode "Manual" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" 

Het duurt enkele minuten om alle schaalsetresources en VM's te maken en te configureren.

Definitie van de aangepaste scriptextensie maken

Azure PowerShell gebruikt een hashtabel voor het opslaan van het bestand dat moet worden gedownload en de opdracht die moet worden uitgevoerd. In het volgende voorbeeld wordt een voorbeeld van een script vanuit GitHub gebruikt. Maak eerst dit configuratieobject. Het moet er zo uitzien:

$customConfig = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis.ps1"
}

Pas nu de aangepaste scriptextensie toe met AzVmssExtension. Het eerder gedefinieerde configuratieobject wordt doorgegeven aan de extensie. Werk de extensie bij op de schaalsetprofielexemplaren met Update-AzVmss.

# Get information about the scale set
$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"

# Add the Custom Script Extension to install IIS and configure basic website
$vmss = Add-AzVmssExtension `
  -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.9 `
  -Setting $customConfig

# Update the scale set
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

De extensie toevoegen aan de bestaande schaalsetexemplaren

Voer een handmatige upgrade uit om de bijgewerkte extensie toe te passen op alle bestaande schaalsetexemplaren. Het kan enkele minuten duren voordat de update is voltooid.

Update-AzVmssInstance -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "*"

Elk VM-exemplaar in de schaalset downloadt het script vanuit GitHub en voert het uit. In een meer complex voorbeeld kunnen meerdere toepassingsonderdelen en bestanden worden geïnstalleerd. Als de schaalset omhoog wordt geschaald, passen de VM-exemplaren automatisch dezelfde definitie van de aangepaste scriptextensie toe en installeren deze de vereiste toepassing.

Verkeer toestaan naar de toepassing

Maak een netwerkbeveiligingsgroep met New-AzNetworkSecurityRuleConfig en New-AzNetworkSecurityGroup om toegang toe te staan tot de eenvoudige webtoepassing. Zie Netwerken voor virtuele-machineschaalsets van Azure voor meer informatie.

#Create a rule to allow traffic over port 80
$nsgFrontendRule = New-AzNetworkSecurityRuleConfig `
  -Name myFrontendNSGRule `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 200 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

#Create a network security group and associate it with the rule
$nsgFrontend = New-AzNetworkSecurityGroup `
  -ResourceGroupName  "myResourceGroup" `
  -Location EastUS `
  -Name myFrontendNSG `
  -SecurityRules $nsgFrontendRule

$vnet = Get-AzVirtualNetwork `
  -ResourceGroupName  "myResourceGroup" `
  -Name myVnet

$frontendSubnet = $vnet.Subnets[0]

$frontendSubnetConfig = Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $vnet `
  -Name mySubnet `
  -AddressPrefix $frontendSubnet.AddressPrefix `
  -NetworkSecurityGroup $nsgFrontend

Set-AzVirtualNetwork -VirtualNetwork $vnet

Uw schaalset testen

Als u de webserver in actie wilt zien, haalt u het openbare IP-adres van de load balancer op met Get-AzPublicIpAddress. In het volgende voorbeeld wordt het IP-adres weergegeven dat is gemaakt in de resourcegroep myResourceGroup:

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress

Voer in een webbrowser het openbare IP-adres van de load balancer in. Via de load balancer wordt verkeer naar een van uw VM-instanties gedistribueerd, zoals wordt weergegeven in het volgende voorbeeld:

Basiswebpagina in IIS

Sluit de webbrowser niet af, zodat u in de volgende stap een bijgewerkte versie ziet.

Het upgradebeleid wijzigen

In de vorige sectie was een handmatige upgrade nodig om de bijgewerkte toepassing toe te passen op alle exemplaren van de schaalset. Als u wilt dat updates automatisch worden toegepast op alle bestaande schaalsetexemplaren, werkt u het upgradebeleid bij van handmatig naar automatisch. Zie Upgradebeleidsregels voor virtuele-machineschaalsets voor meer informatie over upgradebeleid.

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Update-Azvmss `
    -ResourceGroupName "myResourceGroup" `
    -Name "myScaleSet" `
    -UpgradePolicyMode "Automatic" `
    -VirtualMachineScaleSet $vmss

App-implementatie bijwerken

Gedurende de levenscyclus van een schaalset moet u wellicht een bijgewerkte versie van uw toepassing implementeren. U kunt met de aangepaste scriptextensie verwijzen naar een bijgewerkt implementatiescript en vervolgens de extensie opnieuw op uw schaalset toepassen.

Maak een nieuwe definitie van een configuratie met de naam customConfigv2. Deze definitie voert een bijgewerkte versie v2 van het installatiescript van de toepassing uit:

$customConfigv2 = @{
  "fileUris" = (,"https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate-iis-v2.ps1");
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File automate-iis-v2.ps1"
}

Werk de configuratie van de aangepaste scriptextensie bij op de VM-exemplaren in uw schaalset. De definitie customConfigv2 wordt gebruikt om de bijgewerkte versie van de toepassing toe te passen op de schaalset:

$vmss = Get-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet"
 
$vmss.VirtualMachineProfile.ExtensionProfile[0].Extensions[0].Settings = $customConfigv2
 
Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Name "myScaleSet" `
  -VirtualMachineScaleSet $vmss

Omdat de schaalset nu gebruikmaakt van een beleid voor automatische upgrade, wordt de bijgewerkte toepassing automatisch toegepast op bestaande schaalsetexemplaren. Vernieuw uw webbrowser om de bijgewerkte toepassing weer te geven. Vernieuw de website in uw browser voor een overzicht van de bijgewerkte versie:

Bijgewerkte webpagina in IIS

Resources opschonen

Als u de schaalset en aanvullende resources wilt verwijderen, verwijdert u de resourcegroep en alle bijbehorende resources met Remove-AzResourceGroup. De parameter -Force bevestigt dat u de resources wilt verwijderen, zonder een extra prompt om dit te doen. De parameter -AsJob retourneert het besturingselement naar de prompt zonder te wachten totdat de bewerking is voltooid.

Remove-AzResourceGroup -Name "myResourceGroup" -Force -AsJob

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u automatisch toepassingen kunt installeren of bijwerken in uw schaalset met Azure PowerShell:

  • Automatisch toepassingen installeren in een schaalset
  • De aangepaste scriptextensie van Azure gebruiken
  • Een actieve toepassing in een schaalset bijwerken

Ga door naar de volgende zelfstudie voor informatie over het automatisch schalen van uw schaalset.