Skalowanie kontenerów i aplikacji bezserwerowych
Napiwek
Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
Istnieją dwa sposoby skalowania aplikacji: w górę lub w poziomie. Pierwszy odnosi się do dodawania pojemności do pojedynczego zasobu, a drugi odnosi się do dodawania większej liczby zasobów w celu zwiększenia pojemności.
Proste rozwiązanie: skalowanie w górę
Uaktualnianie istniejącego serwera hosta ze zwiększonym użyciem procesora CPU, pamięci, szybkości we/wy dysku i szybkości we/wy sieci jest nazywane skalowaniem w górę. Skalowanie w górę aplikacji natywnej dla chmury polega na wyborze bardziej zdolnych zasobów od dostawcy chmury. Możesz na przykład utworzyć nową pulę węzłów z większymi maszynami wirtualnymi w klastrze Kubernetes. Następnie przeprowadź migrację usług konteneryzowanych do nowej puli.
Aplikacje bezserwerowe są skalowane w górę, wybierając plan usługi Functions w warstwie Premium lub rozmiary wystąpień w warstwie Premium z dedykowanego planu usługi App Service.
Skalowanie aplikacji natywnych dla chmury
Aplikacje natywne dla chmury często doświadczają dużych wahań zapotrzebowania i wymagają skalowania na chwilę. Faworyzują skalowanie w górę. Skalowanie w poziomie odbywa się przez dodanie dodatkowych maszyn (nazywanych węzłami) lub wystąpień aplikacji do istniejącego klastra. Na platformie Kubernetes można skalować ręcznie, dostosowując ustawienia konfiguracji aplikacji (na przykład skalowanie puli węzłów) lub przez skalowanie automatyczne.
Klastry usługi AKS mogą skalować automatycznie na jeden z dwóch sposobów:
Najpierw narzędzie Horizontal Pod Autoscaler monitoruje zapotrzebowanie na zasoby i automatycznie skaluje repliki zasobników, aby je spełnić. Gdy ruch wzrasta, dodatkowe repliki są automatycznie aprowizowane w celu skalowania usług w poziomie. Podobnie, gdy zapotrzebowanie spada, są usuwane w celu skalowania usług. Zdefiniuj metryka, na której ma być skalowana, na przykład użycie procesora CPU. Można również określić minimalną i maksymalną liczbę replik do uruchomienia. Usługa AKS monitoruje odpowiednio metrykę i skaluje je.
Następnie funkcja automatycznego skalowania klastra usługi AKS umożliwia automatyczne skalowanie węzłów obliczeniowych w klastrze Kubernetes w celu spełnienia wymagań. Dzięki niemu można automatycznie dodawać nowe maszyny wirtualne do bazowego zestawu skalowania maszyn wirtualnych platformy Azure za każdym razem, gdy wymagana jest większa pojemność obliczeniowa. Usuwa również węzły, gdy nie są już wymagane.
Rysunek 3–11 przedstawia relację między tymi dwoma usługami skalowania.
Rysunek 3–11. Skalowanie w górę planu usługi App Service.
Współpraca zapewnia optymalną liczbę wystąpień kontenerów i węzłów obliczeniowych, aby obsługiwać zmienne zapotrzebowanie. Narzędzie do automatycznego skalowania zasobników w poziomie optymalizuje wymaganą liczbę zasobników. Funkcja automatycznego skalowania klastra optymalizuje wymaganą liczbę węzłów.
Skalowanie usługi Azure Functions
Usługa Azure Functions jest automatycznie skalowana w poziomie na żądanie. Zasoby serwera są dynamicznie przydzielane i usuwane na podstawie liczby wyzwolonych zdarzeń. Opłaty są naliczane tylko za zasoby obliczeniowe używane podczas uruchamiania funkcji. Rozliczenia są oparte na liczbie wykonań, czasu wykonywania i używanej pamięci.
Chociaż domyślny plan zużycia zapewnia ekonomiczne i skalowalne rozwiązanie dla większości aplikacji, opcja Premium umożliwia deweloperom elastyczność niestandardowych wymagań usługi Azure Functions. Uaktualnienie do planu Premium zapewnia kontrolę nad rozmiarami wystąpień, wstępnie rozgrzanymi wystąpieniami (aby uniknąć opóźnień zimnego startu) i dedykowanymi maszynami wirtualnymi.