Hostowanie aplikacji ASP.NET Core na farmie internetowej

Autor: Chris Ross

Farma sieci Web to grupa co najmniej dwóch serwerów sieci Web (lub węzłów), które hostuje wiele wystąpień aplikacji. Gdy żądania od użytkowników docierają do farmy internetowej, moduł równoważenia obciążenia dystrybuuje żądania do węzłów farmy internetowej. Ulepszone farmy sieci Web:

  • Niezawodność/dostępność: gdy co najmniej jeden węzeł ulegnie awarii, moduł równoważenia obciążenia może kierować żądania do innych działających węzłów, aby kontynuować przetwarzanie żądań.
  • Pojemność/wydajność: Wiele węzłów może przetwarzać więcej żądań niż jeden serwer. Moduł równoważenia obciążenia równoważy obciążenie, dystrybuując żądania do węzłów.
  • Skalowalność: jeśli wymagana jest większa lub mniejsza pojemność, można zwiększyć lub zmniejszyć liczbę aktywnych węzłów, aby dopasować je do obciążenia. Technologie platformy farmy sieci Web, takie jak usługa aplikacja systemu Azure, mogą automatycznie dodawać lub usuwać węzły na żądanie administratora systemu lub automatycznie bez interwencji człowieka.
  • Łatwość konserwacji: węzły farmy sieci Web mogą polegać na zestawie usług udostępnionych, co ułatwia zarządzanie systemem. Na przykład węzły farmy sieci Web mogą polegać na jednym serwerze bazy danych i wspólnej lokalizacji sieciowej dla zasobów statycznych, takich jak obrazy i pliki do pobrania.

W tym temacie opisano konfigurację i zależności dla ASP.NET podstawowych aplikacji hostowanych w farmie sieci Web, która opiera się na udostępnionych zasobach.

Konfiguracja ogólna

Hostowanie i wdrażanie ASP.NET Core
Dowiedz się, jak konfigurować środowiska hostingu i wdrażać aplikacje ASP.NET Core. Skonfiguruj menedżera procesów w każdym węźle farmy internetowej, aby zautomatyzować uruchamianie i ponowne uruchamianie aplikacji. Każdy węzeł wymaga środowiska uruchomieniowego ASP.NET Core. Aby uzyskać więcej informacji, zobacz tematy w obszarze Host i wdrażanie dokumentacji.

Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
Dowiedz się więcej o konfiguracji aplikacji hostowanych za serwerami proxy i modułami równoważenia obciążenia, które często ukrywają ważne informacje o żądaniach.

Wdrażanie aplikacji ASP.NET Core w usłudze Azure App Service
Azure App Service to usługa platformy przetwarzania w chmurze firmy Microsoft umożliwiająca hostowanie aplikacji internetowych, w tym aplikacji ASP.NET Core. App Service to w pełni zarządzana platforma, która zapewnia automatyczne skalowanie, równoważenie obciążenia, stosowanie poprawek i ciągłe wdrażanie.

Dane aplikacji

Gdy aplikacja jest skalowana do wielu wystąpień, może istnieć stan aplikacji, który wymaga udostępniania między węzłami. Jeśli stan jest przejściowy, rozważ udostępnienie elementu IDistributedCache. Jeśli stan udostępniony wymaga trwałości, rozważ przechowywanie stanu udostępnionego w bazie danych.

Wymagana konfiguracja

Ochrona danych i Buforowanie wymagają konfiguracji aplikacji wdrożonych w farmie internetowej.

Ochrona danych

System ASP.NET Core Data Protection jest używany przez aplikacje do ochrony danych. Ochrona danych opiera się na zestawie kluczy kryptograficznych przechowywanych w pierścieniu kluczy. Gdy system ochrony danych jest inicjowany, stosuje ustawienia domyślne, które przechowują pierścień kluczy lokalnie. W ramach konfiguracji domyślnej unikatowy pierścień kluczy jest przechowywany w każdym węźle farmy sieci Web. W związku z tym każdy węzeł farmy sieci Web nie może odszyfrować danych zaszyfrowanych przez aplikację w żadnym innym węźle. Domyślna konfiguracja nie jest ogólnie odpowiednia dla hostowania aplikacji w farmie internetowej. Alternatywą dla implementacji pierścienia kluczy współużytkowanych jest zawsze kierowanie żądań użytkowników do tego samego węzła. Aby uzyskać więcej informacji na temat konfiguracji systemu ochrony danych dla wdrożeń farmy internetowej, zobacz Konfigurowanie ASP.NET Core Data Protection.

Buforowanie

W środowisku farmy internetowej mechanizm buforowania musi współużytkować buforowane elementy w węzłach farmy internetowej. Buforowanie muszą polegać na wspólnej pamięci podręcznej Redis, udostępnionej bazie danych programu SQL Server lub niestandardowej implementacji buforowania, która współużytkuje buforowane elementy w farmie internetowej. Aby uzyskać więcej informacji, zobacz Buforowanie rozproszone w usłudze ASP.NET Core.

Składniki zależne

Poniższe scenariusze nie wymagają dodatkowej konfiguracji, ale zależą od technologii wymagających konfiguracji dla farm internetowych.

Scenariusz Zależy...
Uwierzytelnianie Ochrona danych (zobacz Konfigurowanie ASP.NET Core Data Protection).

Aby uzyskać więcej informacji, zobacz Use authentication without ASP.NET Core and Share authentication s among ASP.NET apps (Używanie cookie uwierzytelniania bez ASP.NET Core Identity i Udostępnianie uwierzytelniania cookiemiędzy aplikacjami ASP.NET).
Identity Uwierzytelnianie i konfiguracja bazy danych.

Aby uzyskać więcej informacji, zobacz Wprowadzenie do Identity ASP.NET Core.
Sesja Ochrona danych (zaszyfrowane cookies) (zobacz Konfigurowanie ASP.NET Core Data Protection) i Buforowanie (zobacz Buforowanie rozproszone w ASP.NET Core).

Aby uzyskać więcej informacji, zobacz Zarządzanie sesją i stanem: stan sesji.
TempData Ochrona danych (zaszyfrowane cookies) (zobacz Konfigurowanie ASP.NET Core Data Protection) lub Sesja (zobacz Zarządzanie sesją i stanem: stan sesji).

Aby uzyskać więcej informacji, zobacz Zarządzanie sesją i stanem: TempData.
Ochrona przed fałszerzami Ochrona danych (zobacz Konfigurowanie ASP.NET Core Data Protection).

Aby uzyskać więcej informacji, zobacz Zapobieganie atakom z fałszowaniem żądań międzywitrynowych (XSRF/CSRF) na platformie ASP.NET Core.

Rozwiązywanie problemów

Ochrona danych i buforowanie

Jeśli ochrona danych lub buforowanie nie jest skonfigurowane dla środowiska farmy internetowej, sporadyczne błędy występują po przetworzeniu żądań. Dzieje się tak, ponieważ węzły nie współużytkują tych samych zasobów, a żądania użytkowników nie zawsze są kierowane z powrotem do tego samego węzła.

Rozważ użytkownika, który loguje się do aplikacji przy użyciu cookie uwierzytelniania. Użytkownik loguje się do aplikacji w jednym węźle farmy internetowej. Jeśli kolejne żądanie zostanie dostarczone do tego samego węzła, w którym się zalogowali, aplikacja będzie mogła odszyfrować uwierzytelnianie cookie i umożliwić dostęp do zasobu aplikacji. Jeśli kolejne żądanie zostanie dostarczone do innego węzła, aplikacja nie może odszyfrować uwierzytelniania cookie z węzła, w którym zalogował się użytkownik, a autoryzacja żądanego zasobu zakończy się niepowodzeniem.

Jeśli którykolwiek z następujących objawów występuje sporadycznie, problem jest zwykle śledzony w celu nieprawidłowej konfiguracji ochrony danych lub buforowania dla środowiska farmy internetowej:

  • Podziały uwierzytelniania: uwierzytelnianie cookie jest nieprawidłowo skonfigurowane lub nie można go odszyfrować. Logowanie OAuth (Facebook, Microsoft, Twitter) lub OpenId Połączenie nie powiodło się z powodu błędu "Korelacja nie powiodła się".
  • Podziały autoryzacji: Identity utracono.
  • Stan sesji traci dane.
  • Zniknęły buforowane elementy.
  • Dane tempData kończą się niepowodzeniem.
  • PoSTs fail: Sprawdzanie anty-fałszerzów kończy się niepowodzeniem.

Aby uzyskać więcej informacji na temat konfiguracji ochrony danych dla wdrożeń farmy internetowej, zobacz Konfigurowanie ASP.NET Core Data Protection. Aby uzyskać więcej informacji na temat konfiguracji buforowania wdrożeń farmy internetowej, zobacz Buforowanie rozproszone w programie ASP.NET Core.

Uzyskiwanie danych z aplikacji

Jeśli aplikacje farmy internetowej mogą odpowiadać na żądania, uzyskaj żądanie, połączenie i dodatkowe dane z aplikacji przy użyciu wbudowanego oprogramowania pośredniczącego terminalu. Aby uzyskać więcej informacji i przykładowy kod, zobacz Rozwiązywanie problemów i debugowanie projektów ASP.NET Core.

Dodatkowe zasoby