Hostování ASP.NET Core ve webové farmě

Autor: Chris Ross

Webová farma je skupina dvou nebo více webových serverů (nebo uzlů), které hostují více instancí aplikace. Když žádosti od uživatelů přijdou do webové farmy, nástroj pro vyrovnávání zatížení distribuuje požadavky do uzlů webové farmy. Webové farmy zlepšují:

  • Spolehlivost/dostupnost: Pokud jeden nebo více uzlů selže, může nástroj pro vyrovnávání zatížení směrovat požadavky na jiné funkční uzly, aby mohl pokračovat ve zpracování požadavků.
  • Kapacita/výkon: Více uzlů může zpracovávat více požadavků než jeden server. Nástroj pro vyrovnávání zatížení vyrovnává zatížení tím, že distribuuje požadavky na uzly.
  • Škálovatelnost: Pokud se vyžaduje více nebo méně kapacity, můžete počet aktivních uzlů zvýšit nebo snížit tak, aby odpovídaly úloze. Technologie platformy webové farmy, jako je například služba Aplikace Azure Service, můžou automaticky přidávat nebo odebírat uzly na žádost správce systému nebo automaticky bez zásahu člověka.
  • Udržovatelnost: Uzly webové farmy můžou záviset na sadě sdílených služeb, což vede k jednodušší správě systému. Uzly webové farmy můžou například záviset na jednoúčelovém databázovém serveru a společném síťovém umístění pro statické prostředky, jako jsou image a soubory ke stažení.

Toto téma popisuje konfiguraci a závislosti pro ASP.NET základní aplikace hostované ve webové farmě, které spoléhají na sdílené prostředky.

Obecná konfigurace

Hostování a nasazení ASP.NET Core
Zjistěte, jak nastavit hostitelská prostředí a nasazovat aplikace ASP.NET Core. Nakonfigurujte správce procesů na každém uzlu webové farmy, který automatizuje spuštění a restartování aplikace. Každý uzel vyžaduje modul runtime ASP.NET Core. Další informace najdete v tématech v oblasti Hostitel a nasazení v dokumentaci.

Konfigurace ASP.NET Core pro práci s proxy servery a nástroji pro vyrovnávání zatížení
Seznamte se s konfigurací aplikací hostovaných za proxy servery a nástroji pro vyrovnávání zatížení, které často zakrývají důležité informace o žádosti.

Nasazení aplikací ASP.NET Core do Azure App Service
Azure App Service je služba platformy cloud computingu Microsoftu pro hostování webových aplikací, včetně ASP.NET Core. App Service je plně spravovaná platforma, která poskytuje automatické škálování, vyrovnávání zatížení, opravy a průběžné nasazování.

Data aplikace

Když se aplikace škáluje na více instancí, může existovat stav aplikace, který vyžaduje sdílení mezi uzly. Pokud je stav přechodný, zvažte sdílení IDistributedCache. Pokud sdílený stav vyžaduje trvalost, zvažte uložení sdíleného stavu do databáze.

Požadovaná konfigurace

Ochrana dat a Ukládání do mezipaměti vyžadují konfiguraci pro aplikace nasazené do webové farmy.

Ochrana dat

Aplikace k ochraně dat používají systém ASP.NET Core Data Protection. Ochrana dat spoléhá na sadu kryptografických klíčů uložených v okruhu klíčů. Když je systém Ochrany dat inicializován, použije výchozí nastavení , která ukládají okruh klíčů místně. Ve výchozí konfiguraci se na každém uzlu webové farmy uloží jedinečný okruh klíčů. Každý uzel webové farmy proto nemůže dešifrovat data zašifrovaná aplikací na jiném uzlu. Výchozí konfigurace obecně není vhodná pro hostování aplikací ve webové farmě. Alternativou k implementaci sdíleného okruhu klíčů je vždy směrovat požadavky uživatelů do stejného uzlu. Další informace o konfiguraci systému ochrany dat pro nasazení webové farmy najdete v tématu Konfigurace ASP.NET Základní ochrana dat.

Ukládání do mezipaměti

