Udostępnij za pośrednictwem


Defragmentacja metryk i ładowania w usłudze Service Fabric

Domyślną strategią klastra usługi Service Fabric Resource Manager zarządzanie metrykami obciążenia w klastrze jest rozłożenie obciążenia. Zapewnienie równomiernego wykorzystania węzłów pozwala uniknąć gorących i zimnych punktów, które prowadzą zarówno do rywalizacji, jak i zmarnowanych zasobów. Dystrybucja obciążeń w klastrze jest również najbezpieczniejsza pod względem awarii, ponieważ gwarantuje, że awaria nie wynosi dużego procentu danego obciążenia.

Klaster usługi Service Fabric Resource Manager obsługuje inną strategię zarządzania obciążeniem, co jest defragmentacją. Defragmentacja oznacza, że zamiast próbować dystrybuować wykorzystanie metryki w klastrze, jest ona konsolidowana. Konsolidacja to tylko odwrócenie domyślnej strategii równoważenia — zamiast minimalizować średnie odchylenie standardowe obciążenia metryki, klaster Resource Manager próbuje go zwiększyć.

Kiedy należy używać defragmentacji

Dystrybucja obciążenia w klastrze zużywa niektóre zasoby w każdym węźle. Niektóre obciążenia tworzą usługi, które są wyjątkowo duże i zużywają większość lub wszystkie węzły. W takich przypadkach istnieje możliwość, że po utworzeniu dużych obciążeń nie ma wystarczającej ilości miejsca na żadnym węźle, aby je uruchomić. Duże obciążenia nie są problemem w usłudze Service Fabric; w takich przypadkach klaster Resource Manager określa, że musi zreorganizować klaster, aby zapewnić miejsce dla tego dużego obciążenia. Jednak w międzyczasie obciążenie musi czekać na zaplanowanie w klastrze.

Jeśli istnieje wiele usług i stanu do poruszania się, może upłynąć dużo czasu, aby duże obciążenie mogło zostać umieszczone w klastrze. Jest to bardziej prawdopodobne, jeśli inne obciążenia w klastrze są również duże, a więc ich reorganizacja trwa dłużej. Zespół usługi Service Fabric mierzy czasy tworzenia w symulacjach tego scenariusza. Ustaliliśmy, że tworzenie dużych usług trwało znacznie dłużej, gdy wykorzystanie klastra przekroczyło od 30% do 50%. Aby obsłużyć ten scenariusz, wprowadziliśmy defragmentację jako strategię równoważenia. Odkryliśmy, że w przypadku dużych obciążeń, zwłaszcza tych, w których czas tworzenia był ważny, defragmentacja naprawdę pomogła zaplanować te nowe obciążenia w klastrze.

Metryki defragmentacji można skonfigurować tak, aby klaster Resource Manager aktywnie starał się skondensować obciążenie usług do mniejszej liczby węzłów. Dzięki temu niemal zawsze jest miejsce na duże usługi bez reorganizacji klastra. Brak konieczności reorganizacji klastra umożliwia szybkie tworzenie dużych obciążeń.

Większość osób nie potrzebuje defragmentacji. Usługi są zwykle małe, więc nie trudno jest znaleźć miejsce dla nich w klastrze. Gdy jest możliwa reorganizacja, następuje szybko, ponieważ większość usług jest mała i może być przenoszona szybko i równolegle. Jeśli jednak masz duże usługi i potrzebujesz ich szybko, strategia defragmentacji jest dla Ciebie. Omówimy kompromisy dotyczące używania defragmentacji w następnej kolejności.

Kompromisy defragmentacji

Defragmentacja może zwiększyć wpływ awarii, ponieważ więcej usług działa w węzłach, które kończą się niepowodzeniem. Defragmentacja może również zwiększyć koszty, ponieważ zasoby w klastrze muszą być przechowywane w rezerwie, czekając na utworzenie dużych obciążeń.

Na poniższym diagramie przedstawiono wizualną reprezentację dwóch klastrów— jeden, który jest defragmentowany, a drugi, który nie jest.

Porównywanie klastrów zrównoważonych i defragmentowanych

W zrównoważonym przypadku należy wziąć pod uwagę liczbę ruchów, które byłyby niezbędne do umieszczenia jednego z największych obiektów usługi. W klastrze defragmentowany duże obciążenie można umieścić na węzłach cztery lub pięć bez konieczności oczekiwania na przeniesienie innych usług.

Defragmentacja plusy i wady

Więc jakie są te inne kompromisy koncepcyjne? Oto krótka tabela rzeczy, o których należy pomyśleć:

Defragmentacja Pros Wady defragmentacji
Umożliwia szybsze tworzenie dużych usług Koncentruje się na mniejszej liczbie węzłów, zwiększając rywalizację
Umożliwia mniejsze przenoszenie danych podczas tworzenia Błędy mogą mieć wpływ na większą liczbę usług i powodować zwiększenie współczynnika zmian
Umożliwia rozbudowany opis wymagań i odzyskiwania miejsca Bardziej złożona ogólna konfiguracja zarządzania zasobami

W tym samym klastrze można mieszać defragmentowane i normalne metryki. Klaster Resource Manager próbuje skonsolidować metryki defragmentacji możliwie jak najwięcej podczas rozpowszechniania pozostałych. Wyniki mieszania strategii defragmentacji i równoważenia zależą od kilku czynników, w tym:

  • liczba metryk równoważenia a liczba metryk defragmentacji
  • Czy dowolna usługa korzysta z obu typów metryk
  • wagi metryk
  • bieżące obciążenia metryk

Eksperymentowanie jest wymagane, aby określić dokładną wymaganą konfigurację. Zalecamy dokładne pomiary obciążeń przed włączeniem metryk defragmentacji w środowisku produkcyjnym. Jest to szczególnie istotne w przypadku mieszania defragmentacji i zrównoważonych metryk w ramach tej samej usługi.

Konfigurowanie metryk defragmentacji

Konfigurowanie metryk defragmentacji to globalna decyzja w klastrze, a poszczególne metryki można wybrać do defragmentacji. Poniższe fragmenty kodu konfiguracji pokazują, jak skonfigurować metryki na potrzeby defragmentacji. W takim przypadku wartość "Metric1" jest skonfigurowana jako metryka defragmentacji, podczas gdy wartość "Metric2" będzie nadal normalnie zrównoważona.

ClusterManifest.xml:

<Section Name="DefragmentationMetrics">
    <Parameter Name="Metric1" Value="true" />
    <Parameter Name="Metric2" Value="false" />
</Section>

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

"fabricSettings": [
  {
    "name": "DefragmentationMetrics",
    "parameters": [
      {
          "name": "Metric1",
          "value": "true"
      },
      {
          "name": "Metric2",
          "value": "false"
      }
    ]
  }
]

Następne kroki

  • 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
  • Metryki to sposób, w jaki menedżer zasobów klastra usługi Service Fabric zarządza zużyciem i pojemnością w klastrze. Aby dowiedzieć się więcej o metrykach i sposobie ich konfigurowania, zapoznaj się z tym artykułem