Delen via


De Service Fabric-cluster beperken Resource Manager

Zelfs als u de cluster-Resource Manager correct hebt geconfigureerd, kan het cluster worden onderbroken. Er kunnen bijvoorbeeld gelijktijdige knooppunt- en foutdomeinfouten zijn. Wat zou er gebeuren als dat zou gebeuren tijdens een upgrade? De Cluster-Resource Manager probeert altijd alles op te lossen, waarbij de resources van het cluster worden gebruikt om het cluster opnieuw in te delen en te herstellen. Beperkingen helpen een backstop te bieden, zodat het cluster resources kan gebruiken om te stabiliseren: de knooppunten komen terug, de netwerkpartities herstellen, gecorrigeerde bits worden geïmplementeerd.

Om dit soort situaties te verhelpen, bevat het Service Fabric-cluster Resource Manager verschillende beperkingen. Deze gashendels zijn allemaal vrij grote hamers. Over het algemeen moeten ze niet worden gewijzigd zonder zorgvuldige planning en tests.

Als u de beperkingen van het cluster Resource Manager wijzigt, moet u deze afstemmen op de verwachte werkelijke belasting. U kunt bepalen dat u een aantal beperkingen moet hebben, zelfs als dit betekent dat het in sommige situaties langer duurt om het cluster te stabiliseren. Testen is vereist om de juiste waarden voor vertragingen te bepalen. Beperkingen moeten hoog genoeg zijn zodat het cluster binnen een redelijke tijd op wijzigingen kan reageren en laag genoeg zijn om daadwerkelijk te veel resourceverbruik te voorkomen.

Meestal hebben we gezien dat klanten beperkingen gebruiken omdat ze zich al in een omgeving met beperkte resources bevonden. Enkele voorbeelden zijn beperkte netwerkbandbreedte voor afzonderlijke knooppunten of schijven die niet veel stateful replica's parallel kunnen bouwen vanwege doorvoerbeperkingen. Zonder beperkingen kunnen bewerkingen deze resources overbelasten, waardoor bewerkingen mislukken of traag zijn. In deze situaties gebruikten klanten beperkingen en wisten ze dat ze de hoeveelheid tijd die het cluster nodig had om een stabiele status te bereiken, verlengden. Klanten begrepen ook dat ze uiteindelijk met een lagere algehele betrouwbaarheid zouden kunnen werken terwijl ze werden beperkt.

De beperkingen configureren

Service Fabric heeft twee mechanismen voor het beperken van het aantal replicaverplaatsingen. Het standaardmechanisme dat bestond vóór Service Fabric 5.7 vertegenwoordigt beperking als een absoluut aantal toegestane verplaatsingen. Dit werkt niet voor clusters van alle grootten. Met name voor grote clusters kan de standaardwaarde te klein zijn, waardoor de balancering aanzienlijk wordt vertraagd, zelfs wanneer dat nodig is, terwijl dit geen effect heeft in kleinere clusters. Dit eerdere mechanisme is vervangen door beperking op basis van percentages, wat beter schaalt met dynamische clusters waarin het aantal services en knooppunten regelmatig verandert.

De beperkingen zijn gebaseerd op een percentage van het aantal replica's in de clusters. Met beperkingen op basis van percentages kunt u bijvoorbeeld de regel 'niet meer dan 10% van replica's verplaatsen in een interval van 10 minuten'.

De configuratie-instellingen voor beperking op basis van percentages zijn:

  • GlobalMovementThrottleThresholdPercentage - Maximum aantal verplaatsingen dat op enig moment in het cluster is toegestaan, uitgedrukt als percentage van het totale aantal replica's in het cluster. 0 geeft geen limiet aan. De standaardwaarde is 0. Als zowel deze instelling als GlobalMovementThrottleThreshold zijn opgegeven, wordt de meer conservatieve limiet gebruikt.
  • GlobalMovementThrottleThresholdPercentageForPlacement - Maximum aantal verplaatsingen dat is toegestaan tijdens de plaatsingsfase, uitgedrukt als percentage van het totale aantal replica's in het cluster. 0 geeft geen limiet aan. De standaardwaarde is 0. Als zowel deze instelling als GlobalMovementThrottleThresholdForPlacement zijn opgegeven, wordt de meer conservatieve limiet gebruikt.
  • GlobalMovementThrottleThresholdPercentageForBalancing: maximum aantal bewegingen dat is toegestaan tijdens de balanceringsfase, uitgedrukt als percentage van het totale aantal replica's in het cluster. 0 geeft geen limiet aan. De standaardwaarde is 0. Als zowel deze instelling als GlobalMovementThrottleThresholdForBalancing zijn opgegeven, wordt de meer conservatieve limiet gebruikt.

Wanneer u het vertragingspercentage opgeeft, geeft u 5% op als 0,05. Het interval waarop deze beperkingen worden beheerd, is de GlobalMovementThrottleCountingInterval, die in seconden wordt opgegeven.

<Section Name="PlacementAndLoadBalancing">
     <Parameter Name="GlobalMovementThrottleThresholdPercentage" Value="0" />
     <Parameter Name="GlobalMovementThrottleThresholdPercentageForPlacement" Value="0" />
     <Parameter Name="GlobalMovementThrottleThresholdPercentageForBalancing" Value="0" />
     <Parameter Name="GlobalMovementThrottleCountingInterval" Value="600" />
</Section>

via ClusterConfig.json voor zelfstandige implementaties of Template.json voor door Azure gehoste clusters:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "GlobalMovementThrottleThresholdPercentage",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleThresholdPercentageForPlacement",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleThresholdPercentageForBalancing",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleCountingInterval",
          "value": "600"
      }
    ]
  }
]

Standaard aantal op basis van beperkingen

Deze informatie wordt verstrekt voor het geval u oudere clusters hebt of deze configuraties nog behoudt in clusters die sindsdien zijn bijgewerkt. Over het algemeen wordt aanbevolen deze te vervangen door de bovenstaande beperkingen op basis van percentages. Omdat beperking op basis van percentages standaard is uitgeschakeld, blijven deze beperkingen de standaardbeperking voor een cluster totdat ze zijn uitgeschakeld en vervangen door de op percentages gebaseerde beperkingen.

  • GlobalMovementThrottleThreshold: deze instelling bepaalt het totale aantal verplaatsingen in het cluster gedurende een bepaalde tijd. De hoeveelheid tijd wordt in seconden opgegeven als de GlobalMovementThrottleCountingInterval. De standaardwaarde voor de GlobalMovementThrottleThreshold is 1000 en de standaardwaarde voor globalmovementThrottleCountingInterval is 600.
  • MovementPerPartitionThrottleThreshold: deze instelling bepaalt het totale aantal verplaatsingen voor een servicepartitie gedurende enige tijd. De hoeveelheid tijd wordt opgegeven in seconden als de MovementPerPartitionThrottleCountingInterval. De standaardwaarde voor movementPerPartitionThrottleThreshold is 50 en de standaardwaarde voor movementPerPartitionThrottleCountingInterval is 600.

De configuratie voor deze beperkingen volgt hetzelfde patroon als de beperking op basis van percentages.

Volgende stappen

  • Raadpleeg het artikel over taakverdeling voor meer informatie over hoe de Cluster-Resource Manager de taak in het cluster beheert en verdeeld
  • De cluster Resource Manager heeft veel opties voor het beschrijven van het cluster. Raadpleeg dit artikel over het beschrijven van een Service Fabric-cluster voor meer informatie hierover