V prostředí webové farmy musí mechanismus ukládání do mezipaměti sdílet položky uložené v mezipaměti mezi uzly webové farmy. Ukládání do mezipaměti musí buď spoléhat na společnou mezipaměť Redis, sdílenou databázi SQL Serveru, nebo vlastní implementaci ukládání do mezipaměti, která sdílí položky uložené v mezipaměti ve webové farmě. Další informace naleznete v tématu Distribuované ukládání do mezipaměti v ASP.NET Core.

Závislé komponenty

Následující scénáře nevyžadují další konfiguraci, ale závisejí na technologiích, které vyžadují konfiguraci webových farem.

Scenario Závisí na ...
Authentication Ochrana dat (viz Konfigurace ASP.NET Základní ochrana dat).

Další informace najdete v tématu Použití cookie ověřování bez ASP.NET core Identity a sdílení ověřování cookiemezi aplikacemi ASP.NET.
Identity Konfigurace ověřování a databáze.

Další informace najdete v tématu Úvod do Identity ASP.NET Core.
Relace Ochrana dat (šifrovanécookie) (viz Konfigurace ASP.NET Core Data Protection) a Ukládání do mezipaměti (viz Distribuované ukládání do mezipaměti v ASP.NET Core).

Další informace naleznete v tématu Správa relací a stavů: Stav relace.
TempData Ochrana dat (šifrovaná cookie) (viz Konfigurace ASP.NET Základní ochrana dat) nebo Relace (viz Správa relací a stavu: Stav relace).

Další informace naleznete v tématu Správa relací a stavů: TempData.
Anti-forgery Ochrana dat (viz Konfigurace ASP.NET Základní ochrana dat).

Další informace najdete v tématu Prevence útoků založených na padělání žádosti posílané mezi weby (XSRF/CSRF) v ASP.NET Core.

Odstranění potíží

Ochrana dat a ukládání do mezipaměti

Pokud pro prostředí webové farmy není nakonfigurovaná ochrana dat nebo ukládání do mezipaměti, při zpracování požadavků dojde k přerušovaným chybám. K tomu dochází, protože uzly nesdílejí stejné prostředky a požadavky uživatelů nejsou vždy směrovány zpět do stejného uzlu.

Zvažte uživatele, který se přihlásí k aplikaci pomocí cookie ověřování. Uživatel se přihlásí k aplikaci na jednom uzlu webové farmy. Pokud se jejich další žádost dorazí do stejného uzlu, kde se přihlásili, aplikace dokáže dešifrovat ověřování cookie a umožní přístup k prostředku aplikace. Pokud jejich další požadavek přijde na jiný uzel, aplikace nemůže dešifrovat ověřování cookie z uzlu, kde se uživatel přihlásil, a autorizace požadovaného prostředku selže.

Pokud k některému z následujících příznaků dochází přerušovaně, problém je obvykle trasován na nesprávnou ochranu dat nebo ukládání do mezipaměti pro prostředí webové farmy:

  • Konce ověřování: Ověřování cookie je chybně nakonfigurované nebo se nedá dešifrovat. Přihlášení OAuth (Facebook, Microsoft, Twitter) nebo OpenId Připojení selžou s chybou "Korelace selhala".
  • Konce autorizace: Identity dojde ke ztrátě.
  • Stav relace ztratí data.
  • Položky uložené v mezipaměti zmizí.
  • TempData selže.
  • PoSTs fail: Anti-forgery check fail.

Další informace o konfiguraci ochrany dat pro nasazení webové farmy najdete v tématu Konfigurace ASP.NET Základní ochrana dat. Další informace o konfiguraci ukládání do mezipaměti pro nasazení webové farmy naleznete v tématu Distribuované ukládání do mezipaměti v ASP.NET Core.

Získání dat z aplikací

Pokud aplikace webové farmy dokážou reagovat na požadavky, získat požadavky, připojení a další data z aplikací pomocí vloženého middlewaru terminálu. Další informace a vzorový kód najdete v tématu Řešení potíží a ladění ASP.NET základních projektů.

Další prostředky