Automatyzowanie ponownej konfiguracji infrastruktury przy użyciu platformy Azure

Azure Container Instances
Azure Application Gateway
Azure Functions
Azure Monitor

Konteneryzacja to typowe podejście do modernizacji aplikacji. Możesz rozważyć użycie usługi Azure Kubernetes Service do obsługi zaawansowanych obciążeń lub użycia usługi Azure Container Instances w przypadku prostych obciążeń kontenerów, takich jak prosta aplikacja internetowa. Ten artykuł koncentruje się na implementowaniu bezserwerowej automatyzacji na poziomie infrastruktury dla wystąpień kontenerów, gdy usługa Application Gateway jest używana jako zapora.

Zaczniemy od typowego scenariusza. Aby zabezpieczyć wystąpienia kontenerów platformy Azure, możesz użyć grup kontenerów w usłudze Azure Container Instances. Za pomocą grup kontenerów można wdrożyć wystąpienia kontenerów platformy Azure w sieci wirtualnej, aby kontenery mogły uzyskiwać dostęp do innych zasobów prywatnych lub innych usług platformy Azure za pośrednictwem prywatnego punktu końcowego platformy Azure. W przypadku klientów hostujących aplikacje internetowe często używa się zapory aplikacji internetowej, takiej jak aplikacja systemu Azure Gateway, aby kierować ruch przychodzący podczas korzystania z usługi Azure Container Instances jako puli zaplecza. Ten artykuł jest doskonałym punktem wyjścia: uwidacznia statyczny adres IP dla grupy kontenerów.

Jednym z potencjalnych wyzwań z tym podejściem jest użycie niestacjonanego prywatnego adresu IP jako puli zaplecza. Prywatny adres IP może zostać obrócony podczas konserwacji, co wymaga ręcznego ponownego skonfigurowania puli zaplecza przez administratora chmury. Jeśli do skalowania zostaną dodane nowe kontenery, administrator będzie również musiał przeprowadzić ponowną konfigurację, aby upewnić się, że ruch jest kierowany do właściwej puli zaplecza. Sondy dostępności i sondy gotowości nie są obsługiwane w grupach kontenerów, co utrudnia identyfikowanie przestojów obciążeń.

W tym artykule omówiono ulepszenia rozwiązywania tych typowych problemów dzięki wdrożeniu usługi Application Szczegółowe informacje i Azure Monitor na potrzeby monitorowania i używania usługi Azure Functions do automatycznego obracania prywatnych adresów IP. Takie podejście zwiększa nadmiarowość obciążenia.

Potencjalne przypadki użycia

Ta architektura najlepiej sprawdza się w następujących celach:

  • Wdrożenie bezserwerowe.
  • Minimalna operacja obciążenia natywnego dla chmury z automatyzacją.
  • Proste obciążenie kontenera, które nie wymaga zaawansowanej aranżacji kontenerów.
  • Wysoce nadmiarowe, zewnętrzne obciążenie ze zautomatyzowaną ponowną konfiguracją.
  • Obciążenie kontenera, które wymaga dostępu do zasobów prywatnych, takich jak te uwidocznione przez prywatne punkty końcowe platformy Azure.

Architektura

Diagram przepływu przedstawiający dostęp do usługi Azure Cosmos DB za pomocą prywatnego punktu końcowego dla usługi Azure Container Instances. Jest ona fronted przez bramę aplikacja systemu Azure.

Pobierz plik programu Visio z tą architekturą.

Przepływ danych

Część 1. Typowy przepływ ruchu aplikacji internetowej

1a. Usługa Application Gateway ma funkcję zapory aplikacji internetowej, która jest idealna do obsługi ruchu publicznego przed trafieniem obciążenia zaplecza. Usługa Application Gateway uwidacznia publiczny adres IP, dlatego usługa Azure DDoS Protection zapewnia kolejną warstwę ochrony.

1b. Pula zaplecza usługi Application Gateway jest skonfigurowana przy użyciu prywatnego adresu IP wystąpienia kontenera platformy Azure w grupie kontenerów. Wystąpienia kontenerów platformy Azure w grupach kontenerów nie są dostarczane z w pełni kwalifikowanymi nazwami domen (FQDN), dlatego adres IP musi być używany.

1c. Kontenery w usłudze Azure Container Instances mogą korzystać z zasobów prywatnych, takich jak usługa Azure Cosmos DB, za pośrednictwem linków prywatnych.

Część 2. Ulepszenia automatyzacji

2a. Usługa Application Gateway zawiera metrykę liczby hostów w dobrej kondycji, której można użyć jako sondy aktualności dla wystąpień kontenerów platformy Azure, biorąc pod uwagę, że grupy kontenerów w usłudze Container Instances nie obsługują sond dostępności ani gotowości.

