Udostępnij za pomocą


Samouczek: instalowanie aplikacji w zestawach skalowania maszyn wirtualnych przy użyciu programu Azure PowerShell

Aby uruchamiać aplikacje na instancjach maszyn wirtualnych w grupie skalowania, należy najpierw zainstalować składniki aplikacji oraz wymagane pliki. W poprzednim samouczku nauczyłeś się, jak tworzyć i używać niestandardowego obrazu maszyny wirtualnej w celu wdrożenia wystąpień maszyn wirtualnych. Ten obraz niestandardowy zawiera ręczne instalacje i konfiguracje aplikacji. Można również zautomatyzować instalowanie aplikacji w zestawie skalowania po wdrożeniu każdego wystąpienia maszyny wirtualnej lub zaktualizować aplikację, która jest już uruchamiana w zestawie skalowania. Z tego samouczka dowiesz się, jak wykonywać następujące działania:

  • Automatyczne instalowanie aplikacji w zestawie skalowania
  • Użycie niestandardowego rozszerzenia skryptu Azure
  • Aktualizowanie uruchomionej aplikacji w zestawie skalowania

Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

Azure Cloud Shell

Na platformie Azure hostowane jest interaktywne środowisko wiersza poleceń Azure Cloud Shell, z którego można korzystać przez przeglądarkę. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Option Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Zrzut ekranu przedstawiający przykład narzędzia Try It dla usługi Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Przycisk uruchamiania usługi Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Zrzut ekranu przedstawiający przycisk usługi Cloud Shell w witrynie Azure Portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając Ctrl+Shift+ w systemach Windows i Linux lub wybierając pozycję Cmd++V w systemie macOS.

  4. Wybierz Enter, aby uruchomić kod lub polecenie.

Co to jest rozszerzenie niestandardowego skryptu platformy Azure?

Niestandardowe rozszerzenie skryptu pobiera i wykonuje skrypty na maszynach wirtualnych platformy Azure. To rozszerzenie jest przydatne w przypadku konfiguracji po wdrożeniu, instalacji oprogramowania lub dowolnego innego zadania konfiguracji/zarządzania. Skrypty można pobrać z usługi Azure Storage lub GitHub albo udostępnić w witrynie Azure Portal w czasie wykonywania rozszerzenia.

Rozszerzenie Custom Script integruje się z szablonami usługi Azure Resource Manager. Można go również używać z interfejsem wiersza polecenia platformy Azure, programem Azure PowerShell, witryną Azure Portal lub interfejsem API REST. Aby uzyskać więcej informacji, zobacz Omówienie rozszerzenia niestandardowego skryptu.

Aby zobaczyć działanie rozszerzenia skryptu niestandardowego, utwórz zestaw skalowania, który instaluje serwer internetowy usług IIS i wyświetla nazwę hosta wystąpienia maszyny wirtualnej zestawu skalowania. Definicja rozszerzenia niestandardowego skryptu pobiera przykładowy skrypt z usługi GitHub, instaluje wymagane pakiety, a następnie zapisuje nazwę hosta wystąpienia maszyny wirtualnej na podstawowej stronie HTML.

Utwórz zestaw skalowania

Utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup. Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w lokalizacji Wschodnie stany USA :

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

Teraz utwórz zestaw skalowania maszyn wirtualnych za pomocą New-AzVmss. Aby dystrybuować ruch do poszczególnych wystąpień maszyn wirtualnych, tworzony jest również moduł równoważenia obciążenia. Moduł równoważenia obciążenia zawiera reguły dystrybucji ruchu na porcie TCP 80. Umożliwia również ruch pulpitu zdalnego na porcie TCP 3389 oraz zdalne wykonywanie poleceń PowerShell na porcie TCP 5985. Po wyświetleniu monitu możesz ustawić własne poświadczenia administracyjne dla wystąpień maszyn wirtualnych w zestawie skalowania:

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

Utworzenie i skonfigurowanie wszystkich zasobów i maszyn wirtualnych zestawu skalowania trwa kilka minut.

Tworzenie niestandardowej definicji rozszerzenia skryptu

Program Azure PowerShell używa tabeli skrótu do przechowywania pliku do pobrania i polecenia do wykonania. W poniższym przykładzie jest używany przykładowy skrypt z usługi GitHub. Najpierw utwórz ten obiekt konfiguracji w następujący sposób:

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

Teraz zastosuj rozszerzenie niestandardowego skryptu za pomocą polecenia Add-AzVmssExtension. Zdefiniowany wcześniej obiekt konfiguracji jest przekazywany do rozszerzenia. Zaktualizuj rozszerzenie w profilach zestawu skalowania za pomocą polecenia 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

Dodaj rozszerzenie do istniejących wystąpień zestawu skalowania

