私は、マルチリージョンスキームでWebアプリケーション(PHP、MySQL、memcache)をスケーリングしようとしています。現在、ELBとRDSインスタンスの背後にある2つのEC2インスタンスのセットアップを使用しています。これらはすべてUS-EAST(バージニア)リージョンにあります。
EU(アイルランド)地域にも進出していきたいと思います。これは、少なくとも新しいEC2インスタンスが存在することを意味します(他のアプリケーションと同じで、同じアプリケーションを提供します)。
目的のAMIをコピーし、新しいインスタンスをセットアップし、同じELB構成(SSL終了に必要)をセットアップし、Route53で遅延ベースのルーティングを構成しました。そして、それは提案されたように機能します。
しかし、EUのクライアントには速度の問題があります。これは、EU EC2インスタンスが米国ベースのRDSインスタンスに接続するためです。私の知る限り、AmazonはまだRDSマルチリージョンレプリケーションを有効にしていません。
単一のRDSインスタンスを使用しながら、セットアップ全体を適切に高速化する方法について何か提案はありますか?
また、物事をスケールアップする方法に関する一般的なアイデアはありますか?理想的には、さまざまな理由からRDSテクノロジを引き続き使用したいと考えています。それでも、私は提案を受け入れます(次のアイデアは、私たち自身のMySQLサーバーをホストすることだと思います)。
米国とEUの両方で同じデータが必要な理由を慎重に検討する必要があります。結局、これらは異なるユーザーです。
マルチリージョン環境での実行ははるかに複雑であり、通常、USとEUの間の固有のレイテンシのためにパフォーマンスを取り戻します。
RDSから移動して、非同期または同期のいずれかのリージョン間でデータを複製しようとしても、ユーザーにパフォーマンスの低下をもたらすレイテンシの問題が発生します。
最も簡単な方法は、EUに専用のRDSサーバーをセットアップし、これらのインスタンス間で何も共有しないことです。
RDSはレイテンシが低いため、単一リージョンのデプロイに最適ですが、別のリージョンに拡大し始めると別の話になります。 RDSインスタンスを保持したい場合は、EUリージョンに独自のMySQLサーバーをセットアップし、レプリケーションを実行できます。この方法では、速度ははるかに許容範囲になります。
最近、AWSは クロスリージョンRDSリードレプリカ を発表することで、以前私の質問で尋ねていた方向に向かって動きました。ただし、これは真のマルチリージョン設定に向けた小さなステップにすぎません。
私はこれがあなたが望むものだと信じています。別のリージョンでmysqlを実行しているEC2へのRDSレプリケーション。
レイテンシを改善するための1つの可能なソリューションは、Amazon ElastiCache(基本的には内部でMemcachedです)を使用することです。
ElastiCache Node=各リージョン(US-ESTおよびEU)で作成し、アプリケーションロジック(EC2)で可能な限りキャッシュノードを使用する必要があります。このルートを使用する場合、アプリケーションを再構築するには1)何をいつキャッシュするかを把握し、2)ローカルのElastiCacheノードからできるだけ多く取得します。