Delen via


Azure Service Fabric-clusters schalen

Een Service Fabric-cluster is een met het netwerk verbonden reeks virtuele of fysieke machines waarop uw microservices worden geïmplementeerd en beheerd. Een machine of VM die deel uitmaakt van een cluster, wordt een knooppunt genoemd. Clusters kunnen mogelijk duizenden knooppunten bevatten. Nadat u een Service Fabric-cluster hebt gemaakt, kunt u het cluster horizontaal schalen (het aantal knooppunten wijzigen) of verticaal (de resources van de knooppunten wijzigen). U kunt de schaal van het cluster op elk gewenst moment aanpassen, zelfs als er workloads op het cluster worden uitgevoerd. Tijdens het schalen van het cluster worden uw toepassingen ook automatisch geschaald.

Waarom het cluster schalen? Toepassingsvereisten veranderen in de loop van de tijd. Mogelijk moet u clusterresources verhogen om te voldoen aan een verhoogde toepassingsworkload of netwerkverkeer of om clusterresources te verlagen wanneer de vraag afneemt.

In- en uitschalen of horizontaal schalen

Hiermee wijzigt u het aantal knooppunten in het cluster. Zodra de nieuwe knooppunten aan het cluster zijn gekoppeld, verplaatst Cluster Resource Manager services naar deze knooppunten, waardoor de belasting op de bestaande knooppunten wordt verminderd. U kunt ook het aantal knooppunten verlagen als de resources van het cluster niet efficiënt worden gebruikt. Naarmate knooppunten het cluster verlaten, verplaatsen services deze knooppunten en worden de belasting van de resterende knooppunten verhoogd. Als u het aantal knooppunten in een cluster dat wordt uitgevoerd in Azure vermindert, kunt u geld besparen, omdat u betaalt voor het aantal virtuele machines dat u gebruikt en niet de werkbelasting op deze VM's.

  • Voordelen: Oneindige schaal, in theorie. Als uw toepassing is ontworpen voor schaalbaarheid, kunt u onbeperkte groei inschakelen door meer knooppunten toe te voegen. Met de hulpprogramma's in cloudomgevingen kunt u eenvoudig knooppunten toevoegen of verwijderen, zodat u de capaciteit eenvoudig kunt aanpassen en alleen betaalt voor de resources die u gebruikt.
  • Nadelen: Toepassingen moeten zijn ontworpen voor schaalbaarheid. Toepassingsdatabases en persistentie vereisen mogelijk ook extra architectuurwerk om te schalen. Betrouwbare verzamelingen in stateful Service Fabric-services maken het echter veel eenvoudiger om uw toepassingsgegevens te schalen.

Virtuele-machineschaalsets zijn een Azure-rekenresource die u kunt gebruiken voor het implementeren en beheren van een verzameling virtuele machines als een set. Elk knooppunttype dat is gedefinieerd in een Azure-cluster, wordt ingesteld als een afzonderlijke schaalset. Elk knooppunttype kan vervolgens onafhankelijk van elkaar worden ingeschaald of uitgeschaald, verschillende sets poorten zijn geopend en kunnen verschillende metrische capaciteitsgegevens hebben.

Wanneer u de schaal van een Azure-cluster aanpast, moet u rekening houden met de volgende richtlijnen:

  • primaire knooppunttypen waarop productieworkloads worden uitgevoerd, moeten altijd vijf of meer knooppunten hebben.
  • niet-primaire knooppunttypen waarop stateful productieworkloads worden uitgevoerd, moeten altijd vijf of meer knooppunten hebben.
  • niet-primaire knooppunttypen waarop stateless productieworkloads worden uitgevoerd, moeten altijd twee of meer knooppunten hebben.
  • Elk knooppunttype van met Gold of Silver als duurzaamheidsniveau moet altijd over vijf of meer knooppunten beschikken.
  • Verwijder geen willekeurige VM-exemplaren/-knooppunten van een knooppunttype, gebruik altijd de schaal van de virtuele-machineschaalset in functie. Het verwijderen van willekeurige VM-exemplaren kan nadelig zijn voor de mogelijkheid van systemen om de taakverdeling correct te verdelen.
  • Als u regels voor automatische schaalaanpassing gebruikt, stelt u de regels in, zodat schalen (VM-exemplaren verwijderen) één knooppunt tegelijk wordt uitgevoerd. Het omlaag schalen van meerdere exemplaren tegelijk is niet veilig.

