3

CPUを集中的に使用するモバイルアプリのバックエンドを作成しています。このアプリはほとんどの場合頻繁に使用されることはないと予想されますが、需要が急増することがあります。私がすべきことは、需要の少ないトラフィックの定常状態を処理するために24時間年中無休のサーバーをいくつか予約し、スパイクを処理するために必要に応じてEC2インスタンスを追加および削除することだと考えていました。モバイルアプリは、最初に、利用可能なすべての処理サーバー間で単純なラウンドロビンユーザー分散を行う単純な負荷分散サーバーにアクセスします。ロードバランサーは、新しいEC2インスタンスを起動し、必要に応じてオフに戻す処理を行います。

いくつかの質問:

私はこれまでこのようなものを書いたことがありませんが、これは良い戦略のように聞こえますか?

新しいEC2インスタンスのアップとダウンを処理するための最良の方法は何ですか?事前にXインスタンスを作成し、必要に応じてセットアップ(ソフトウェアのインストールなど)してから、各インスタンスを停止するだけでよいと考えていました。ロードバランサーは、必要に応じて(たとえば、botoを介して)インスタンスを開始および停止します。これは、新しいインスタンスを作成し、スクリプトなどを使用してすべてをインストールするよりもはるかに高速で簡単なはずだと思います。良いアイデア?

ここで私が懸念していることの1つは、EC2インスタンスをオフにしてから再びオンにするコストです。AWS Usage Reportを確認しましたが、解釈が困難でした。停止したインスタンスの開始は、コストがかかる可能性のある操作であることがわかりました。しかし、新しいインスタンスを最初からプロビジョニングするのではなく、停止したインスタンスを開始したばかりなので、それほど悪くはないようです。それは正しいですか?

4

2 に答える 2

5

これは非常に合理的な戦略です。以前はうまく使っていました。

AutoScalingと組み合わせたElasticLoadBalancing(ELB)確認することをお勧めします。概念的には、2つでこの正確な問題を解決する必要があります。

2010年頃にこれを行ったとき、ELBは特定のタイプのHTTPリクエストで問題が発生し、使用できませんでした。これらの問題が解決されたことを理解しています。

ELBはオプションではなかったため、必要に応じてEBSスナップショットからインスタンスを手動で起動し、NGinXロードバランサーに手動で追加しました。それは確かにAWSAPIを使用して自動化できたはずですが、ピークは非常に予測可能であったため(月末)、新しいインスタンスを起動するように誰かに依頼しただけで、タスクの自動化に取り掛かることができませんでした。

インスタンスが停止したときに支払う費用は、インスタンスとそのデータをバックアップするEBSストレージの費用だけだと思います。インスタンスに大量のデータが関連付けられていない限り、EBSストレージの料金は最小限に抑える必要があります。AWSを最後に使用してから状況が変わったのかもしれませんが、これが大幅に変わったとしても驚かれることでしょう。

于 2012-08-16T18:57:48.597 に答える
1

まず、コストに関しては、インスタンスを最初から開始するか停止状態から開始するかは、コストに影響しません。時間、期間にわたって使用する計算ユニットの量に対して請求されます。

第二に、あなたがやろうとしていることは自動スケーリングと呼ばれています。使用するAMIを指定する起動設定をセットアップします(使用するユーザーデータ設定、使用するELBとアベイラビリティーゾーン、インスタンスの最小数と最大数など)。その起動設定を使用してスケーリンググループを設定し、次にスケーリングポリシーを設定して、グループにアタッチするスケーリングアクションを決定します。次に、これらの各ポリシーにクラウドウォッチアラームをアタッチして、スケーリングアクションをトリガーします。

ELBなどに接続する予備のサーバーはありません。すべては、必要なサーバーのテンプレートとして使用される単一のAMIの作成に基づいています。

以下のリンクで自動スケーリングについて読む必要があります。

http://aws.amazon.com/autoscaling/

于 2012-08-16T19:03:24.697 に答える