Udostępnij za pośrednictwem


Ograniczanie przepustowości menedżera zasobów klastra usługi Service Fabric

Nawet jeśli menedżer zasobów klastra został poprawnie skonfigurowany, klaster może być zakłócany. Na przykład mogą wystąpić jednoczesne awarie węzła i domeny błędów — co się stanie w przypadku wystąpienia tego błędu podczas uaktualniania? Menedżer zasobów klastra zawsze próbuje naprawić wszystko, zużywając zasoby klastra próbujące zreorganizować i naprawić klaster. Ograniczanie przepustowości pomaga zapewnić backstop, dzięki czemu klaster może używać zasobów do stabilizacji — węzły wracają, poprawiane bity są naprawiane przez partycje sieciowe.

Aby pomóc w takich sytuacjach, menedżer zasobów klastra usługi Service Fabric obejmuje kilka ograniczeń. Te ograniczenia są dość duże młoty. Ogólnie rzecz biorąc, nie należy ich zmieniać bez starannego planowania i testowania.

Jeśli zmienisz ograniczenia usługi Resource Manager klastra, należy je dostosować do oczekiwanego rzeczywistego obciążenia. Może się okazać, że trzeba mieć pewne ograniczenia przepustowości, nawet jeśli oznacza to, że w niektórych sytuacjach ustabilizowanie klastra trwa dłużej. Testowanie jest wymagane do 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.

Przez większość czasu widzieliśmy, że klienci używają ograniczeń, ponieważ już byli w środowisku ograniczonym zasobów. Niektóre przykłady to ograniczona przepustowość 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 używali ograniczeń i wiedzieli, że wydłużają czas, jaki zajęłoby klastrowi osiągnięcie stabilnego stanu. Klienci rozumieli również, że mogą oni działać z niższą ogólną niezawodnością, gdy zostały ograniczone.

Konfigurowanie ograniczń

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. Poprzedni mechanizm został zastąpiony przez ograniczanie oparte na procentach, co zwiększa się w przypadku klastrów dynamicznych, 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 10-minutowym interwale", na przykład.

Ustawienia konfiguracji ograniczania opartego na procentach to:

  • GlobalMovementThrottleThresholdPercentage — maksymalna liczba ruchów dozwolonych w klastrze w dowolnym momencie wyrażona jako wartość procentowa całkowitej liczby replik w klastrze. Wartość 0 nie wskazuje żadnego limitu. Wartość domyślna to 0. Jeśli określono zarówno to ustawienie, jak i 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 określono 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 określono zarówno to ustawienie, jak i GlobalMovementThrottleThresholdForBalancing, zostanie użyty bardziej konserwatywny limit.

Podczas określania wartości procentowej ograniczania należy określić 5% jako 0,05. Interwał, w którym są zarządzane 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 pośrednictwem 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 elementu GlobalMovementThrottleThreshold wynosi 1000, a wartość domyślna dla wartości GlobalMovementThrottleCountingInterval to 600.
  • MovementPerPartitionThrottleThreshold — to ustawienie steruje 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 elementu MovementPerPartitionThrottleCountingInterval wynosi 600.

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

Następne kroki

  • Aby dowiedzieć się, jak menedżer zasobów klastra zarządza obciążeniem klastra i równoważy obciążenie w klastrze, zapoznaj się z artykułem dotyczącym równoważenia obciążenia
  • Menedżer zasobów klastra ma wiele opcji opisywania klastra. Aby dowiedzieć się więcej o nich, zapoznaj się z tym artykułem dotyczącym opisywania klastra usługi Service Fabric