ASP.NET은 트래픽이 많은 웹 응용 프로그램을 개발하는 것으로 알려져 있습니다. 이러한 응용 프로그램 중 다수는 여러 지리적 위치에 배포됩니다. 이 다중 사이트 배포는 재해 복구 목적으로 수행되거나 ASP.NET 응용 프로그램을 최종 사용자에게 더 가까이 배치하여 지역 트래픽을 처리하기 위해 수행됩니다.
재해 복구의 경우 일반적으로 하나의 활성 사이트와 하나의 수동 사이트가 있습니다. 어떤 이유로든 활성 사이트가 다운되는 즉시 수동 사이트가 활성 상태가 됩니다. 다른 경우에는 둘 이상의 사이트가 모두 활성 상태이지만 해당 지역(예: 뉴욕, 런던 및 도쿄)에 더 가까운 트래픽을 처리할 수 있습니다.
NCache 세부 정보 NCache 기술 문서 ASP.NET 세션 상태 공급자
ASP.NET은 웹 서버의 세션 상태 개체에 사용자별 정보를 보관합니다. 사용자가 처음으로 ASP.NET 응용 프로그램에 액세스하면 해당 세션 상태가 만들어지고 사용자가 응용 프로그램을 적극적으로 사용하는 한 해당 상태가 유지됩니다. 기본적으로 사용자가 20분 동안 사용하지 않으면 ASP.NET은 이 세션을 만료합니다.
ASP.NET 세션 상태 개체는 웹 서버(InProc)의 메모리, 모든 서버(StateServer), SQL Server 데이터베이스 또는 SSP 아키텍처를 사용하여 타사 저장소에 저장됩니다.
타사 옵션은 일반적으로 다음과 같은 메모리 내 분산 캐시입니다. NCache는 세션 상태를 저장하기에 좋은 장소입니다. 그 이유는 세션 복제로 인한 ASP.NET 세션 상태의 더 빠른 성능, 더 큰 확장성 및 더 나은 안정성 때문입니다. 다음은 web.config 파일에서 사용자 지정 세션 저장소 옵션을 지정하는 방법의 예입니다. NCache ASP.NET 세션 상태 저장소로:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<sessionState cookieless ="false" regenerateExpiredSessionId="true" mode="Custom" customProvider="NCacheSessionProvider" timeout="60" sessionIDManagerType="Alachisoft.NCache.Web.SessionStateManagement.CustomSessionIdManager, Alachisoft.NCache.SessionStateManagement"> <providers> <add name ="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" sessionAppId="demoApp" cacheName="demoClusteredCache" writeExceptionsToEventLog="false" asyncSession="false" enableLogs="false"/> </providers> </sessionState> |
능동-수동 다중 사이트 배포
그러나 애플리케이션이 다중 사이트 배포에서 실행 중인 경우 해결해야 할 질문은 다음과 같습니다. ASP.NET 세션 상태 저장. 활성-수동 다중 사이트 구성에서 ASP.NET 응용 프로그램을 배포한 경우 모든 ASP.NET 세션 상태가 생성되고 활성 사이트에 저장됩니다. 수동 사이트에는 세션 데이터가 없습니다. 따라서 활성 사이트가 다운되고 모든 트래픽이 수동 사이트로 리디렉션되면 모든 사용자가 갑자기 세션을 잃고 다시 시작해야 합니다. 다음을 사용하여 이를 방지할 수 있습니다. NCache 브리지 토폴로지.
일단 생성하면 다리 활성 사이트와 수동 사이트 사이에서 활성 사이트는 ASP.NET 세션 상태 개체의 모든 추가, 업데이트 및 제거를 브리지에 제출하기 시작합니다. Bridge는 WAN을 통해 수동 사이트에 비동기식으로 복제합니다. Bridge 아키텍처는 활성 사이트 작업을 차단하지 않으므로 성능 저하가 나타나지 않습니다. 명심해야 할 유일한 문제는 Bridge가 비동기식으로 복제하기 때문에 활성 사이트가 갑자기 종료되는 경우 수동 사이트로 연결되지 않는 "복제 대기열"에 일부 세션이 있을 수 있다는 것입니다. 그러나 이것은 일반적으로 중요하지 않은 숫자입니다. 에 대해 자세히 알아보기 NCache 브리지 토폴로지 그리고 그것이 당신에게 유익한 모든 상황.
NCache 세부 정보 NCache 기술 문서 ASP.NET 세션 상태 공급자 속성
활성-활성 다중 사이트 배포
ASP.NET 응용 프로그램이 두 개 이상의 활성 사이트에 동시에 배포되는 경우 복제를 피해야 합니다. ASP.NET 세션 상태 대역폭 비용을 절약하기 위해 모든 사이트에. 그러나 오버플로 상황을 처리하기 위해 일부 트래픽을 다른 사이트로 라우팅하는 기능이 필요할 수 있습니다.
또는 유지 관리를 위해 사용자를 방해하지 않고 사이트 중 하나를 중단해야 할 수도 있습니다. 이 경우 다중 사이트 ASP.NET 세션 상태 저장소 기능을 사용할 수 있습니다. NCache. 이 기능을 사용하면 이러한 경우를 처리하고 web.config에서 이 세션의 "기본" 사이트에 대한 위치 접두사가 있는 세션 ID를 생성하도록 지정할 수 있습니다. 그러면 이 세션 요청이 다른 사이트로 라우팅되더라도 해당 사이트는 이 세션을 찾을 위치를 알고 있습니다.
사용자가 다른 사이트로의 경로를 요청하더라도 세션은 기본 위치에서 이동하지 않습니다. 그러나 다른 사이트는 "기본" 사이트에서 이 세션에 액세스할 수 있습니다. 각 사이트는 "기본" 사이트를 지정하고 다른 모든 사이트는 "보조" 사이트로 지정합니다. 이 목표를 달성하기 위해 취하는 단계는 다음과 같습니다.
- web.config에 항목을 추가합니다. 모든 서버와 사이트에서 동일한 방식으로 ASP.NET 세션 ID를 생성해야 합니다. 다음과 함께 제공되는 genmackeys 유틸리티를 사용할 수 있습니다. NCache 키를 생성하기 위한 설치.
1<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/> - session-id의 위치 선호도를 활성화하려면 아래에 언급된 구성을 추가하십시오.
123456<configSections><section name="ncache" type="Alachisoft.NCache.Web.SessionStateManagement.NCacheSection,Alachisoft.NCache.SessionStateManagement, Version=x.x.x.x, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/></configSections><ncache><sessionLocation><primaryCache id="London_Cache" sid-prefix="LDNC"/><secondaryCache id="NewYork_Cache" sid-prefix="NYKC"/><secondaryCache id="Tokyo_Cache" sid-prefix="TKYC"/></sessionLocation></ncache> - web.config에 있는 sessionState 요소의 sessionIDManagerType 속성을 사용하여 사용자 정의 세션 ID 관리자를 지정하십시오.
12345678910111213141516171819202122232425262728293031<<sessionStatecookieless ="false"regenerateExpiredSessionId="true"mode="Custom"customProvider="NCacheSessionProvider"timeout="60" sessionIDManagerType="Alachisoft.NCache.Web.SessionStateManagement.CustomSessionIdManager, Alachisoft.NCache.SessionStateManagement"><providers><add name ="NCacheSessionProvider"type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"sessionAppId="demoApp"cacheName="demoClusteredCache"writeExceptionsToEventLog="false"asyncSession="false"enableLogs="false"/></providers></sessionState>
위의 예에서 각 사이트의 섹션은 다릅니다. 즉, 각 사이트에는 자체 "기본"이 있고 다른 모든 사이트는 "보조"로 간주됩니다.
NCache 세부 정보 NCache 기술 문서 ASP.NET Core 세션
ASP.NET은 sid 접두사가 session-id의 일부가 될 수 있도록 특정 형식으로 sid(세션 ID)를 생성합니다. 이 세션 ID는 ASP.NET이 해당 사이트의 캐시에 액세스할 수 있도록 ASP.NET 세션 상태의 출처를 아는 데 도움이 됩니다. 이 구성을 사용하면 오버플로를 위해 한 사이트에서 다른 사이트로 요청을 라우팅하면 위치 접두사로 session-id의 일부이기 때문에 다른 사이트는 원래 "기본" 사이트에서 ASP.NET 세션 상태를 가져옵니다. WAN 대역폭 소비를 최소화하고 오버플로 트래픽에 대해서만 비용을 지불합니다.
다른 상황은 사이트를 중단하려는 경우입니다. 이 사이트의 캐시 서버를 종료하지 않고 사이트의 모든 트래픽을 다른 사이트로 리디렉션할 수 있습니다. 웹 서버를 종료할 수 있습니다. 그런 다음 사용자가 응용 프로그램 사용을 중지한 후 기존의 모든 ASP.NET 세션 상태 개체가 만료될 때까지 기다립니다. 트래픽이 리디렉션되면 캐시 서버를 종료하기만 하면 됩니다. 이를 통해 사용자는 다운타임을 느끼지 않을 것입니다. 방법을 살펴보세요 NCache 이 목표를 달성하는 데 도움이 됩니다. 완전히 작동하는 60일 평가판 다운로드 NCache.