Een virtuele-machineschaalset maken die gebruikmaakt van Beschikbaarheidszones

Azure-beschikbaarheidszones zijn fout-geïsoleerde locaties binnen een Azure-regio die redundante voeding, koeling en netwerken bieden. Hiermee kunt u toepassingen uitvoeren met hoge beschikbaarheid en fouttolerantie voor storingen in datacenters. Azure-regio's die ondersteuning bieden voor Beschikbaarheidszones minimaal drie afzonderlijke zones hebben. Elke beschikbaarheidszone bestaat uit een of meer datacenters die zijn uitgerust met onafhankelijke infrastructuurstroom, netwerk en koeling. Beschikbaarheidszones worden verbonden door een netwerk met hoge prestaties met een retourlatentie van minder dan 2 milliseconden. Zie Overzicht van Beschikbaarheidszones voor meer informatie.

Als u uw virtuele-machineschaalsets wilt beschermen tegen storingen op datacenterniveau, kunt u een schaalset maken in Beschikbaarheidszones. Als u Beschikbaarheidszones wilt gebruiken, moet uw schaalset worden gemaakt in een ondersteunde Azure-regio.

Ontwerpoverwegingen voor beschikbaarheidszones

Virtuele-machineschaalsets ondersteunen drie zonegebonden implementatiemodellen:

  • Zoneredundante of zone-spanning (aanbevolen)
  • Zonegebonden of zone uitgelijnd (één zone)
  • Regionaal

Zoneredundante of zone-spanning

Een zoneredundante of zone-overspanningsschaalset verspreidt exemplaren over alle geselecteerde zones. "zones": ["1","2","3"] Standaard voert de schaalset een best effort-benadering uit om instanties gelijkmatig over geselecteerde zones te verdelen. U kunt echter opgeven dat u een strikte zonebalans wilt door in te stellen "zoneBalance": "true" in uw implementatie. Elke VIRTUELE machine en de bijbehorende schijven zijn zonegebonden, dus ze worden vastgemaakt aan een specifieke zone. Exemplaren tussen zones worden verbonden door een netwerk met hoge prestaties met lage latentie. In het geval van een zonegebonden storing of connectiviteitsprobleem kan de verbinding met exemplaren in de getroffen zone worden aangetast, terwijl exemplaren in andere beschikbaarheidszones niet worden beïnvloed. U kunt capaciteit toevoegen aan de schaalset tijdens een zonegebonden storing en de schaalset voegt meer exemplaren toe aan de niet-getroffen zones. Wanneer de zone is hersteld, moet u de schaalset mogelijk omlaag schalen naar de oorspronkelijke capaciteit. Een best practice is om regels voor automatisch schalen te configureren op basis van CPU- of geheugengebruik. Met de regels voor automatisch schalen kan de schaalset reageren op een verlies van de VM-exemplaren in die ene zone door nieuwe exemplaren in de resterende operationele zones uit te schalen.

Het spreiden van exemplaren over beschikbaarheidszones voldoet aan de SLA van 99,99% voor exemplaren verspreid over beschikbaarheidszones en wordt aanbevolen voor de meeste workloads in Azure.

Zonegebonden of zone uitgelijnd (één zone)

Een zonegebonden of zone uitgelijnde schaalset plaatst instanties in één beschikbaarheidszone "zones": ['1']. Elke VIRTUELE machine en de bijbehorende schijven zijn zonegebonden, dus ze worden vastgemaakt aan een specifieke zone. Deze configuratie wordt voornamelijk gebruikt wanneer u een lagere latentie tussen exemplaren nodig hebt.

Regionaal

Een regionale virtuele-machineschaalset is wanneer de zonetoewijzing niet expliciet is ingesteld ("zones"=[] of "zones"=null). In deze configuratie maakt de schaalset regionale (niet-zone vastgemaakte) exemplaren en plaatst impliciet exemplaren in de hele regio. Er is geen garantie voor saldo of verdeling tussen zones, of die exemplaren landen in dezelfde beschikbaarheidszone. Colocatie van schijven is gegarandeerd voor Ultra- en Premium v2-schijven, best effort voor Premium V1-schijven en niet gegarandeerd voor Standard SKU-schijven (SSD of HDD).

