Inleiding tot toepassingsgroepen
Clusterresourcebeheer van Service Fabric beheert doorgaans clusterresources door de belasting (vertegenwoordigd via metrische gegevens) gelijkmatig over het hele cluster te spreiden. Service Fabric beheert de capaciteit van de knooppunten in het cluster en het cluster als geheel via capaciteit. Metrische gegevens en capaciteit werken uitstekend voor veel workloads, maar patronen die intensief gebruikmaken van verschillende Service Fabric-toepassingsexemplaren brengen soms extra vereisten met zich mee. U kunt bijvoorbeeld het volgende doen:
- Gereserveerde capaciteit op de knooppunten in het cluster voor de services binnen een benoemd toepassingsexemplaren
- Beperk het totale aantal knooppunten waarop de services binnen een benoemd toepassingsexemplaren worden uitgevoerd (in plaats van ze uit te spreiden over het hele cluster)
- Capaciteiten definiëren voor het benoemde toepassingsexemplaren zelf om het aantal services of het totale resourceverbruik van de services erin te beperken
Om aan deze vereisten te voldoen, ondersteunt Service Fabric Cluster Resource Manager een functie met de naam Toepassingsgroepen.
Het maximum aantal knooppunten beperken
Het eenvoudigste gebruiksscenario voor toepassingscapaciteit is wanneer een toepassingsexemplaren moeten worden beperkt tot een bepaald maximum aantal knooppunten. Hiermee worden alle services binnen dat toepassingsexemplaren geconsolideerd op een vast aantal machines. Consolidatie is handig wanneer u het gebruik van fysieke resources wilt voorspellen of beperken door de services binnen dat benoemde toepassingsexemplaren.
In de volgende afbeelding ziet u een toepassingsexemplaren met en zonder een maximum aantal gedefinieerde knooppunten:
In het linkervoorbeeld heeft de toepassing geen maximum aantal knooppunten gedefinieerd en heeft deze drie services. Cluster Resource Manager heeft alle replica's verspreid over zes beschikbare knooppunten om het beste evenwicht in het cluster te bereiken (het standaardgedrag). In het juiste voorbeeld zien we dat dezelfde toepassing is beperkt tot drie knooppunten.
De parameter waarmee dit gedrag wordt bepaald, wordt MaximumNodes genoemd. Deze parameter kan worden ingesteld tijdens het maken van de toepassing of worden bijgewerkt voor een toepassingsexemplaren die al zijn uitgevoerd.
Powershell
New-ServiceFabricApplication -ApplicationName fabric:/AppName -ApplicationTypeName AppType1 -ApplicationTypeVersion 1.0.0.0 -MaximumNodes 3
Update-ServiceFabricApplication –ApplicationName fabric:/AppName –MaximumNodes 5
C#
ApplicationDescription ad = new ApplicationDescription();
ad.ApplicationName = new Uri("fabric:/AppName");
ad.ApplicationTypeName = "AppType1";
ad.ApplicationTypeVersion = "1.0.0.0";
ad.MaximumNodes = 3;
await fc.ApplicationManager.CreateApplicationAsync(ad);
ApplicationUpdateDescription adUpdate = new ApplicationUpdateDescription(new Uri("fabric:/AppName"));
adUpdate.MaximumNodes = 5;
await fc.ApplicationManager.UpdateApplicationAsync(adUpdate);
Binnen de set knooppunten garandeert Cluster Resource Manager niet welke serviceobjecten samen worden geplaatst of welke knooppunten worden gebruikt.
Metrische gegevens van toepassingen, laden en capaciteit
Met toepassingsgroepen kunt u ook metrische gegevens definiëren die zijn gekoppeld aan een bepaald benoemd toepassingsexemplaar en de capaciteit van dat toepassingsexemplaar voor die metrische gegevens. Metrische toepassingsgegevens stellen u in staat om het resourceverbruik van de services in dat toepassingsexemplaren bij te houden, te reserveren en te beperken.
Voor elke metrische toepassingswaarde zijn er twee waarden die kunnen worden ingesteld:
- Totale toepassingscapaciteit : deze instelling vertegenwoordigt de totale capaciteit van de toepassing voor een bepaalde metrische waarde. Het clusterresourcebeheer staat het maken van nieuwe services binnen dit toepassingsexemplaren niet toe, waardoor de totale belasting deze waarde overschrijdt. Stel dat het toepassingsexemplaren een capaciteit van 10 hadden en dat er al een belasting van vijf was. Het maken van een service met een totale standaardbelasting van 10 is niet toegestaan.
- Maximale knooppuntcapaciteit : met deze instelling wordt de maximale totale belasting voor de toepassing op één knooppunt opgegeven. Als de belasting deze capaciteit overneemt, verplaatst Cluster Resource Manager replica's naar andere knooppunten, zodat de belasting afneemt.
PowerShell:
New-ServiceFabricApplication -ApplicationName fabric:/AppName -ApplicationTypeName AppType1 -ApplicationTypeVersion 1.0.0.0 -Metrics @("MetricName:Metric1,MaximumNodeCapacity:100,MaximumApplicationCapacity:1000")
C#:
ApplicationDescription ad = new ApplicationDescription();
ad.ApplicationName = new Uri("fabric:/AppName");
ad.ApplicationTypeName = "AppType1";
ad.ApplicationTypeVersion = "1.0.0.0";
var appMetric = new ApplicationMetricDescription();
appMetric.Name = "Metric1";
appMetric.TotalApplicationCapacity = 1000;
appMetric.MaximumNodeCapacity = 100;
ad.Metrics.Add(appMetric);
await fc.ApplicationManager.CreateApplicationAsync(ad);
Capaciteit reserveren
Een ander veelvoorkomend gebruik voor toepassingsgroepen is ervoor te zorgen dat resources binnen het cluster zijn gereserveerd voor een bepaald toepassingsexemplaren. De ruimte wordt altijd gereserveerd wanneer de instantie van de toepassing wordt gemaakt.
Het reserveren van ruimte in het cluster voor de toepassing vindt onmiddellijk plaats, zelfs wanneer:
- het toepassingsexemplaren is gemaakt, maar er zijn nog geen services binnen het exemplaar
- het aantal services in het toepassingsexemplaren telkens wordt gewijzigd
- de services bestaan, maar verbruiken de resources niet
Voor het reserveren van resources voor een toepassingsexemplaren moeten twee extra parameters worden opgegeven: MinimumNodes en NodeReservationCapacity
- MinimumNodes : definieert het minimale aantal knooppunten waarop het toepassingsexemplaren moeten worden uitgevoerd.
- NodeReservationCapacity : deze instelling is per metrische waarde voor de toepassing. De waarde is de hoeveelheid die metrische waarde is gereserveerd voor de toepassing op een knooppunt waarop de services in die toepassing worden uitgevoerd.
Het combineren van MinimumNodes en NodeReservationCapacity garandeert een minimale belastingsreservering voor de toepassing binnen het cluster. Als er minder capaciteit in het cluster is dan de totale vereiste reservering, mislukt het maken van de toepassing.
Laten we eens kijken naar een voorbeeld van capaciteitsreservering:
In het linkervoorbeeld hebben toepassingen geen toepassingscapaciteit gedefinieerd. De Cluster Resource Manager brengt alles in balans volgens de normale regels.
Stel in het voorbeeld aan de rechterkant dat Application1 is gemaakt met de volgende instellingen:
- MinimumNodes ingesteld op twee
- Een metrische toepassing gedefinieerd met
- NodeReservationCapacity van 20
Powershell
New-ServiceFabricApplication -ApplicationName fabric:/AppName -ApplicationTypeName AppType1 -ApplicationTypeVersion 1.0.0.0 -MinimumNodes 2 -Metrics @("MetricName:Metric1,NodeReservationCapacity:20")
C#
ApplicationDescription ad = new ApplicationDescription();
ad.ApplicationName = new Uri("fabric:/AppName");
ad.ApplicationTypeName = "AppType1";
ad.ApplicationTypeVersion = "1.0.0.0";
ad.MinimumNodes = 2;
var appMetric = new ApplicationMetricDescription();
appMetric.Name = "Metric1";
appMetric.NodeReservationCapacity = 20;
ad.Metrics.Add(appMetric);
await fc.ApplicationManager.CreateApplicationAsync(ad);
Service Fabric reserveert capaciteit op twee knooppunten voor Application1 en staat services van Application2 niet toe die capaciteit te verbruiken, zelfs als er op dat moment geen belasting wordt verbruikt door de services in Application1. Deze gereserveerde toepassingscapaciteit wordt beschouwd als verbruikt en telt mee op basis van de resterende capaciteit op dat knooppunt en binnen het cluster. De reservering wordt onmiddellijk afgetrokken van de resterende clustercapaciteit, maar het gereserveerde verbruik wordt alleen afgetrokken van de capaciteit van een specifiek knooppunt wanneer er ten minste één serviceobject op wordt geplaatst. Deze latere reservering biedt flexibiliteit en beter resourcegebruik, omdat resources alleen worden gereserveerd op knooppunten wanneer dat nodig is.
Informatie over het laden van de toepassing verkrijgen
Voor elke toepassing met een toepassingscapaciteit die is gedefinieerd voor een of meer metrische gegevens, kunt u de informatie verkrijgen over de cumulatieve belasting die wordt gerapporteerd door replica's van de bijbehorende services.
PowerShell:
Get-ServiceFabricApplicationLoadInformation –ApplicationName fabric:/MyApplication1
C#
var v = await fc.QueryManager.GetApplicationLoadInformationAsync("fabric:/MyApplication1");
var metrics = v.ApplicationLoadMetricInformation;
foreach (ApplicationLoadMetricInformation metric in metrics)
{
Console.WriteLine(metric.ApplicationCapacity); //total capacity for this metric in this application instance
Console.WriteLine(metric.ReservationCapacity); //reserved capacity for this metric in this application instance
Console.WriteLine(metric.ApplicationLoad); //current load for this metric in this application instance
}
De ApplicationLoad-query retourneert de basisinformatie over toepassingscapaciteit die is opgegeven voor de toepassing. Deze informatie omvat de gegevens minimumknooppunten en maximumknooppunten en het nummer dat de toepassing momenteel in beslag neemt. Het bevat ook informatie over elke metrische gegevens voor het laden van toepassingen, waaronder:
- Naam van metrische waarde: naam van de metrische waarde.
- Reserveringscapaciteit: clustercapaciteit die is gereserveerd in het cluster voor deze toepassing.
- Toepassingsbelasting: totale belasting van de onderliggende replica's van deze toepassing.
- Toepassingscapaciteit: maximaal toegestane waarde van toepassingsbelasting.
Toepassingscapaciteit verwijderen
Zodra de parameters voor toepassingscapaciteit zijn ingesteld voor een toepassing, kunnen ze worden verwijderd met behulp van Update Application API's of PowerShell-cmdlets. Voorbeeld:
Update-ServiceFabricApplication –Name fabric:/MyApplication1 –RemoveApplicationCapacity
Met deze opdracht verwijdert u alle toepassingscapaciteitsbeheerparameters uit het toepassingsexemplaren. Dit omvat MinimumNodes, MaximumNodes en de metrische gegevens van de toepassing, indien van toepassing. Het effect van de opdracht is onmiddellijk. Nadat deze opdracht is voltooid, gebruikt Cluster Resource Manager het standaardgedrag voor het beheren van toepassingen. Parameters voor toepassingscapaciteit kunnen opnieuw worden opgegeven via Update-ServiceFabricApplication
/System.Fabric.FabricClient.ApplicationManagementClient.UpdateApplicationAsync()
.
Beperkingen voor toepassingscapaciteit
Er zijn verschillende beperkingen voor parameters voor toepassingscapaciteit die moeten worden gerespecteerd. Als er validatiefouten zijn, vinden er geen wijzigingen plaats.
- Alle parameters voor gehele getallen moeten niet-negatieve getallen zijn.
- MinimumNodes mogen nooit groter zijn dan MaximumNodes.
- Als capaciteiten voor een metrische belasting worden gedefinieerd, moeten ze de volgende regels volgen:
- De capaciteit van knooppuntreservering mag niet groter zijn dan de maximale knooppuntcapaciteit. U kunt bijvoorbeeld de capaciteit voor de metrische CPU op het knooppunt niet beperken tot twee eenheden en proberen drie eenheden op elk knooppunt te reserveren.
- Als MaximumNodes is opgegeven, mag het product van MaximumNodes en Maximale knooppuntcapaciteit niet groter zijn dan de totale toepassingscapaciteit. Stel dat de maximale knooppuntcapaciteit voor de metrische belastingwaarde CPU is ingesteld op acht. Stel ook dat u de maximumknooppunten instelt op 10. In dit geval moet de totale toepassingscapaciteit groter zijn dan 80 voor deze metrische belasting.
De beperkingen worden afgedwongen tijdens het maken van toepassingen en updates.
Toepassingscapaciteit niet gebruiken
- Probeer de functies van de toepassingsgroep niet te gebruiken om de toepassing te beperken tot een specifieke subset van knooppunten. Met andere woorden, u kunt opgeven dat de toepassing wordt uitgevoerd op maximaal vijf knooppunten, maar niet op welke specifieke vijf knooppunten in het cluster. Het beperken van een toepassing tot specifieke knooppunten kan worden bereikt met behulp van plaatsingsbeperkingen voor services.
- Probeer de toepassingscapaciteit niet te gebruiken om ervoor te zorgen dat twee services van dezelfde toepassing op dezelfde knooppunten worden geplaatst. Gebruik in plaats daarvan affiniteits- of plaatsingsbeperkingen.
Volgende stappen
- Meer informatie over het configureren van services vindt u in meer informatie over het configureren van services
- Raadpleeg het artikel over taakverdeling
- Begin vanaf het begin en krijg een inleiding tot het Service Fabric-cluster Resource Manager
- Lees voor meer informatie over de werking van metrische gegevens over het algemeen de metrische gegevens van Service Fabric Load
- Cluster Resource Manager heeft veel opties voor het beschrijven van het cluster. Raadpleeg dit artikel voor meer informatie over het beschrijven van een Service Fabric-cluster