Ograniczanie Resource Manager klastra usługi Service Fabric

Nawet jeśli poprawnie skonfigurowano Resource Manager klastra, klaster może być zakłócany. Na przykład mogą wystąpić jednoczesne błędy węzła i domeny błędów — co się stanie, jeśli wystąpiło to podczas uaktualniania? Klaster Resource Manager zawsze próbuje naprawić wszystko, zużywając zasoby klastra, próbując zreorganizować i naprawić klaster. Ograniczenia pomagają zapewnić backstop, dzięki czemu klaster może używać zasobów do stabilizacji — węzły wracają, partycje sieciowe są poprawiane, poprawiane bity są wdrażane.

Aby pomóc w takich sytuacjach, klaster usługi Service Fabric Resource Manager zawiera kilka ograniczania. Te ograniczenia są dość duże młoty. Ogólnie nie należy ich zmieniać bez starannego planowania i testowania.

Jeśli zmienisz ograniczenia klastra Resource Manager, należy je dostosować do oczekiwanego rzeczywistego obciążenia. Może się okazać, że trzeba mieć pewne ograniczenia, nawet jeśli oznacza to, że stabilizacja klastra w niektórych sytuacjach trwa dłużej. Wymagane jest przetestowanie w celu określenia prawidłowych wartości dla ograniczania przepustowości. Ograniczenia muszą być wystarczająco wysokie, aby umożliwić klastrowi reagowanie na zmiany w rozsądnym czasie i wystarczająco niskie, aby zapobiec zbyt dużemu zużyciu zasobów.

W większości przypadków klienci korzystają z ograniczeń, ponieważ byli już w środowisku ograniczonym dla zasobów. Niektóre przykłady mogą być ograniczone przepustowości sieci dla poszczególnych węzłów lub dysków, które nie mogą tworzyć wielu replik stanowych równolegle z powodu ograniczeń przepływności. Bez ograniczania operacje mogą przeciążać te zasoby, powodując niepowodzenie operacji lub wolne działanie. W takich sytuacjach klienci korzystali z ograniczania przepustowości i wiedzieli, że wydłużają czas, jaki zajęłoby klastrowi osiągnięcie stabilnego stanu. Klienci rozumieli również, że mogą one działać z niższą ogólną niezawodnością, gdy zostały ograniczone.

Konfigurowanie ograniczania przepływności

Usługa Service Fabric ma dwa mechanizmy ograniczania liczby ruchów replik. Domyślny mechanizm, który istniał przed usługą Service Fabric 5.7, reprezentuje ograniczanie przepustowości jako bezwzględną dozwoloną liczbę ruchów. Nie działa to w przypadku klastrów o wszystkich rozmiarach. W szczególności w przypadku dużych klastrów wartość domyślna może być zbyt mała, znacznie spowalniając równoważenie nawet wtedy, gdy jest to konieczne, bez efektu w mniejszych klastrach. Wcześniejszy mechanizm został zastąpiony przez ograniczanie oparte na procentach, co zwiększa się wraz z klastrami dynamicznymi, w których liczba usług i węzłów zmienia się regularnie.

Ograniczenia są oparte na procentach liczby replik w klastrach. Ograniczenia oparte na procentach umożliwiają wyrażenie reguły: "nie przenoś więcej niż 10% replik w interwale 10 minut", na przykład.

Ustawienia konfiguracji ograniczania opartego na procentach to:

  • GlobalMovementThrottleThresholdPercentage — maksymalna liczba ruchów dozwolonych w klastrze w dowolnym momencie wyrażona jako procent całkowitej liczby replik w klastrze. Wartość 0 nie wskazuje żadnego limitu. Wartość domyślna to 0. Jeśli zostanie określone zarówno to ustawienie, jak i Wartość GlobalMovementThrottleThreshold, zostanie użyty bardziej konserwatywny limit.
  • GlobalMovementThrottleThresholdPercentageForPlacement — maksymalna liczba ruchów dozwolonych w fazie umieszczania wyrażona jako procent całkowitej liczby replik w klastrze. Wartość 0 nie wskazuje żadnego limitu. Wartość domyślna to 0. Jeśli zostanie określone zarówno to ustawienie, jak i GlobalMovementThrottleThresholdForPlacement, zostanie użyty bardziej konserwatywny limit.
  • GlobalMovementThrottleThresholdPercentageForBalancing — maksymalna liczba ruchów dozwolonych w fazie równoważenia, wyrażona jako procent całkowitej liczby replik w klastrze. Wartość 0 nie wskazuje żadnego limitu. Wartość domyślna to 0. Jeśli zostanie określone zarówno to ustawienie, jak i GlobalMovementThrottleThresholdForBalancing, zostanie użyty bardziej konserwatywny limit.

Podczas określania wartości procentowej ograniczania należy określić wartość 5% jako 0,05. Interwał, w którym podlegają te ograniczenia, to GlobalMovementThrottleCountingInterval, który jest określony w sekundach.

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

za pomocą pliku ClusterConfig.json dla wdrożeń autonomicznych lub Template.json dla klastrów hostowanych na platformie Azure:

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

Domyślne ograniczenia oparte na liczbie

Te informacje są udostępniane w przypadku, gdy masz starsze klastry lub nadal zachowasz te konfiguracje w klastrach, które zostały od tego czasu uaktualnione. Ogólnie rzecz biorąc, zaleca się, aby zostały one zastąpione powyższymi ograniczeniami opartymi na procentach. Ponieważ ograniczanie oparte na procentach jest domyślnie wyłączone, te ograniczenia pozostają domyślnymi ograniczeniami dla klastra, dopóki nie zostaną wyłączone i zastąpione przez ograniczenia oparte na procentach.

  • GlobalMovementThrottleThreshold — to ustawienie kontroluje całkowitą liczbę ruchów w klastrze w pewnym czasie. Czas jest określony w sekundach jako GlobalMovementThrottleCountingInterval. Wartość domyślna dla wartości GlobalMovementThrottleThreshold wynosi 1000, a wartość domyślna parametru GlobalMovementThrottleCountingInterval wynosi 600.
  • MovementPerPartitionThrottleThreshold — to ustawienie kontroluje całkowitą liczbę ruchów dla dowolnej partycji usługi w pewnym czasie. Czas jest określony w sekundach jako MovementPerPartitionThrottleCountingInterval. Wartość domyślna elementu MovementPerPartitionThrottleThreshold wynosi 50, a wartość domyślna parametru MovementPerPartitionThrottleCountingInterval wynosi 600.

Konfiguracja tych ograniczania jest zgodna z tym samym wzorcem co ograniczanie oparte na procentach.

Następne kroki

  • Aby dowiedzieć się, jak klaster Resource Manager zarządza obciążeniem klastra i równoważy je w klastrze, zapoznaj się z artykułem dotyczącym równoważenia obciążenia
  • Resource Manager klastra ma wiele opcji opisywania klastra. Aby dowiedzieć się więcej na ich temat, zapoznaj się z tym artykułem dotyczącym opisywania klastra usługi Service Fabric