Hostowanie aplikacji ASP.NET Core na farmie internetowej
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ważne
Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
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 musi 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 sieci Web. 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 Używanie cookie uwierzytelniania bez ASP.NET Core Identityi Udostępnianie plików cookie uwierzytelniania mię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 pliki cookie) (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 pliki cookie) (zobacz Konfigurowanie ASP.NET podstawowej ochrony danych) lub sesji (zobacz Zarządzanie sesją i stanem: stan sesji). Aby uzyskać więcej informacji, zobacz Zarządzanie sesją i stanem: TempData. |
Antiforgery | 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 OpenIdConnect kończy się niepowodzeniem 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 antyforgery 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
- Rozszerzenie niestandardowego skryptu dla systemu Windows: pobiera i wykonuje skrypty na maszynach wirtualnych platformy Azure, co jest przydatne w przypadku konfiguracji po wdrożeniu i instalacji oprogramowania.
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia