翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
での 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
共有バッキングストアを使用する場合、個々の EC2 インスタンスからセッション状態を切り離して、アプリケーションがセッションデータを失うことなく複数のインスタンスにシームレスにスケールできるようにします。このアプローチは、セッションデータがアプリケーションインスタンスとは独立して保持されるため、耐障害性も向上します。これにより、インスタンスが失敗しても、またはスケーリングイベント中にユーザーセッションが失われることがなくなります。
Redis をセッションストレージの共有バッキングストアとして使用するように ASP.NET Web Forms アプリケーションを設定するには:
クラスターの新しいセキュリティグループを作成します。セキュリティグループは、TCP ポート 6379 を使用する Redis へのインバウンドリクエストを許可する必要があります。
新しい Redis クラスターを起動します。最初のステップで作成したセキュリティグループを必ず指定してください。
作成したインスタンスのエンドポイントアドレスを取得します。アドレスが使用可能になるまで、クラスターが起動するまで数分待つ必要があります。
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 インフラストラクチャが提供するスケーラビリティと回復力を最大限に活用できるようにします。