3

Web アプリケーションを実行する予定で、約 100 から 200 ユーザーのトラフィックが予想されます。

現在、Amazon で単一のスモール インスタンスをセットアップしています。このインスタンスは、Web サーバー (Apache)、データベース サーバー (MySQL)、IMAP サーバー (Dovcot) のすべてで構成されています。データベース サーバーをこのインスタンスから移動し、別のインスタンスを作成することを考えています。私の質問は–</p>

  • ウェブサーバーとデータベース サーバー (どちらも Amazon の別のインスタンスでホストされている) の間の通信中に遅延が発生しますか?
  • はいの場合、これを克服する標準的な方法は何ですか? (または、Virtual Private Cloud をセットアップする必要がありますか?)
4

3 に答える 3

9

アーキテクチャをスケーリングしたい場合は、Web サーバーをデータベース サーバーから分離する必要があります。

低レイテンシ (複数のアベイラビリティ ゾーン間でも最大 1 ~ 2 ミリ秒) は、各層を個別にスケーリングできるため、パフォーマンスが向上します。

  • 小さい (マイクロでも) インスタンスを追加して、ロード バランサーの背後でより多くの Web リクエストを処理できます。データベースも必要なインスタンスを複製する必要はありません。
  • 使用負荷に基づいて Web サーバー層を自動的にスケーリングする Web サーバーの自動スケーリンググループを追加できます。
  • DB インスタンスをスケールアップしてメモリを増やし、キャッシュ ヒットを向上させることができます
  • Web サーバーとデータベースの間にElastic Cacheを追加できます
  • Amazon RDSをマネージド データベース サービスとして使用すると、データベースのインスタンスがまったく不要になります (RDS でのデータベースの実際の使用に対してのみ料金が発生します)。

もう 1 つのメリットは、データベースのセキュリティが向上することです。データベースが別のインスタンスにある場合は、インターネットからのアクセスを防ぐことができます。Web サーバーからの SQL 接続のみを許可し、インターネットからの http 接続を許可しないセキュリティ グループを使用できます。

この構成は、VPC を使用せずに通常の EC2 環境で実行できます。VPC を追加して、追加コストや複雑さを大幅に増やさずに、さらに制御環境を強化できます。

つまり、スケーラビリティと高可用性のために、層 (Web と DB) を分離する必要があります。また、おそらくコストも節約できます。

于 2012-12-21T23:26:59.383 に答える
5

もちろん、別々のマシン間で通信する場合は遅延が発生します。両方が同じアベイラビリティ ゾーンにある場合、通常は同じ LAN 上の 2 つのサーバーに期待される値と同じくらい非常に低くなります。

それらが同じリージョン内の異なるアベイラビリティ ゾーンにある場合、2 ~ 3 ミリ秒程度のレイテンシーが予想されます (2012 年の AWS re:Invent カンファレンスで提供された情報によると)。それはまだかなり低いです。

VPC を使用してもレイテンシーには影響しません。これにより、インスタンス間の異なる物理接続が提供されるわけではなく、仮想分離のみが提供されます。

最後に、MySql データベース専用の EC2 インスタンスではなく、Amazon の RDB (リレーショナル データベース サービス) を使用することを検討してください。費用はほぼ同じで、Amazon がハウスキーピングを行います。

于 2012-12-21T15:09:09.063 に答える
4

ウェブサーバーとデータベース サーバー (どちらも Amazon の別のインスタンスでホストされている) の間の通信中に遅延が発生しますか?

はい。ただし、役割を分離することによって得られるメリットと比較すると、取るに足らないものです。

はいの場合、これを克服する標準的な方法は何ですか? (または、Virtual Private Cloud をセットアップする必要がありますか?)

VPC は、リソースのセキュリティと管理の容易さを向上させますが、パフォーマンスには影響しません。通常、SQL データベースでは、1 ~ 2 ミリ秒の待機時間は問題になりません。書き込みはトランザクションであるため、データは 100% 完了してコミットされるまで、他の要求からアクセスできません。I/O スループットと可用性の方がはるかに重要です。そのため、データベースとアプリケーションを分離することが重要です。

マネージド MySQL、Oracle、または MS SQL Server データベース サーバーの AWS バージョンである RDS を検討することを強くお勧めします。これにより、クロス アベイラビリティ ゾーンのレプリケーションや自動バックアップなど、データベースのセットアップと管理が簡単になります。また、昨日、あなたの質問にかなり関連するブログ投稿を書きました。

于 2012-12-21T15:07:10.263 に答える