Toepassingen installeren en bijwerken in Virtual Machine Scale Sets

Voltooid

Wanneer u een toepassing in een schaalset implementeert, hebt u een mechanisme nodig waarmee uw toepassing consistent wordt bijgewerkt voor alle exemplaren in de schaalset. U kunt dit resultaat bereiken met behulp van een aangepaste scriptextensie.

In het scenario van het transportbedrijf hebt u een snelle manier nodig om updates van de toepassing te implementeren, met zo min mogelijk onderbrekingen voor eindgebruikers. Een aangepaste scriptextensie is een ideale oplossing.

In deze module leert u hoe u een aangepaste scriptextensie gebruikt om een toepassing bij te werken die in een schaalset wordt uitgevoerd.

Wat is een aangepaste scriptextensie van Azure?

Met een aangepaste scriptextensie van Azure kunt u een script op een Azure-VM downloaden en uitvoeren. Hiermee kunnen dezelfde taken worden geautomatiseerd op alle virtuele machines in een schaalset.

Sla uw aangepaste scripts op in Azure Storage of GitHub. U kunt Azure Portal gebruiken om een aangepast script toe te voegen aan een VM. Als u aangepaste scripts wilt uitvoeren als onderdeel van een sjabloonimplementatie, moet u een aangepaste scriptextensie combineren met Azure Resource Manager-sjablonen.

Een toepassing in een schaalset installeren met behulp van een aangepaste scriptextensie

Als u een aangepaste scriptextensie wilt gebruiken met de Azure CLI, maakt u een configuratiebestand waarin de bestanden worden gedefinieerd die moeten worden opgehaald en de opdrachten die moeten worden uitgevoerd. Dit bestand heeft de indeling JSON.

In het volgende voorbeeld ziet u een aangepaste scriptconfiguratie waarmee u een toepassing uit een opslagplaats in GitHub downloadt en installeert op een hostinstantie door een script met de naam custom_application_v1.sh uit te voeren:

# yourConfigV1.json 
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v1.sh"],
  "commandToExecute": "./custom_application_v1.sh"
}

Als u deze configuratie op de schaalset wilt implementeren, gebruikt u een aangepaste scriptextensie. De volgende code laat zien hoe u een aangepaste scriptextensie voor een virtuele-machineschaalset maakt met behulp van de Azure CLI. Met deze opdracht installeert u de nieuwe app op de VM's in de schaalset:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV1.json

Een toepassing in een schaalset bijwerken met behulp van een aangepaste scriptextensie

U kunt een aangepaste scriptextensie gebruiken om een bestaande app in een virtuele-machineschaalset bij te werken. U verwijst naar een bijgewerkt implementatiescript en past de extensie vervolgens opnieuw toe op uw schaalset. In de volgende JSON-code ziet u bijvoorbeeld een configuratie waarmee een nieuwe versie van een toepassing wordt opgehaald en geïnstalleerd:

# yourConfigV2.json
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v2.sh"],
  "commandToExecute": "./custom_application_v2.sh"
}

U kunt dezelfde az vmss extension set opdracht gebruiken die eerder is weergegeven om de bijgewerkte app te implementeren, maar deze keer verwijst u naar het nieuwe configuratiebestand:

az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group yourResourceGroup \
    --vmss-name yourScaleSet \
    --settings @yourConfigV2.json

De VM's worden bijgewerkt volgens het upgradebeleid voor de schaalset. U geeft dit beleid op wanneer u de schaalset voor het eerst maakt. Het upgradebeleid kan een van de volgende drie modi hebben:

  • Automatisch: De schaalset bepaalt niet wanneer de VM's worden bijgewerkt. Ze kunnen allemaal tegelijkertijd worden bijgewerkt wat zal leiden tot een serviceonderbreking.
  • Rolling: De schaalset implementeert de update in batches op de VM's in de schaalset. Een eventuele pauze kan de kans op een serviceonderbreking verkleinen of voorkomen. In deze modus kunnen er op de VM's in de schaalset tijdelijk verschillende versies van de app worden uitgevoerd. Voor deze modus moet u een statustest aan de schaalset toevoegen of de toepassingsstatusextensie op de schaalset toepassen.
  • Handmatig: Bestaande VM's in de schaalset worden niet bijgewerkt. Alle wijzigingen moeten handmatig worden aangebracht. Deze modus is de standaardinstelling.

Als u de upgradebeleidsmodus wilt opgeven wanneer u een virtuele-machineschaalset inricht, kunt u de upgrade-policy-mode optie gebruiken. In het volgende codevoorbeeld wordt de Azure CLI gebruikt:

az vmss create \
  --resource-group MyResourceGroup \
  --name MyScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys