Amazon EC2 Windowsインスタンスの起動を高速化する


16

私はEC2でホストされているWebサービスに取り組んでおり、負荷に応じてさまざまな数のインスタンスを実行する必要があります。基本的なサービスは稼働していますが、苦労していることの1つは、Windowsインスタンスのプロビジョニングと起動にかかる時間です(Windowsでのみ実行される3つ目のprtyツールを使用しています)。これには10分から45分という驚異的な時間がかかります。

EC2インスタンスの起動を高速化する方法に関するヒントはありますか?たとえば、WindowsサーバーのAMIはLinux AMIに比べて大きいため、AMIを含むS3バケットがインスタンスが起動される同じゾーンにあることを確認するのが1つの理由になるのではないかと考えています。新しいインスタンスのプロビジョニングを高速化します。

回答:


8

昨夜、バニラのWindows 2003サーバーの3つのインスタンスをインストールしました。最初の2つは約45分、3つ目は約1時間後、準備が整うまでに2時間かかりました!

それらには、S3を使用することなく、まったく何もありませんでした。Amazonが時間の経過とともに展開速度を改善するのを待つ以外に、その基本的なステップをスピードアップする方法があるとは思わない。ですから、一定の遅延が予想され、Kurtのアドバイスは適切であると結論付けます。それは、1または2を既に準備しておくことです。

もう1つできることは、AMIタイプの新しいインスタンスを数回作成し、時間を計ることです。次に、S3ストレージで数回試してみて、どれだけ時間がかかるかを確認します。どのくらいの時間差が生じるかはわかりませんが、アベイラビリティーゾーンはイメージとS3の間で一致するはずです。

プロビジョニングの最大時間を決定したら、その分だけ負荷/使用状況に先んじてください。


提案をありがとう-2時間は非常に極端です。この質問をしてから気づいたことの1つは、EC2が起動直後にWindowsインスタンスを再起動することがあることです。これがなぜなのかはわかりませんが(一部のインスタンスは再起動するのに、他のインスタンスは再起動しない理由についてパターンを把握していません)、起動時間にさらに5分または10分を追加できます。
gareth_bowles 2009

2
@gareth-これは、マシンがネットワーク上の別のマシンと同じ名前を持っているためです(つまり、イメージです)。EC2ConfigServiceはこれを検出し、新しい名前を割り当てて再起動します。インストール済みのec2config構成ユーティリティを使用して、これを無効にできます。
キーレンジョンストン

20

Amazon Windowsインスタンスは、起動時に再起動します。これは、「EC2 Config」Windowsサービスのデフォルト設定では、ホストの名前をインスタンスの内部DNS名に変更するためです。ホストの名前を変更するには、Windowsで再起動する必要があります。インスタンスの内部DNS名を使用する必要がない場合は、SetComputerName機能を無効にすることでメリットが得られる場合があります。Windowsインスタンスには、起動ドライブを初期化する必要がないという利点もあります。この場合、既に構成を再度バンドルしている可能性があるため、インスタンスの起動時間をさらに節約できます。これらはすべてEC2 Windows Configuration Serviceを介して可能です。

Windows構成サービス: http : //docs.amazonwebservices.com/AWSEC2/latest/UserGuide/appendix-windows-config.html

私のWindowsスモールインスタンスは、通常、起動に15〜18分かかります(大きいものは高速です)。要件に応じて、AMI内のすべてのソフトウェアをバンドルし、その期間内にすべてを起動して実行できる場合があります。すべてをAMIにバンドルしないことの予約を理解していますが、すべてがバンドルされた実稼働AMIを持つことは、起動時間の改善に値するかもしれません。ビルド環境で必要な場合は、ビルドスクリプトを分離してください。

さらに、AmazonはインスタンスストアルートボリュームではなくEBSルートボリュームをリリースしました。EBSボリュームで実行されているWindowsの小さなイメージは、以前は約20分であったのに対し、約5分で起動します。また、終了する必要はありません-それらを停止/開始できます-セットアップに応じて、これはいくつかの起動スクリプトでさらに数分を削る可能性があります。

基本的にWindows EC2 Configサービス、AMI、および潜在的にEBSブートボリュームを使用してカスタマイズすると、起動時間が約5分に短縮されます。特に開発目的の場合、アプリに応じてec2インスタンスの起動時に実行されるsysprepを回避できます。起動時のホスト名の変更を回避するsysprepされていないm1.largeイメージは、約2分で起動できます。これはまったく悪くありません。

現時点では、私が理解している限り、これはAmazon EC2上のWindowsでできる最善の方法ですが、それほど悪くはありません。平均的な使用パターンに基づいて、10分近く先を予測できる場合は、追加のインスタンスを起動して、追加の負荷を処理できるはずです。


内部ホストの名前変更は素晴らしいヒントです-ありがとう!EBSルートボリュームも試してみたいです。特に、バックアップが非常に簡単になるためです。私は10分間の平均起動時間を予測する必要があると思います。それ自体はそれほど問題ではありませんが、起動時間のばらつきが大きいことは依然として大きな問題です。
gareth_bowles

これはAWSドキュメントで参照する必要があります。
ピーターマンス

4

最小限のシステムを使用して、EBSで可能な限り維持してください。または、Apacheスタイルのアプローチを採用して、1つまたは2つの予備を実行しますか?


4

私たちはこの正確な問題に直面しましたが、非常に深刻な方法で-私たちの新しいスタートアップはAmazon EC2を仮想ラボ環境(マルチユーザー、ポリシー、共有など)に拡張するため、開始時間を短縮する必要がありましたWindowsマシン。私たちの最大の決定は、アプリケーションでEBSベースのボリュームのみをサポートすることでした。5-10分で起動できるのはEBSベースのボリュームだけだからです。私たちのテストでは、インスタンスストアの起動時間は大きく異なり、時には時間がかかりすぎて役に立たないことがわかりました。

Simon @ LabSlice EC2の仮想ラボ管理

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.