での 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 をメモリに保存し、Cookie を介してクライアントに ID を返します。このアプローチは、複数の EC2 インスタンスで同じアプリケーションを実行しようとすると問題になります。これは、各インスタンスが独自のセッション状態を維持し、ユーザーエクスペリエンスに一貫性がなく、データが失われる可能性があるためです。

この課題に対処し、移行した ASP.NET Web Forms アプリケーションがセッション状態を維持しながら複数のインスタンスにシームレスにスケールできるようにするには、スティッキーセッションを有効にするか、共有バッキングストレージを使用するという 2 つの主なオプションがあります。

&ALB のスティッキーセッションを有効にする

では AWS、セッションアフィニティとも呼ばれるスティッキーセッションを使用するように Application Load Balancer を設定できます。スティッキーセッションを有効にすると、Application Load Balancer は後続のリクエストを同じクライアントから同じ EC2 インスタンスにルーティングします。これにより、アプリケーションとのやり取りを通じてユーザーのセッション状態が維持されます。

このアプローチは簡単なソリューションを提供しますが、スケーラビリティと耐障害性には制限があります。EC2 インスタンスが失敗するか使用できなくなった場合、スティッキーセッションは中断され、ユーザーのセッション状態は失われます。さらに、スティッキーセッションにより、インスタンス間で負荷分散が不均等になり、リソースの競合や使用率の低下が発生し、アプリケーションの効果的なスケーリング能力が制限される可能性があります。このような理由から、代わりにセッションストレージに共有バッキングストアを使用することをお勧めします。

セッションストレージに共有バッキングストアを使用する

ステートフルな ASP.NET Web Forms アプリケーションを に移行するための推奨アプローチ AWS は、セッションストレージに共有バッキングストアを使用することです。アプリケーションは、個々の EC2 インスタンスでインメモリセッション状態に依存する代わりに、Amazon DynamoDB、Amazon Amazon Relational Database Service RDS) for SQL ServerAmazon 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>

    を ElastiCache (Redis OSS) クラスターの適切な値[YourRedisClusterEndpoint]に置き換えます。

セッションストレージ用の共有バッキングストアを実装することで、移行した ASP.NET Web Forms アプリケーションに での高可用性、スケーラビリティ、耐障害性を提供できます AWS。このアプローチはクラウドネイティブのベストプラクティスに沿ったもので、アプリケーションが複数の EC2 インスタンスまたはアベイラビリティーゾーンにまたがってスケーリングされる場合でも、シームレスなユーザーエクスペリエンスを実現します。さらに、スティッキーセッションよりも堅牢で信頼性の高いソリューションを提供し、アプリケーションが AWS インフラストラクチャが提供するスケーラビリティと回復力を最大限に活用できるようにします。