Aangezien de Service Fabric-knooppunttypen in uw cluster bestaan uit virtuele-machineschaalsets in de back-end, kunt u regels voor automatisch schalen instellen of elk knooppunttype/virtuele-machineschaalset handmatig schalen .

Programmatisch schalen

In veel scenario's zijn het handmatig schalen van een cluster of met regels voor automatisch schalen goede oplossingen. Voor geavanceerdere scenario's zijn ze echter mogelijk niet de juiste keuze. Mogelijke nadelen van deze benaderingen zijn:

  • Handmatig schalen vereist dat u zich aanmeldt en expliciet schaalbewerkingen aanvraagt. Als schaalbewerkingen regelmatig of op onvoorspelbare tijden vereist zijn, is deze benadering mogelijk geen goede oplossing.
  • Wanneer regels voor automatisch schalen een exemplaar uit een virtuele-machineschaalset verwijderen, wordt de kennis van dat knooppunt niet automatisch verwijderd uit het bijbehorende Service Fabric-cluster, tenzij het knooppunttype een duurzaamheidsniveau van Silver of Gold heeft. Omdat regels voor automatisch schalen op schaalsetniveau werken (in plaats van op Service Fabric-niveau), kunnen regels voor automatisch schalen Service Fabric-knooppunten verwijderen zonder ze probleemloos af te sluiten. Door deze onbeleefde knooppuntverwijdering blijft de status van het Service Fabric-knooppunt achter na het inschalen. Een persoon (of een service) moet periodiek de status van het verwijderde knooppunt in het Service Fabric-cluster opschonen.
  • Een knooppunttype met een duurzaamheidsniveau van Gold of Silver schoont verwijderde knooppunten automatisch op, dus er is geen extra opschoning nodig.
  • Hoewel er veel metrische gegevens worden ondersteund door regels voor automatisch schalen, is het nog steeds een beperkte set. Als in uw scenario wordt aanroepen om te schalen op basis van bepaalde metrische gegevens die niet in die set worden behandeld, zijn regels voor automatisch schalen mogelijk geen goede optie.

Hoe u Service Fabric-schaalaanpassing moet benaderen, is afhankelijk van uw scenario. Als schalen ongebruikelijk is, is de mogelijkheid om knooppunten handmatig toe te voegen of te verwijderen waarschijnlijk voldoende. Voor complexere scenario's bieden regels en SDK's voor automatisch schalen de mogelijkheid om programmatisch te schalen krachtige alternatieven.

Azure-API's bestaan waarmee toepassingen programmatisch kunnen werken met virtuele-machineschaalsets en Service Fabric-clusters. Als bestaande opties voor automatisch schalen niet werken voor uw scenario, kunnen deze API's aangepaste schaallogica implementeren.

Een manier om deze 'home-made' functionaliteit voor automatisch schalen te implementeren, is door een nieuwe stateless service toe te voegen aan de Service Fabric-toepassing om schaalbewerkingen te beheren. Het maken van uw eigen schaalservice biedt de hoogste mate van controle en aanpasbaarheid ten opzichte van het schaalgedrag van uw toepassing. Dit kan handig zijn voor scenario's die nauwkeurige controle vereisen over wanneer of hoe een toepassing wordt ingeschaald of uitgeschaald. Dit besturingselement wordt echter geleverd met een afweging van codecomplexiteit. Als u deze methode gebruikt, moet u eigenaar zijn van schaalcode, wat niet-triviaal is. Binnen de methode van RunAsync de service kan een set triggers bepalen of schalen is vereist (inclusief het controleren van parameters zoals maximale clustergrootte en afkoeling).

