1

Tomcat/MySQL異なるアベイラビリティ ゾーンで実行されている 2 つの EC2 インスタンス (inst_1 と inst_2) を使用して、アプリを Amazon クラウドに移動することを計画しています。inst_1 にはマスター RDS db が含まれ、inst_2 にはスレーブ RDS db が含まれます。

エラスティック ロード バランシングを使用して 2 つのインスタンス間のトラフィックのバランスを取る場合、insert/update/deleteデータベース トランザクションを含む inst_2 に向けられたトラフィックは、最初に inst_1 のマスター RDS データベースを更新し、次に inst_2 のスレーブの同期更新を行います。それによって、2 つの RDS インスタンスが常に同期されるようにしますか?

Amazon の公開情報 (ホワイトペーパー) はそのように示唆していますが、明示的には述べていません。そうでない場合、2 つの RDS インスタンスの同期を維持するにはどうすればよいでしょうか?

追記: Amazon の Elastic Beanstalk を採用する予定です。ありがとう!

4

2 に答える 2

2

いくつかのことを考慮する必要があります

  • AWS RDS インスタンスは、MySQL サーバーを実行するシンプルなマネージド EC2 インスタンスです。
  • スレーブを追加する場合 (Amazon はそれらを読み取りレプリカと呼んでいると思います)、これは読み取り専用スレーブです。
  • Amazon は、マスター サーバーへの書き込みクエリの分散を自動的に管理しません。
  • レプリケーションは、読み取りスレーブが常に自動的に最新であることを保証します (マスターの書き込み負荷で増加する最小限の遅延で)
  • この動作は MySQL 固有です

これは、クエリの操作をマスターに排他的に委任する必要があることを意味します。

これは、アプリケーションまたは追加のマシンで実行されている MySQL プロキシによって実行できます。

プロキシは、アプリケーション サーバーが通信する唯一のインターフェイスです。RDS インスタンス間のバランスと、マスター インスタンスへの操作クエリの方向を管理できます。

于 2012-11-23T08:56:46.997 に答える
1

RDS が multi-az モードで使用されている場合、セカンダリ インスタンスにはアクセスできません。あなたに見えるインスタンスは 1 つだけなので、質問が当てはまらない場合はほとんどです。フェールオーバーの場合、指定された DNS アドレスは別の IP への解決を開始します。Amazon は、2 つのインスタンスがどのように同期されているかを明らかにしていません。

マルチ az インスタンスを使用する代わりに、単一 az インスタンス + レプリカを使用する場合、クエリを適切に送信するのはユーザー次第です。レプリカ上のデータを変更しようとすると失敗します。これは単なる標準の MySQL レプリケーションであるため、レプリカはマスターよりも遅れる可能性があります (特に、現在のバージョンの MySQL では、レプリカは単一のスレッドしか実行しません)。

于 2012-11-23T20:46:24.137 に答える