In het zeldzame geval van een volledige zonestoring kunnen alle of alle exemplaren in de schaalset worden beïnvloed.

Foutdomeinen en beschikbaarheidszones

Een foutdomein is een foutisolatiegroep binnen een beschikbaarheidszone of datacenter van hardwareknooppunten die dezelfde stroom-, netwerk-, koelings- en platformonderhoudsplanning delen. VM-exemplaren die zich in verschillende foutdomeinen bevinden, worden waarschijnlijk niet beïnvloed door dezelfde geplande of ongeplande storing. U kunt opgeven hoe exemplaren worden verdeeld over foutdomeinen binnen een regio of zone.

  • Maximale verspreiding (platformFaultDomainCount = 1)
  • Statische vaste verspreiding (platformFaultDomainCount = 5)
  • Spreiden die zijn afgestemd op opslagschijffoutdomeinen (platformFaultDomainCount = 2 of 3, alleen voor regionale implementaties)

Met maximale verspreiding verspreidt de schaalset uw VM's over zoveel mogelijk foutdomeinen binnen elke zone. Deze verspreiding kan bestaan uit meer dan vijf foutdomeinen per zone. Bij statische vaste verspreiding verspreidt de schaalset uw VM's over precies vijf foutdomeinen per zone. Als de schaalset geen vijf afzonderlijke foutdomeinen per zone kan vinden om te voldoen aan de toewijzingsaanvraag, mislukt de aanvraag.

We raden u aan om te implementeren met maximale verspreiding voor de meeste workloads, omdat deze benadering in de meeste gevallen de beste verspreiding biedt. Als u replica's wilt verspreiden over afzonderlijke hardware-isolatie-eenheden, raden we u aan om over Beschikbaarheidszones te spreiden en maximale verspreiding binnen elke zone te gebruiken.

Notitie

Met maximale verspreiding ziet u slechts één foutdomein in de weergave van het VM-exemplaar van de schaalset en in de metagegevens van het exemplaar, ongeacht hoeveel foutdomeinen de VM's zijn verspreid. De verspreiding binnen elke zone is impliciet.

Plaatsingsgroepen

Belangrijk

Plaatsingsgroepen zijn alleen van toepassing op virtuele-machineschaalsets die worden uitgevoerd in de uniformindelingsmodus.

Wanneer u een schaalset implementeert, kunt u implementeren met één plaatsingsgroep per beschikbaarheidszone of met meerdere zones. Voor regionale (niet-zonegebonden) schaalsets is de keuze om één plaatsingsgroep in de regio te hebben of om meerdere groepen in de regio te hebben. Als de eigenschap van de schaalset die wordt aangeroepen singlePlacementGroup is ingesteld op false, kan de schaalset bestaan uit meerdere plaatsingsgroepen en een bereik van 0-1.000 VM's hebben. Als deze is ingesteld op de standaardwaarde waar, bestaat de schaalset uit één plaatsingsgroep en heeft een bereik van 0-100 VM's. Voor de meeste workloads raden we meerdere plaatsingsgroepen aan, waardoor grotere schaal mogelijk is. In API-versie 2017-12-01 worden schaalsets standaard ingesteld op meerdere plaatsingsgroepen voor schaalsets met één zone en meerdere zones, maar ze worden standaard ingesteld op één plaatsingsgroep voor regionale (niet-zonegebonden) schaalsets.

Notitie

Als u maximale verspreiding gebruikt, moet u meerdere plaatsingsgroepen gebruiken.

Zoneverdeling

Ten slotte kunt u voor schaalsets die zijn geïmplementeerd in meerdere zones ook kiezen voor 'best effort zone balance' of 'strict zone balance'. Een schaalset wordt beschouwd als 'evenwichtig' als elke zone hetzelfde aantal VIRTUELE machines +\- 1 VM heeft als alle andere zones voor de schaalset. Voorbeeld:

  • Een schaalset met 2 VM's in zone 1, 3 VM's in zone 2 en 3 VM's in zone 3 wordt als evenwichtig beschouwd. Er is slechts één zone met een ander aantal VM's en het is slechts 1 kleiner dan de andere zones.
  • Een schaalset met 1 VM in zone 1, 3 VM's in zone 2 en 3 VM's in zone 3 wordt als onevenwichtig beschouwd. Zone 1 heeft 2 minder VM's dan zones 2 en 3.

