Defragmentacja metryk i ładowania w usłudze Service Fabric
Domyślną strategią menedżera zasobów klastra usługi Service Fabric do zarządzania metrykami obciążenia w klastrze jest rozłożenie obciążenia. Zapewnienie równomiernego wykorzystania węzłów pozwala uniknąć gorących i zimnych miejsc, które prowadzą zarówno do rywalizacji, jak i zmarnowanych zasobów. Dystrybucja obciążeń w klastrze jest również najbezpieczniejsza w zakresie awarii, ponieważ gwarantuje, że awaria nie wyjmuje dużego procentu danego obciążenia.
Menedżer zasobów klastra usługi Service Fabric obsługuje inną strategię zarządzania obciążeniem, czyli 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, menedżer zasobów klastra 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 w żadnym węźle, aby je uruchomić. Duże obciążenia nie są problemem w usłudze Service Fabric; w takich przypadkach menedżer zasobów klastra 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 obejścia, 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. Odkryliśmy, że tworzenie dużych usług trwało znacznie dłużej, gdy tylko 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 zaplanowaniu tych nowych obciążeń w klastrze.
Metryki defragmentacji można skonfigurować tak, aby menedżer zasobów klastra 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 trudno znaleźć miejsce dla nich w klastrze. Gdy jest możliwa reorganizacja, nastąpi to 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 i taki, który nie jest.
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że zostać umieszczone w węzłach czterech lub pięciu bez konieczności oczekiwania na przeniesienie innych usług.
Wady i zalety defragmentacji
Więc jakie są te inne kompromisy koncepcyjne? Oto szybka 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ęcej usług i powodować większą liczbę 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. Menedżer zasobów klastra próbuje skonsolidować metryki defragmentacji tak bardzo, jak to możliwe, rozłożyć inne. 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 używa 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 jest decyzją globalną 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 parametr "Metric1" jest skonfigurowany jako metryka defragmentacji, podczas gdy "Metryka 2" będzie nadal wyważona normalnie.
ClusterManifest.xml:
<Section Name="DefragmentationMetrics">
<Parameter Name="Metric1" Value="true" />
<Parameter Name="Metric2" Value="false" />
</Section>
za pośrednictwem 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
- 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
- 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