2b. Aplikacja Szczegółowe informacje jest używana w kontenerach do zbierania innych metryk, w tym pulsów, które można wysyłać do aplikacji Szczegółowe informacje do monitorowania za pośrednictwem wątku niestandardowego.

2c. Alerty można skonfigurować na podstawie poziomów progów zdefiniowanych w krokach 2a i 2b. Załóżmy na przykład, że system ma trzy wystąpienia kontenerów uruchomione jako pula zaplecza. Alert można skonfigurować tak, aby był uruchamiany, gdy liczba hostów w dobrej kondycji jest mniejsza niż 3. W grupie akcji reguł alertów możesz użyć funkcji platformy Azure jako typu akcji, aby wyzwolić akcję niestandardową.

2d. W funkcji platformy Azure zestaw Azure SDK służy do pobierania konfiguracji istniejących wystąpień kontenera i ponownego tworzenia tych samych wystąpień. Ta funkcja jest wyzwalana przez alert zdefiniowany w kroku 2c. Uruchomienie tej funkcji może zająć dużo czasu, w zależności od złożoności konfiguracji. Usługa Azure Functions może upłynął limit czasu, dzięki czemu można używać usługi Azure Durable Functions do obsługi długotrwałych procesów i pobierania aktualizacji stanu.

Składniki

Automation

  • Azure Durable Functions: w przeciwieństwie do usługi Azure Functions rozszerzenie Durable Functions jest stanowe i obsługuje kilka wzorców stanowych przepływów pracy. W tym przykładzie jest używany wzorzec monitora.
  • Zestawy SDK platformy Azure: zestawy SDK platformy Azure to kolekcje bibliotek, których można używać do interakcji z usługami platformy Azure w preferowanym języku programowania. Zestawy SDK zapewniają większą elastyczność integracji logiki wykonującej automatyzację.

Monitorowanie

  • Metryki usługi Azure Monitor: ta funkcja usługi Azure Monitor zbiera wstępnie zdefiniowane dane liczbowe z usług platformy Azure.
  • Grupy akcji: Grupa akcji to kolekcja preferencji powiadomień zdefiniowanych przez właściciela zasobu. Możesz zdefiniować kanały powiadomień i akcje na podstawie wyzwolonych alertów.

Sieć

  • Azure DDoS Protection: usługa Azure DDoS (Podstawowa) Protection jest bezpłatna i włączona na wszystkich publicznych adresach IP. Usługa Azure DDoS Network Protection zapewnia więcej możliwości, takich jak pozyskiwanie dzienników w innych lokalizacjach i możliwość angażowania zespołu DDoS Protection Rapid Response.
  • aplikacja systemu Azure Gateway: usługa Azure Web Application Firewall zapewnia ochronę aplikacji publicznych przed programami wykorzystującymi luki w zabezpieczeniach, takimi jak wstrzyknięcie kodu SQL i ataki XSS.
  • Azure Private Link: usługa Azure Private Link zapewnia dostęp do usług PaaS platformy Azure za pośrednictwem prywatnego punktu końcowego w sieci szkieletowej firmy Microsoft, aby dodatkowo zwiększyć bezpieczeństwo dostępu do sieci.

Aplikacja

  • Azure Container Instances: usługa Azure Container Instances bezproblemowo uruchamia obrazy kontenerów bez konieczności konfigurowania innej infrastruktury. Należy rozważyć usługę Azure Kubernetes Service (AKS) na potrzeby zaawansowanej aranżacji kontenerów.
  • Azure Cosmos DB: Usługa Azure Cosmos DB to w pełni zarządzana baza danych NoSQL, która obsługuje wiele platform, takich jak SQL, Cassandra i MongoDB.
  • Azure Key Vault: jako najlepsze rozwiązanie w zakresie zabezpieczeń deweloperzy nie przechowują parametry połączenia jako zwykłego tekstu w kodzie źródłowym aplikacji. Usługa Azure Key Vault służy jako centralna lokalizacja do przechowywania wpisów tajnych z ulepszonymi zabezpieczeniami. Aplikacje mogą pobierać niezbędne klucze z ulepszonymi zabezpieczeniami.

Alternatywy

Powyższy scenariusz aktualizuje pulę zaplecza dla usługi Application Gateway. Alternatywnie możesz użyć prywatnej strefy DNS platformy Azure jako docelowego zaplecza usługi Application Gateway i użyć funkcji platformy Azure do zaktualizowania rekordu zamiast wprowadzania zmian w usłudze Application Gateway. Ta alternatywa skróciłaby czas wdrażania. Z drugiej strony metryki usługi Application Gateway nie będą mogły zidentyfikować liczby hostów, ponieważ byłyby abstrakcyjne przez usługę DNS. Dlatego ta automatyzacja musi zostać wyzwolona za pośrednictwem rozwiązania do monitorowania aplikacji, takiego jak application Szczegółowe informacje lub Azure Monitor bezpośrednio.

