![문제 State Server를 사용하여 .Net 웹앱 부하 분산](https://rvso.com/image/623644/%EB%AC%B8%EC%A0%9C%20State%20Server%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20.Net%20%EC%9B%B9%EC%95%B1%20%EB%B6%80%ED%95%98%20%EB%B6%84%EC%82%B0.png)
Netscaler 로드 밸런서 뒤에는 여러 웹 서버가 있습니다. (Win2008) 서버는 각각 세션 상태 관리를 위해 .Net StateServer 서비스를 실행하는 중앙 서버를 사용하도록 구성된 ASP.Net 애플리케이션(iis 6.1 사용)을 호스팅합니다.
"라운드 로빈" 또는 "최소 사용" 라우팅을 사용하도록 로드 밸런서를 구성하면 웹 애플리케이션은 세션 상태에 있을 것으로 예상했던 항목이 누락되었음을 나타내는 오류와 함께 정기적으로 충돌합니다. 그러나 항상 그렇게 하는 것은 아닙니다. 특정 단계에서만 그리고 시도의 약 75%에서만 수행됩니다.
로드 밸런서를 서버 지속성으로 구성하면(사용자가 한 서버에 "고정") 문제가 발생하지 않습니다. (그러나 이것은 우리가 원하는 실행 모드가 아닙니다)
이미 확인/완료한 사항:
- 재시작모든것들
- 컴퓨터 키는 모든 서버에서 동일합니다.
- 웹 서버와 상태 서버 사이에 연결 문제가 없습니다.
- IIS는 사이트 이름, 경로 및 ID는 모든 웹 서버에서 동일합니다.
- 응용 프로그램 로그에 오류가 기록되지 않습니다.
확인해야 할 다른 사항/가능한 원인에 대한 제안이 있는 사람이 있습니까?
주의. 다른 환경에도 동일한 유형의 로드 밸런서, 동일한 웹 앱, 동일한 구성, 동일한 서버 설정 등 정확히 동일한 설정이 있으며 정상적으로 작동합니다. 유일한 차이점은 VMWare Tools의 다른 버전이지만 이것이 원인이라고 볼 수 없습니까?
답변1
몇 달 후, 우리는 원인을 발견했습니다. 서버 중 일부(전부는 아님)가 최신 버전의 .Net Framework로 업그레이드되었습니다.
Microsoft는 동일한 StateServer를 사용하는 다른 서버를 지원하지 않습니다.다양한 버전의 프레임워크 사용, 따라서 고객이 4.5.1이 있는 서버와 이전 버전이 있는 서버 사이를 오가면 본질적으로 세션이 손실되고 애플리케이션이 충돌합니다.
이 문제가 발생하면 제안합니다.어떤 Framework가 설치되어 있는지 확인각 서버에서 - 동일한 StateServer에서 작동하려면 모두 동일해야 합니다.