web-dev-qa-db-ja.com

AutoScalingとDistributedMemcacheを実行している複数のAWSEC2

AmazonEC2上の一連のLinuxWebサーバー全体で分散Memcacheを使用することを計画しています。これらのEC2は現在自動スケーリングを実行しているため、負荷に応じて増減します。

私はこの投稿を使用して初期設定をガイドしました。

memcache/phpのベストプラクティス-マルチmemcacheノード

そして、それが返信で参照する別のリンク。

http://techgurulive.com/2009/07/22/a-brief-to-memcached-hash-types/

サーバーが増減したときに、Memcacheクライアントコード内のノードのリストでWebサーバーのローカルAWSIPがどのように更新されるかについては少しわかりません。

私は現在、クライアントでPHP PECL-Memcacheを使用しています。

AWS環境でこれを管理するための最良の実装を知っている人はいますか?

提案を事前に感謝します。

デイブ

3
daviemanchester

かなりの負荷を処理するためにかなり大きなシステムを設計しているようです。その場合、パフォーマンス特性がまったく異なるため、MemcacheノードとWebノードに別々のインスタンスを作成することをお勧めします。 2つを分離することにより、それぞれにより適した インスタンスタイプ を使用できます。

Memcacheは通常の状況ではCPUをほとんど使用しないため、高メモリインスタンスを使用することは理にかなっています。同様に、Webサーバーは一般的にプロセッサを集中的に使用します。それらには高CPUインスタンスを使用します。

Memcached自体は非常に単純であることに注意してください。それは座って、「このキーを取得してください」または「このキーをこの値に設定してください」というコマンドを待ちます(他にもいくつかありますが、それが基本です)。ハッシュなどは、クライアントのmemcachedライブラリで純粋に実行されます。

これを念頭に置いて、memcachedの自動スケーリングは非常に野心的ですが、確かに実行できます。サーバーを絶えず起動して廃止する場合は、キャッシュされたデータの一部が定期的に失われることを受け入れる必要があります。おそらくデータベースにさらに負荷がかかるか、memcachedインスタンスに保存されているすべてのデータが最初に別のインスタンスにコピーされるようにする必要があります。

3
spectre256

これには少し遅れていますが、memcacheノードを自動スケーリングする必要はありません。ハッシュがドリフトするため、スケールアップまたはスケールダウンイベントが発生するたびにキャッシュの大部分が失われます。

0
webgr