De API die wordt gebruikt voor interacties met virtuele-machineschaalsets (zowel om het huidige aantal exemplaren van virtuele machines te controleren als om deze te wijzigen) is de vloeiende Azure Management Compute-bibliotheek. De Fluent Compute-bibliotheek biedt een gebruiksvriendelijke API voor interactie met virtuele-machineschaalsets. Als u wilt communiceren met het Service Fabric-cluster zelf, gebruikt u System.Fabric.FabricClient.

De schaalcode hoeft echter niet als een service in het cluster te worden uitgevoerd om te worden geschaald. Beide IAzure en FabricClient kunnen op afstand verbinding maken met de bijbehorende Azure-resources, zodat de schaalservice eenvoudig een consoletoepassing of Windows-service kan zijn die van buiten de Service Fabric-toepassing wordt uitgevoerd.

Op basis van deze beperkingen wilt u mogelijk meer aangepaste modellen voor automatisch schalen implementeren.

Omhoog en omlaag schalen of verticaal schalen

Hiermee wijzigt u de resources (CPU, geheugen of opslag) van knooppunten in het cluster.

  • Voordelen: software- en toepassingsarchitectuur blijft hetzelfde.
  • Nadelen: Eindige schaal, omdat er een limiet is voor het aantal resources op afzonderlijke knooppunten. Downtime, omdat u fysieke of virtuele machines offline moet halen om resources toe te voegen of te verwijderen.

Virtuele-machineschaalsets zijn een Azure-rekenresource die u kunt gebruiken voor het implementeren en beheren van een verzameling virtuele machines als een set. Elk knooppunttype dat is gedefinieerd in een Azure-cluster, wordt ingesteld als een afzonderlijke schaalset. Elk knooppunttype kan vervolgens afzonderlijk worden beheerd. Het omhoog of omlaag schalen van een knooppunttype omvat het toevoegen van een nieuw knooppunttype (met bijgewerkte VM-SKU) en het verwijderen van het oude knooppunttype.

Houd bij het schalen van een Azure-cluster rekening met de volgende richtlijn:

  • Als u een primair knooppunttype omlaag schaalt, moet u het nooit meer omlaag schalen dan wat de betrouwbaarheidslaag toestaat.

Het proces voor het omhoog of omlaag schalen van een knooppunttype verschilt, afhankelijk van of het een niet-primair of primair knooppunttype is.

Niet-primaire knooppunttypen schalen

Maak een nieuw knooppunttype met de resources die u nodig hebt. Werk de plaatsingsbeperkingen van actieve services bij om het nieuwe knooppunttype op te nemen. Verminder geleidelijk (één voor één) het aantal exemplaren van het oude knooppunttype tot nul, zodat de betrouwbaarheid van het cluster niet wordt beïnvloed. Services worden geleidelijk naar het nieuwe knooppunttype gemigreerd omdat het oude knooppunttype buiten gebruik wordt gesteld.

Het primaire knooppunttype schalen

Implementeer een nieuw primair knooppunttype met bijgewerkte VM-SKU en schakel vervolgens de oorspronkelijke instanties van het primaire knooppunttype één voor één uit, zodat de systeemservices naar de nieuwe schaalset worden gemigreerd. Controleer of het cluster en de nieuwe knooppunten in orde zijn en verwijder vervolgens de oorspronkelijke schaalset en knooppuntstatus voor de verwijderde knooppunten.

Als dat niet mogelijk is, kunt u een nieuw cluster maken en de toepassingsstatus herstellen (indien van toepassing) van uw oude cluster. U hoeft geen systeemservicestatus te herstellen. Ze worden opnieuw gemaakt wanneer u uw toepassingen implementeert in uw nieuwe cluster. Als u alleen stateless toepassingen op uw cluster uitvoerde, hoeft u alleen uw toepassingen naar het nieuwe cluster te implementeren. U hoeft niets te herstellen.

Volgende stappen