Wykonaj uaktualnienie ręczne, aby zastosować zaktualizowane rozszerzenie do wszystkich istniejących wystąpień zestawu skalowania. Ukończenie aktualizacji może potrwać kilka minut.

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

Każde wystąpienie maszyny wirtualnej w zestawie skalowania pobiera i uruchamia skrypt z usługi GitHub. W bardziej złożonym przykładzie można zainstalować wiele składników aplikacji i plików. Jeśli zestaw skalowania jest skalowany w górę, nowe wystąpienia maszyn wirtualnych automatycznie stosują tę samą definicję rozszerzenia "Custom Script" i instalują wymaganą aplikację.

Zezwalaj na ruch do aplikacji

Aby zezwolić na dostęp do podstawowej aplikacji internetowej, utwórz sieciową grupę zabezpieczeń za pomocą polecenia New-AzNetworkSecurityRuleConfig i New-AzNetworkSecurityGroup. Aby uzyskać więcej informacji, zobacz Networking for Azure Virtual Machine Scale Sets (Sieć dla zestawów skalowania maszyn wirtualnych platformy Azure).

#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

Przetestuj zestaw skalowania

Aby zobaczyć działanie serwera internetowego, uzyskaj publiczny adres IP modułu równoważenia obciążenia za pomocą polecenia Get-AzPublicIpAddress. Poniższy przykład przedstawia adres IP utworzony w grupie zasobów myResourceGroup :

Get-AzPublicIpAddress -ResourceGroupName "myResourceGroup" | Select IpAddress

Wprowadź publiczny adres IP modułu równoważenia obciążenia w przeglądarce internetowej. Moduł równoważenia obciążenia dystrybuuje ruch do jednego z wystąpień maszyn wirtualnych, jak pokazano w poniższym przykładzie:

Podstawowa strona internetowa w usługach IIS

Pozostaw otwartą przeglądarkę internetową, aby zobaczyć zaktualizowaną wersję w następnym kroku.

Zmienianie zasad uaktualniania

W poprzedniej sekcji, aby zastosować zaktualizowaną aplikację do wszystkich wystąpień zestawu skalowania, konieczne było ręczne uaktualnienie. Aby umożliwić automatyczne stosowanie aktualizacji do wszystkich istniejących wystąpień zestawu skalowania, zaktualizuj zasady uaktualniania z ręcznego do automatycznego. Aby uzyskać więcej informacji na temat zasad uaktualniania, zobacz Uaktualnianie zasad dla zestawów skalowania maszyn wirtualnych.

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

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

Aktualizacja wdrożenia aplikacji

W całym cyklu życia zestawu skalowania może być konieczne wdrożenie zaktualizowanej wersji aplikacji. Za pomocą rozszerzenia niestandardowego skryptu możesz odwołać się do zaktualizowanego skryptu wdrażania, a następnie ponownie zastosować rozszerzenie do zestawu skalowania.

Utwórz nową definicję konfiguracji o nazwie customConfigv2. Ta definicja uruchamia zaktualizowaną wersję 2 skryptu instalacji aplikacji:

$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"
}

Zaktualizuj konfigurację rozszerzenia Custom Script dla wystąpień maszyn wirtualnych w zestawie skalowalnym. Definicja customConfigv2 służy do stosowania zaktualizowanej wersji aplikacji do zestawu skalowania:

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

Ponieważ zestaw skalowania korzysta teraz z zasad automatycznego uaktualniania, zaktualizowana aplikacja zostanie automatycznie zastosowana do istniejących wystąpień zestawu skalowania. Odśwież przeglądarkę internetową, aby wyświetlić zaktualizowaną aplikację. Aby wyświetlić zaktualizowaną wersję, odśwież witrynę internetową w przeglądarce:

Zaktualizowana strona internetowa w usługach IIS

Uprzątnij zasoby

Aby usunąć zestaw skalowania i dodatkowe zasoby, usuń grupę zasobów i wszystkie jej zasoby za pomocą polecenia Remove-AzResourceGroup. Parametr -Force potwierdza, że chcesz usunąć zasoby bez dodatkowego monitu, aby to zrobić. Parametr -AsJob zwraca kontrolę do wiersza polecenia bez oczekiwania na zakończenie operacji.

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

Dalsze kroki

W tym samouczku przedstawiono sposób automatycznego instalowania i aktualizowania aplikacji w zestawie skalowania przy użyciu programu Azure PowerShell:

  • Automatyczne instalowanie aplikacji w zestawie skalowania
  • Użycie niestandardowego rozszerzenia skryptu Azure
  • Aktualizowanie uruchomionej aplikacji w zestawie skalowania

Przejdź do następnego samouczka, aby dowiedzieć się, jak automatycznie skalować zestaw skalowania.