ASP.NET의 부하 분산 정보
ASP NET 사이트의 로드 밸런싱
HTTP 프로토콜을 기반으로 우리는 두 가지 문제를 해결해야 한다는 것을 알 수 있습니다.
첫째, 로드 밸런싱을 달성하려면 우리가 필요로 하는 것이 있습니다. 로드 밸런서
DNS 폴링을 통해 수행할 수 있으며 로드 밸런싱을 위해 동일한 호스트 이름을 쿼리할 때마다 다른 IP 주소를 얻도록 DNS 서버에서 구성할 수 있습니다. 간단하고 투자 비용이 적습니다. 단점은 브라우저가 각 서버에 액세스할 수 있는 기회가 동일하며 서버의 로드 수준에 따라 로드가 더 적은 서버로 요청을 자동으로 라우팅할 수 없다는 것입니다.
전용 로드 밸런싱 장치를 사용하여 백그라운드에서 여러 서버의 로드를 모니터링합니다. 또한 전체 서버의 CPU 로드 대신 백그라운드 서버의 IIS 로드를 동시에 모니터링해야 합니다. 특정 서버의 발생을 방지하기 위해 로드 밸런서와 백그라운드 서비스 응용 프로그램 사이에 설정해야 합니다. 서버 IIS 프로세스 또는 그 안에서 실행 중인 응용 프로그램이 다운되었습니다. 서버에 대한 많은 요청이 반대 효과를 가져옵니다.
둘째, 세션 상태의 유지 및 마이그레이션
HTTP 프로토콜에서는 일반적으로 클라이언트의 일부 상태 데이터를 세션에 저장합니다. 로드 밸런싱 후에는 두 HTTP 요청이 도달한 서버가 동일하지 않을 수 있습니다. 이로 인해 이전 요청 처리에서 설정된 세션이 변경될 가능성이 있습니다. 두 번째 요청에서는 사용할 수 없어 응용 프로그램 오류가 발생합니다. 따라서 세션 마이그레이션을 따라야 하는 방법은 세션과 서버의 통합 저장소입니다. ASP NET에서는 서버가 세션을 저장하는 방법에는 다섯 가지가 있습니다. Off는 언급되지 않았습니다. InProc는 서버 프로세스의 메모리에 저장되므로 다른 두 가지 방법은 요구 사항을 충족할 수 없습니다.
StateServer 공유 목적을 달성하기 위해 각 서버가 동일한 StateServer에 액세스할 수 있도록 특수 상태 서버에 세션을 저장합니다.
SQLServer는 동일한 목적을 달성하기 위해 데이터베이스에 세션을 저장합니다.
p >
물론 Custom 스토리지 솔루션을 직접 작성하여 구현할 수도 있습니다.
Custom과 비교하면 직접 구현하는 것이 더 번거롭습니다. 일반적으로 SQL Server의 클러스터를 사용할 수 없습니다. StateServer 물론 고가용성은 수단을 통해서도 달성할 수 있지만 클러스터링을 구현할 수 없기 때문에 성능도 제한되는 것 같습니다
추가적으로 원하는 경우 로드 밸런싱을 수행하려면 StateServer 및 SQLServer에서 세션을 구성할 때 nfig에서 machineKey 노드를 다시 작성해야 합니다.
유효성 검사 키= AAAAAAAAAA decryptionKey= p> 유효성 검사= SHA 암호 해독= 자동 /> 그렇지 않으면 각 응용 프로그램 서버에서 얻은 세션은 여전히 다릅니다 lixixinzhi/Article /program/net/201311/12775