Platforma Azure oferuje wiele opcji hostowania obciążeń opartych na kontenerach, takich jak Azure Kubernetes Service i aplikacja systemu Azure Service.

Usługa Azure Kubernetes Service udostępnia zaawansowane funkcje orkiestracji kontenerów i sieci, takie jak zasób usługi, który nie jest dostępny w usłudze Container Instances. Ta architektura referencyjna spełnia to wymaganie.

Usługa App Service może również hostować obciążenia kontenerów, a środowisko App Service Environment umożliwia deweloperom wdrażanie usługi App Service w usłudze Azure Virtual Network. Struktura cenowa usługi Container Instances, w porównaniu z usługą App Service, sprawia, że jest atrakcyjna dla małych obciążeń.

Kwestie wymagające rozważenia

Dostępność

Ponieważ sondy dostępności i gotowości nie są obsługiwane w grupach kontenerów, zalecamy użycie metryk usługi Azure Monitor i aplikacja systemu Azure Szczegółowe informacje do monitorowania. Kondycja kontenera i czas pracy nie są deterministycznymi metodami określania, czy system działa na końcu.

Operacje

Usługa Azure Durable Functions służy do ponownego konfigurowania infrastruktury, jeśli wystąpi błąd w usłudze Container Instances lub jeśli prywatny adres IP grupy kontenerów ulegnie zmianie. Jak wspomniano w dokumentacji, proces aprowizacji trwa nieco dłużej. Użytkownicy mogą napotkać minimalny przestój, jeśli kontenery nie są gotowe na czas.

Ta architektura dodaje warstwę odporności. Jednak nadal zalecamy skonfigurowanie monitorowania w aplikacji i monitorowanie stanu platformy Azure pod kątem błędów platformy.

Skalowalność

Wymagania dotyczące procesora CPU i pamięci są definiowane podczas tworzenia kontenerów, więc nie będzie można wykonywać skalowania w pionie bezpośrednio. Kontenery można dodawać do grupy kontenerów w celu skalowania w poziomie. Należy jednak pamiętać, że każdy kontener w grupie kontenerów będzie używać jednego prywatnego adresu IP, więc limitem będzie rozmiar aprowizowanej podsieci.

Innym ważnym czynnikiem do skalowania jest stan aplikacji. Aplikacja musi obsługiwać stan lokalnie lub przy użyciu usług zewnętrznych, takich jak Azure Cache for Redis, aby zapewnić, że skalowanie na żądanie nie powoduje utraty danych w aplikacji.

Zabezpieczenia

Możliwość wdrażania usługi PaaS w sieci wirtualnej (iniekcja sieci wirtualnej) nie zwiększa bezpieczeństwa, jeśli konfiguracja nie jest poprawnie skonfigurowana. Iniekcja sieci wirtualnej zapewnia administratorom większą kontrolę sieci, zapewniając korzyści, takie jak ściślejsze sieciowe grupy zabezpieczeń i wykorzystanie zasobów, które nie są udostępniane publicznie.

Usługa Private Link projektuje prywatny punkt końcowy w sieci wirtualnej, który umożliwia aplikacji bezpośredni dostęp do usługi Azure PaaS za pośrednictwem prywatnego adresu IP. Jednocześnie administratorzy mogą dodatkowo kontrolować, kto może uzyskiwać dostęp do odpowiedniej usługi Azure PaaS.

Jeśli przechowujesz obrazy kontenerów w usłudze Azure Container Registry, możesz włączyć usługę Microsoft Defender dla rejestrów kontenerów w celu przeprowadzania skanowania luk w zabezpieczeniach obrazu kontenera.

Wdrażanie tego scenariusza

Przykładowy kod źródłowy z funkcją Azure Functions wykonującą automatyzację jest dostępny w witrynie GitHub.

Potrzebna będzie jednostka usługi (identyfikator klienta i wpis tajny). Będzie ona używana przez usługę Azure Functions do wykonywania operacji usługi Azure Resource Manager. Ta jednostka usługi wymaga co najmniej praw właściciela w grupie zasobów, aby mogła zaktualizować usługę Application Gateway i utworzyć wystąpienia kontenera platformy Azure. Przykład tworzy prostą aplikację w języku Python, konteneryzowaną i przechowywaną w usłudze Container Registry. Zaktualizuj rejestr przy użyciu własnej aplikacji.

Cennik

Skorzystaj z kalkulatora cen platformy Azure, aby oszacować koszty zasobów platformy Azure.

Zobacz ten przykład poprzedniej implementacji.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

  • Marcus Tee | Strategia techniczna i harmonogram działania

Następne kroki

Przeglądaj nasze architektury:

Powiązane wskazówki: