web-dev-qa-db-ja.com

他のインスタンスやセッションストアに負荷を転送するAmazonEC2 ELB

  1. スケールアップ(ELBにインスタンスを追加)した場合、既存のリクエストの一部を新しいインスタンスにリダイレクトできますか?そのため、新しいサーバーに強制するユーザーは、再度ログインするように求められます

  2. スケールダウン(ELBからインスタンスを削除)すると、そのサーバーのすべてのユーザーがELBによって他の残りのサーバーに自動的にリダイレクトされます。これらのユーザーは、再度ログインするように求められるべきではありません。

これは可能ですか(リクエストのリダイレクトを含む)?どうやって?

どんなアイデアでも大歓迎ですが、これは中央のセッションストアを使用して解決できると思います。私はそれを実装する方法がわかりません。

また、中央セッションストアを使用する際のオプションは何ですか? simpledb? redis? memcached?

更新しました:

私たちのアプリケーションは、Apacheでホストされている単純なWebアプリケーションです。 Amazon ELBに2つのインスタンスが追加されており、PHPを使用しています。

ELB php固有の提案はありますか?スケールダウン/アップが発生したときに、ユーザーに表示される症状は表示されませんか?

2
Aivan Monceller

はい、一元化されたセッションストアを使用すると、これらすべての問題やその他の問題を解決できます。アプリケーションを知らなければ、それを実装するための決定的なガイドを示すことは不可能です(とにかく、スタックオーバーフローの質問になります)が、通常は、オプションを設定して(Railsなどのフレームワークで)数行を書くのと同じくらい簡単ですWebフレームワークによって呼び出され、ストアに接続して詳細を保存または取得するグルーコードの例。

使用するものに関しては、Redisをお勧めします。 memcachedはうまくいくように見えますが、memcachedインスタンスを再起動する必要があるときはいつでも、ユーザーに再ログインを要求するという不快な欠点があります。冗長システムで従うべき経験則は、インフラストラクチャへの変更がanyユーザーに見える症状を示さないことです。一方、Redisはディスクに保持され、更新と取得の両方で非常に高速であり、私が使用した大規模な状況で非常に堅牢であることが示されています。

2
womble