Het is mogelijk dat VM's in de schaalset zijn gemaakt, maar extensies op deze VM's kunnen niet worden geïmplementeerd. Deze VM's met extensiefouten worden nog steeds meegeteld bij het bepalen of een schaalset evenwichtig is. Een schaalset met 3 VM's in zone 1, 3 VM's in zone 2 en 3 VM's in zone 3 wordt bijvoorbeeld als evenwichtig beschouwd, zelfs als alle extensies zijn mislukt in zone 1 en alle extensies zijn geslaagd in zones 2 en 3.

Met de best effort zone balance probeert de schaalset in en uit te schalen terwijl de balans behouden blijft. Als om een of andere reden zonebalans echter niet mogelijk is (bijvoorbeeld als één zone uitvalt, kan de schaalset geen nieuwe VIRTUELE machine in die zone maken), de schaalset tijdelijke onevenwichtigheid toestaan om in of uit te schalen. Bij volgende uitschaalpogingen voegt de schaalset VM's toe aan zones waarvoor meer VM's nodig zijn om de schaalset te verdelen. Op dezelfde manier verwijdert de schaalset bij volgende pogingen VM's uit zones waarvoor minder VM's nodig zijn om de schaalset te verdelen. Met 'strikt zonebalans' mislukt de schaalset pogingen om in of uit te schalen als dit een onbalans zou veroorzaken.

Als u de best effort zone balance wilt gebruiken, stelt u zoneBalance in op false. Deze instelling is de standaardinstelling in API-versie 2017-12-01. Als u een strikte zonebalans wilt gebruiken, stelt u zoneBalance in op true.

Notitie

De zoneBalance eigenschap kan alleen worden ingesteld als de eigenschap zones van de schaalset meer dan één zone bevat. Als er geen zones of slechts één zone zijn opgegeven, mag de eigenschap ZoneBalance niet worden ingesteld.

Zone-spannings- of zonegebonden schaalsets maken

Wanneer u een virtuele-machineschaalset implementeert, kunt u ervoor kiezen om één beschikbaarheidszone in een regio of meerdere zones te gebruiken.

U kunt een schaalset maken die gebruikmaakt van Beschikbaarheidszones met een van de volgende methoden:

De Azure-portal gebruiken

Het proces voor het maken van een schaalset die gebruikmaakt van een beschikbaarheidszone is hetzelfde als in het artikel Aan de slag. Wanneer u een ondersteunde Azure-regio selecteert, kunt u een schaalset maken in een of meer beschikbare zones, zoals wordt weergegeven in het volgende voorbeeld:

Een schaalset maken in één beschikbaarheidszone

De schaalset en ondersteunende resources, zoals de Azure Load Balancer en het openbare IP-adres, worden gemaakt in de enkele zone die u opgeeft.

De Azure CLI gebruiken

Het proces voor het maken van een schaalset die gebruikmaakt van een beschikbaarheidszone is hetzelfde als in het artikel Aan de slag. Als u Beschikbaarheidszones wilt gebruiken, moet u uw schaalset maken in een ondersteunde Azure-regio.

Voeg de --zones parameter toe aan de opdracht az vmss create en geef op welke zone moet worden gebruikt (zoals zone 1, 2 of 3).

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

Het duurt enkele minuten om alle resources en VM's van de schaalset te maken en te configureren in de zone(s) die u opgeeft. Zie dit CLI-voorbeeldscript voor een volledig voorbeeld van een zone-redundante schaalset en netwerkbronnen

Azure PowerShell gebruiken

Als u Beschikbaarheidszones wilt gebruiken, moet u uw schaalset maken in een ondersteunde Azure-regio. Voeg de -Zone parameter toe aan de opdracht New-AzVmssConfig en geef op welke zone of zones moeten worden gebruikt (zoals zone 1, 2 of 3).

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Azure Resource Manager-sjablonen gebruiken

