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 clusterresources verminderen wanneer de vraag afneemt.

In- en uitschalen of horizontaal schalen

Hiermee wijzigt u het aantal knooppunten in het cluster. Zodra de nieuwe knooppunten lid worden van het cluster, verplaatst de cluster-Resource Manager services naar deze knooppunten, waardoor de belasting op de bestaande knooppunten wordt verminderd. U kunt ook het aantal knooppunten verminderen als de resources van het cluster niet efficiënt worden gebruikt. Wanneer knooppunten het cluster verlaten, worden services van deze knooppunten verplaatst en neemt de belasting op de resterende knooppunten toe. Door het aantal knooppunten in een cluster in Azure te verminderen, kunt u geld besparen, omdat u betaalt voor het aantal vm's dat u gebruikt en niet voor de workload op die VM's.

  • Voordelen: Oneindige schaal, in theorie. Als uw toepassing is ontworpen voor schaalbaarheid, kunt u onbeperkte groei mogelijk maken door meer knooppunten toe te voegen. De hulpprogramma's in cloudomgevingen maken het eenvoudig om knooppunten toe te voegen of te verwijderen, zodat u de capaciteit eenvoudig kunt aanpassen en u alleen betaalt voor de resources die u gebruikt.
  • Nadelen: Toepassingen moeten zijn ontworpen voor schaalbaarheid. Toepassingsdatabases en persistentie vereisen mogelijk ook extra architecturale werkzaamheden 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 openstaan en kan 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 functie voor schalen van virtuele-machineschaalsets. Het verwijderen van willekeurige VM-exemplaren kan een negatieve invloed hebben op de mogelijkheid van systemen om de taakverdeling correct te verdelen.
  • Als u regels voor automatisch schalen gebruikt, stelt u de regels zo in dat inschalen (VM-exemplaren verwijderen) per knooppunt wordt uitgevoerd. Het is niet veilig om meer dan één exemplaar tegelijk omlaag te schalen.

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

Programmatisch schalen

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

  • Voor handmatig schalen moet u zich aanmelden en expliciet schaalbewerkingen aanvragen. Als schaalbewerkingen regelmatig of op onvoorspelbare tijden vereist zijn, is deze benadering mogelijk geen goede oplossing.
  • Wanneer met regels voor automatisch schalen een exemplaar uit een virtuele-machineschaalset wordt verwijderd, wordt de kennis van dat knooppunt niet automatisch verwijderd uit het gekoppelde Service Fabric-cluster, tenzij het knooppunttype een duurzaamheidsniveau van Silver of Gold heeft. Omdat regels voor automatisch schalen werken op het niveau van de schaalset (in plaats van op het niveau van Service Fabric), kunnen regels voor automatisch schalen Service Fabric-knooppunten verwijderen zonder ze correct af te sluiten. Door deze onbeleefde knooppuntverwijdering blijft de status van het Service Fabric-knooppunt achter na inschaalbewerkingen. Een persoon (of een service) moet de verwijderde knooppuntstatus in het Service Fabric-cluster periodiek opschonen.
  • Een knooppunttype met een duurzaamheidsniveau van Gold of Silver schoont verwijderde knooppunten automatisch op, zodat er geen extra opschoning nodig is.
  • Hoewel er veel metrische gegevens worden ondersteund door regels voor automatisch schalen, is het nog steeds een beperkte set. Als in uw scenario wordt aangeroepen 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 het schalen van Service Fabric moet benaderen, is afhankelijk van uw scenario. Als schalen ongebruikelijk is, is de mogelijkheid om handmatig knooppunten 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.

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

Een benadering voor het implementeren van deze 'zelfgemaakte' functionaliteit voor automatisch schalen is het toevoegen van een nieuwe stateless service aan de Service Fabric-toepassing om schaalbewerkingen te beheren. Het maken van uw eigen schaalservice biedt de hoogste mate van controle en aanpassingsmogelijkheden voor het schaalgedrag van uw toepassing. Dit kan handig zijn voor scenario's waarvoor nauwkeurige controle nodig is over wanneer en hoe een toepassing in- of uitschaalt. Dit besturingselement gaat echter gepaard met een afweging van codecomplexiteit. Als u deze aanpak gebruikt, betekent dit dat u eigenaar moet zijn van schaalcode. Dit is niet triviaal. Binnen de methode van RunAsync de service kan een set triggers bepalen of schalen vereist is (inclusief het controleren van parameters zoals de maximale clustergrootte en het schalen van cooldowns).

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. Zowel als IAzureFabricClient kunnen op afstand verbinding maken met hun gekoppelde 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

Wijzigt de resources (CPU, geheugen of opslag) van knooppunten in het cluster.

  • Voordelen: de software- en toepassingsarchitectuur blijft hetzelfde.
  • Nadelen: Eindige schaal, omdat er een limiet is voor de hoeveelheid 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 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 (een voor een) 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 wanneer 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 exemplaren van het primaire knooppunttype een voor een 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 ( indien van toepassing) herstellen vanuit uw oude cluster. U hoeft de status van de systeemservice niet te herstellen. Deze worden opnieuw gemaakt wanneer u uw toepassingen in uw nieuwe cluster implementeert. 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