Delen via


De Resource Manager van het Service Fabric-cluster beperken

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

De Service Fabric-clusterbronbeheer bevat verschillende beperkingen om u te helpen met dit soort situaties. Deze gashendels zijn allemaal redelijk grote hamers. Over het algemeen moeten ze niet worden gewijzigd zonder zorgvuldige planning en tests.

Als u de beperkingen van Cluster Resource Manager wijzigt, moet u deze afstemmen op de verwachte werkelijke belasting. U kunt vaststellen dat u enige vertraging moet hebben, zelfs als het cluster in sommige situaties langer duurt om te stabiliseren. Testen is vereist om de juiste waarden voor beperkingen te bepalen. Beperkingen moeten hoog genoeg zijn om het cluster in staat te stellen in redelijke tijd te reageren op wijzigingen, en laag genoeg om daadwerkelijk te veel resourceverbruik te voorkomen.

Meestal hebben we gezien dat klanten beperkingen gebruiken omdat ze zich al in een beperkte resourceomgeving bevinden. Sommige voorbeelden zijn een beperkte netwerkbandbreedte voor afzonderlijke knooppunten of schijven die niet in staat zijn om veel stateful replica's parallel te bouwen vanwege doorvoerbeperkingen. Zonder beperkingen kunnen bewerkingen deze resources overweldigen, waardoor bewerkingen mislukken of traag zijn. In deze situaties gebruikten klanten beperkingen en wisten dat ze de hoeveelheid tijd die het cluster nodig had om een stabiele status te bereiken, uitbreidden. Klanten wisten 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 taakverdeling aanzienlijk wordt vertraagd, zelfs wanneer dat nodig is, terwijl er geen effect is op kleinere clusters. Dit voorgaande mechanisme is vervangen door beperking op basis van percentages, die beter wordt geschaald 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 op percentages gebaseerde beperkingen kunt u de regel uitdrukken: 'Verplaats bijvoorbeeld niet meer dan 10% van de replica's in een interval van 10 minuten'.

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

  • GlobalMovementThrottleThresholdPercentage - Maximum aantal verplaatsingen dat is toegestaan in het cluster, 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 worden 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 verplaatsingen dat is toegestaan tijdens de taakverdelingsfase, 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 is 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 gehoste Azure-clusters:

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

Standaardlimieten op basis van aantallen

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

  • GlobalMovementThrottleThreshold: met deze instelling wordt het totale aantal verplaatsingen in het cluster gedurende enige tijd bepaald. De hoeveelheid tijd wordt in seconden opgegeven als GlobalMovementThrottleCountingInterval. De standaardwaarde voor GlobalMovementThrottleThreshold is 1000 en de standaardwaarde voor GlobalMovementThrottleCountingInterval is 600.
  • MovementPerPartitionThrottleThreshold: met deze instelling wordt het totale aantal verplaatsingen voor elke servicepartitie gedurende een bepaalde tijd bepaald. De hoeveelheid tijd wordt opgegeven in seconden als 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