의 ASP.NET Web Forms 애플리케이션에 대한 HA 및 자동 조정 AWS - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의 ASP.NET Web Forms 애플리케이션에 대한 HA 및 자동 조정 AWS

레거시 ASP.NET Web Forms 애플리케이션을 로 마이그레이션할 때 고가용성을 AWS달성하는 것이 중요한 고려 사항입니다. Amazon EC2 Auto Scaling 그룹 및 로드 밸런서를 사용하여 여러 EC2 인스턴스에 트래픽을 분산할 수 있습니다. 그러나 많은 ASP.NET Web Forms 애플리케이션은 세션 상태에 크게 의존하므로 본질적으로 상태 저장이 됩니다. 기본적으로 서버는 생성된 세션 IDs를 메모리에 저장하고 쿠키를 통해 ID를 클라이언트로 다시 전송합니다. 이 접근 방식은 여러 EC2 인스턴스에서 동일한 애플리케이션을 실행하려고 할 때 문제가 됩니다. 각 인스턴스가 자체 세션 상태를 유지하여 사용자 경험이 일관되지 않고 데이터가 손실될 수 있기 때문입니다.

이 문제를 해결하고 마이그레이션된 ASP.NET Web Forms 애플리케이션이 세션 상태를 유지하면서 여러 인스턴스에서 원활하게 확장될 수 있도록 하려면 고정 세션을 활성화하거나 공유 백업 스토리지를 사용하는 두 가지 주요 옵션이 있습니다.

&ALB에 대한 고정 세션 활성화

에서 세션 선호도라고도 하는 고정 세션을 사용하도록 Application Load Balancer를 구성할 AWS수 있습니다. 고정 세션을 활성화하면 Application Load Balancer는 동일한 클라이언트에서 동일한 EC2 인스턴스로 후속 요청을 라우팅합니다. 이렇게 하면 애플리케이션과의 상호 작용 전반에 걸쳐 사용자의 세션 상태가 보존됩니다.

이 접근 방식은 간단한 솔루션을 제공하지만 확장성 및 내결함성 측면에서는 제한이 있습니다. EC2 인스턴스가 실패하거나 사용할 수 없게 되면 고정 세션이 중단되고 사용자의 세션 상태가 손실됩니다. 또한 고정 세션은 인스턴스 간에 고르지 않은 로드 분산을 초래하여 리소스 경합 또는 사용률 저하를 일으킬 수 있으므로 애플리케이션의 효과적인 확장 기능이 제한됩니다. 이러한 이유로 세션 스토리지에 공유 백업 저장소를 대신 사용하는 것이 좋습니다.

세션 스토리지에 공유 백업 저장소 사용

상태 저장 ASP.NET Web Forms 애플리케이션을 로 마이그레이션할 때 권장되는 접근 방식은 세션 스토리지에 공유 백업 저장소를 사용하는 AWS 것입니다. 애플리케이션은 개별 EC2 인스턴스에서 인 메모리 세션 상태에 의존하는 대신 Amazon DynamoDB, SQL Server용 Amazon Relational Database Service(RDS) 또는 Amazon ElastiCache(Redis OSS)와 같은 가용성과 확장성이 뛰어난 스토리지 솔루션에 세션 데이터를 저장할 수 있습니다.

공유 백업 저장소를 사용하는 경우 개별 EC2 인스턴스에서 세션 상태를 분리하여 애플리케이션이 세션 데이터를 손실하지 않고 여러 인스턴스에서 원활하게 확장할 수 있도록 합니다. 또한이 접근 방식은 내결함성을 개선합니다. 세션 데이터는 애플리케이션 인스턴스와 독립적으로 유지되므로 인스턴스가 실패하거나 조정 이벤트 중에도 사용자 세션이 손실되지 않기 때문입니다.

Redis를 세션 스토리지의 공유 백업 저장소로 사용하도록 ASP.NET Web Forms 애플리케이션을 구성하려면

  1. 클러스터에 대한 새 보안 그룹을 생성합니다. 보안 그룹은 TCP 포트 6379를 사용하는 Redis에 대한 인바운드 요청을 허용해야 합니다.

  2. 새 Redis 클러스터를 시작합니다. 첫 번째 단계에서 생성한 보안 그룹을 지정해야 합니다.

  3. 방금 생성한 인스턴스의 엔드포인트 주소를 가져옵니다. 클러스터가 시작될 때까지 몇 분 정도 기다려야 주소를 사용할 수 있습니다.

  4. web.config 파일을 수정하고 다음 구성을 추가합니다.

    <sessionState mode="Custom" customProvider="RedisStateStore"> <providers> <add name="RedisStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="[YourRedisClusterEndpoint]" accessKey="" ssl="true" /> </providers> </sessionState>

    [YourRedisClusterEndpoint]를 ElastiCache(Redis OSS) 클러스터의 적절한 값으로 바꿉니다.

세션 스토리지용 공유 백업 저장소를 구현하면 마이그레이션된 ASP.NET Web Forms 애플리케이션에의 고가용성, 확장성 및 내결함성을 제공할 수 있습니다 AWS. 이 접근 방식은 클라우드 네이티브 모범 사례에 부합하며 애플리케이션이 여러 EC2 인스턴스 또는 가용 영역으로 확장되더라도 원활한 사용자 경험을 보장합니다. 또한 고정 세션보다 더 강력하고 안정적인 솔루션을 제공하며, 애플리케이션이 AWS 인프라에서 제공하는 확장성과 복원력을 최대한 활용할 수 있습니다.