Het proces voor het maken van een schaalset die gebruikmaakt van een beschikbaarheidszone is hetzelfde als in het aan de slag-artikel voor Linux of Windows.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

Als u een openbaar IP-adres of een load balancer maakt, geeft u de "sku": {"name":"Standard"} eigenschap op om zone-redundante netwerkbronnen te maken. U moet ook een netwerkbeveiligingsgroep en regels maken om verkeer toe te laten. Zie Overzicht van Azure Load Balancer Standard en Standard Load Balancer en Beschikbaarheidszones voor meer informatie.

Zie de Voorbeeldsjabloon Resource Manager voor een volledig voorbeeld van een zone-redundante schaalset en netwerkresources.

Schaalset bijwerken om beschikbaarheidszones toe te voegen

U kunt een schaal aanpassen om de setzones uit te vouwen waarop VM-exemplaren moeten worden verspreid. Door uit te breiden kunt u profiteren van een SLA met hogere zonegebonden beschikbaarheid (99,99%) versus sla voor regionale beschikbaarheid (99,95%). Of vouw uw schaalset uit om te profiteren van nieuwe beschikbaarheidszones die niet beschikbaar waren toen de schaalset werd gemaakt.

Belangrijk

Het bijwerken van virtuele-machineschaalsets om beschikbaarheidszones toe te voegen, is momenteel beschikbaar als preview-versie. Previews worden aan u beschikbaar gesteld op voorwaarde dat u akkoord gaat met de aanvullende gebruiksvoorwaarden. Sommige aspecten van deze functie worden mogelijk nog gewijzigd voordat de functie algemeen beschikbaar wordt.

Belangrijk

Deze functie is bedoeld voor staatloze workloads op virtuele-machineschaalsets. Schaalsets met stateful workloads of worden gebruikt met Service Fabric of Azure Kubernetes Services worden niet ondersteund voor zonegebonden uitbreiding.

Deze functie kan worden gebruikt met API-versie 2023-03-01 of hoger.

Uw abonnement inschakelen voor het gebruik van zonegebonden uitbreidingsfuncties

U moet zich registreren voor vier functievlagmen in uw abonnement:

az feature register --namespace Microsoft.Compute --name VmssAllowRegionalToZonalMigration
az feature register --namespace Microsoft.Compute --name VmssAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowRegionalToZonalMigration

U kunt de registratiestatus van elke functie controleren met behulp van:

az feature show --namespace Microsoft.Compute --name \<feature-name\>

Schaalset uitbreiden om beschikbaarheidszones te gebruiken

U kunt de schaalset bijwerken om exemplaren uit te schalen naar een of meer extra beschikbaarheidszones, tot het aantal beschikbaarheidszones dat door de regio wordt ondersteund. Voor regio's die zones ondersteunen, is het minimum aantal zones 3.

Belangrijk

Wanneer u de schaalset uitbreidt naar extra zones, worden de oorspronkelijke exemplaren niet gemigreerd of gewijzigd. Wanneer u uitschaalt, worden nieuwe exemplaren gemaakt en gelijkmatig verdeeld over de geselecteerde beschikbaarheidszones. Wanneer u in de schaalset schaalt, worden alle regionale exemplaren eerst ge priorieerd voor verwijdering. Daarna worden exemplaren verwijderd op basis van het inschalingsbeleid.

In drie stappen wordt uitgebreid naar een zonegebonden schaalset:

  1. Voorbereiden op zonegebonden uitbreiding
  2. Parameter zones in de schaalset bijwerken
  3. Nieuwe zonegebonden exemplaren toevoegen en oorspronkelijke exemplaren verwijderen

Voorbereiden op zonegebonden uitbreiding

Waarschuwing

Met deze functie kunt u zones toevoegen aan de schaalset. U kunt niet teruggaan naar een regionale schaalset of zones verwijderen nadat ze zijn toegevoegd.

Ter voorbereiding op zonegebonden uitbreiding:

  • Controleer of u voldoende quotum hebt voor de VM-grootte in de geselecteerde regio om meer exemplaren te verwerken.
  • Controleer of de VM-grootte en schijftypen die u gebruikt, beschikbaar zijn in alle gewenste zones. U kunt de API compute-resources-SKU's gebruiken om te bepalen in welke zones de grootten beschikbaar zijn
  • Controleer of de configuratie van de schaalset geldig is voor zonegebonden schaalsets:
    • platformFaultDomainCount moet worden ingesteld op 1 of 5. Het spreiden met 2 of 3 foutdomeinen is niet ondersteund voor zonegebonden implementaties.
    • Capaciteitsreserveringen worden niet ondersteund tijdens zone-uitbreiding. Zodra de schaalset volledig zonegebonden is (geen regionale instanties meer), kunt u een capaciteitsreserveringsgroep toevoegen aan de schaalset.
    • Implementaties van Azure Dedicated Host worden niet ondersteund.

De parameter zones in de schaalset bijwerken

Werk de schaalset bij om de parameter zones te wijzigen.

  1. Ga naar de schaalset die u wilt bijwerken
  2. Zoek op het tabblad Eigenschappen van de landingspagina van de schaalset de eigenschap Beschikbaarheidszone en druk op Bewerken
  3. Selecteer in het dialoogvenster Locatie bewerken de gewenste zone(s)
  4. Selecteer toepassen

Nieuwe zonegebonden exemplaren toevoegen en oorspronkelijke exemplaren verwijderen

Handmatig uitschalen en inschalen

Werk de capaciteit van de schaalset bij om meer exemplaren toe te voegen. De nieuwe capaciteit moet worden ingesteld op de oorspronkelijke capaciteit plus het aantal nieuwe exemplaren. Als uw schaalset bijvoorbeeld vijf regionale exemplaren heeft en u wilt uitschalen zodat u drie exemplaren in elk van de drie zones hebt, moet u de capaciteit instellen op 14.

U kunt de parameter zones en de capaciteit van de schaalset bijwerken in dezelfde ARM-sjabloon of REST API-aanroep.

Wanneer u tevreden bent dat de nieuwe exemplaren gereed zijn, schaalt u in uw schaalset om de oorspronkelijke regionale exemplaren te verwijderen. U kunt de specifieke regionale instanties handmatig verwijderen of inschalen door de capaciteit van de schaalset te verminderen. Wanneer u inschaalt via het verminderen van de capaciteit van de schaalset, geeft het platform altijd de voorkeur aan het verwijderen van de regionale instanties en volgt u vervolgens de schaal in het beleid.

Automatiseren met Rolling upgrades + MaxSurge

Met Rolling upgrades + MaxSurge worden nieuwe zonegebonden exemplaren gemaakt en bijgewerkt met het nieuwste schaalmodel in batches. Zodra een batch met nieuwe exemplaren is toegevoegd aan de schaalset en als in orde rapporteert, wordt een batch oude exemplaren automatisch verwijderd uit de schaalset. Upgrades worden voortgezet totdat alle exemplaren up-to-date zijn.

Belangrijk

Rolling upgrades met MaxSurge zijn momenteel beschikbaar als openbare preview. Deze is alleen beschikbaar voor de UNIFORM Orchestration-modus van VMSS.

Bekende problemen en beperkingen

  • De functie is gericht op staatloze workloads op virtuele-machineschaalsets.

  • Schaalsets met Service Fabric of Azure Kubernetes Service worden niet ondersteund.

  • U kunt geen zones verwijderen of vervangen, maar alleen zones toevoegen

  • U kunt niet bijwerken van een zone-spanning of zonegebonden schaalset naar een regionale schaalset.

  • platformFaultDomainCount moet worden ingesteld op 1 of 5. Het spreiden met 2 of 3 foutdomeinen is niet ondersteund voor zonegebonden implementaties.

  • Capaciteitsreserveringen worden niet ondersteund tijdens zone-uitbreiding. Zodra de schaalset volledig zonegebonden is (geen regionale instanties meer), kunt u een capaciteitsreserveringsgroep toevoegen aan de schaalset.

  • Implementaties van Azure Dedicated Host worden niet ondersteund

Volgende stappen

Nu u een schaalset in een beschikbaarheidszone hebt gemaakt, kunt u leren hoe u toepassingen implementeert op virtuele-machineschaalsets of automatisch schalen gebruikt met virtuele-machineschaalsets.