このトピックでは、Auto Scalingを有効にして、従量課金制のECS (Elastic Compute Service) インスタンスとプリエンプティブルインスタンスを組み合わせて購入し、予想されるトラフィック変動を効果的に処理し、コスト削減を最適化する方法について説明します。
ビジネスシナリオ
オンライン教育プラットフォームは、毎日17:00から22:00の間にトラフィックが増加しますが、これらのピーク時間外ではトラフィックが大幅に減少します。 O&Mエンジニアは、ピーク時にサービスの可用性を保証するために十分なコンピューティングリソースを常にプロビジョニングする必要があります。その結果、オフピーク時のアイドル容量と非効率的なコスト管理が発生します。 さらに、予期しないトラフィックの急増により、O&MエンジニアによるECSインスタンスの即時手動プロビジョニングが必要となり、操作がさらに複雑になります。
アプリケーションに次の特性がある場合は、このトピックで提供されているソリューションを使用できます。
アプリケーションはクラスターにデプロイされ、クラスターには複数のサーバーがあります。
アプリケーションは耐障害性が高く、障害が発生した場合でも実行できます。 例: プリエンプティブルインスタンスにデプロイされているテストサービス。
アプリケーションには予測可能なトラフィック変動があります。 例えば、アプリケーションは、毎日17:00から22:00の間に一貫したトラフィックピークに遭遇し、他のすべての時間中にコンピューティングリソース使用量が大幅に減少することがあります。
解決策
Auto Scalingは、従量課金インスタンスとプリエンプティブルインスタンスを組み合わせて、予想されるトラフィックの変動を効率的に管理し、コストを最小限に抑えます。
次のソリューションを使用できます。
安定したトラフィック需要に対応するために、サブスクリプションECSインスタンスを購入できます。
リソース割り当てを最適化するために、ピーク時にECSインスタンスを自動的に追加し、オフピーク時に削除するスケジュールタスクを作成できます。 スケジュールされたタスクは、次の機能を提供できます。
コストを低く抑えながら、ピーク時のトラフィック需要を最適に処理するために、スケジュールされたタスクは、ピーク時に従量課金ECSインスタンスとプリエンプティブルインスタンスの組み合わせをプロビジョニングするようにAuto Scalingに指示します。 コスト削減を最大化するために、Auto Scalingは、最低価格のvCPUリソースを活用するインスタンスタイプのインスタンスを有利にプロビジョニングします。
オフピーク時に、スケジュールされたタスクはAuto ScalingにアイドルECSインスタンスのリリースを促します。
メリット
Auto Scalingには以下の利点があり、費用を効果的に最小限に抑えることができます。
ゼロ先行リソースセットアップコスト
Auto Scalingは、ビジネス要件に基づいてECSインスタンスを作成およびリリースするため、リソースのセットアップに関連する初期費用が不要になります。 これらの予測可能な負荷のために特にコンピューティングリソースを予約することに集中する必要があります。
ゼロO&Mコスト
ピーク時に備えるために、事前にスケーリングポリシーを作成できます。 トラフィックが急増すると、Auto Scalingは自動的にECSインスタンスをプロビジョニングし、アタッチされたserver Load Balancer (SLB) インスタンスのバックエンドサーバーグループに追加します。 Auto Scalingは、新しいインスタンスのプライベートIPアドレスを追加して、接続されたApsaraDB RDSインスタンスのIPアドレスホワイトリストも更新し、シームレスな接続を確保します。 トリガから完了までの全シーケンスは自動化され、手動の介入なしに行われます。
超高コストパフォーマンス
Auto Scalingは、従量課金インスタンスとプリエンプティブルインスタンスの任意の組み合わせをサポートします。 プリエンプティブルインスタンスは、コストを最大90% 削減できる可能性があります。 プリエンプティブルインスタンスが不十分であることが判明したシナリオでは、従量課金インスタンスが自動的にプロビジョニングされ、中断のないサービスが保証されます。 コスト効率をさらに向上させるために、コスト最適化ポリシーが指定されている場合、Auto Scalingは補足プリエンプティブルインスタンスの有効化機能も提供します。 この機能を有効にすると、Auto Scalingは、現在のプリエンプティブルインスタンスの終了の5分前に、追加のプリエンプティブルインスタンスを割引レートでプロビジョニングします。
手順
重要なビジネスコンポーネントのコストを最小限に抑えるには、ビジネスインフラストラクチャに基づいて評価を行い、次の操作を実行します。
先に進む前に、現在アプリケーションをホストしているECSインスタンスに基づいてカスタムイメージを作成する必要があります。 カスタムイメージの作成方法については、「インスタンスからカスタムイメージを作成する」をご参照ください。
手順1: カスタムイメージを使用したサブスクリプションECSインスタンスの作成
この手順では、カスタムイメージに基づいて定義された数のサブスクリプションECSインスタンスをプロビジョニングする方法について説明します。 Auto Scalingは、これらのインスタンスをスケーリンググループに追加して、特定のビジネスモジュールの安定したトラフィック需要に対応します。
ECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。
目的のカスタムイメージを見つけて、アクション列のインスタンスの作成をクリックします。
ビジネス要件に基づいてパラメーターを設定し、インスタンスの作成を完了します。
[課金タイプ] を [サブスクリプション] に設定します。
リージョンとイメージは自動入力されます。
その他のパラメーターについては、「カスタム起動タブでインスタンスを作成する」をご参照ください。
手順2: スケーリンググループの作成と有効化
この手順では、予算制約のあるビジネスモジュールに合わせたスケーリンググループを作成し、スケーリング設定にカスタムイメージを組み込んで、自動的にプロビジョニングされたECSインスタンスがアプリケーション要件に正確に準拠することを保証する方法について説明します。
Auto Scalingコンソールにログインします。
左側のナビゲーションウィンドウで、スケーリンググループをクリックします。
上部のナビゲーションバーで、リージョンを選択します。
作成をクリックしてビジネス要件に基づいてパラメーターを設定し、グループの作成を完了します。
スケーリンググループ名テキストボックスにtestnameなどのカスタム名を入力します。
インスタンス設定ソースを [スクラッチから作成] に設定します。
最小インスタンス数を0に設定します。
[最大インスタンス数] を10に設定します。
デフォルトのクールダウン時間 (秒) を300に設定します。
[ネットワークタイプ] を [VPC] に設定します。
[スケーリングポリシー] を [コスト最適化ポリシー] に設定します。
[最小従量課金インスタンス] を [0] に設定します。
従量課金インスタンスの割合を30に設定します。
最低コストインスタンスタイプを3に設定します。
[補足プリエンプティブルインスタンスの有効化] をオンにします。
[従量課金インスタンスを使用してプリエンプティブルキャパシティを補完する] をオンにします。 デフォルトでは、この機能は有効になっています。
インスタンス再利用モードをリリースに設定します。
作成した仮想プライベートクラウド (VPC) と1つ以上のvSwitchを選択します。
ビジネスモジュールの要件に基づいて、CLBインスタンスの関連付け、ALBとNLBサーバーグループの関連付け、ApsaraDB RDSインスタンスの関連付けを設定します。
ビジネス要件に基づいて他のパラメーターを設定します。 詳細については、「スケーリンググループの管理」をご参照ください。
スケーリンググループを見つけて、アクション列の詳細をクリックします。
詳細ページの上部で、インスタンス設定ソースタブをクリックします。
スケーリング設定の作成をクリックしてビジネス要件に基づいてパラメーターを設定し、スケーリング設定の作成を完了します。
[課金方法] を [プリエンプティブルインスタンス] に設定します。
[インスタンスタイプの選択] ドロップダウンリストから3つ以上のインスタンスタイプを選択します。
[イメージの選択] ドロップダウンリストからカスタムイメージを選択します。
ビジネス要件に基づいて他のパラメーターを設定します。 詳細については、「ECSタイプのスケーリング設定の作成」をご参照ください。
スケーリング設定とスケーリンググループを有効にします。
手順3: サブスクリプションECSインスタンスの追加とスケーリングポリシーの設定
この手順では、スケーリンググループにサブスクリプションECSインスタンスを追加する方法と、ピーク時にシームレスなスケーリングを実装するためのスケジュール済みタスクを作成する方法について説明します。 このステップは、プリエンプティブルインスタンスがコスト削減を最大化できることも示しています。
インスタンスタブで、作成したECSインスタンスをスケーリンググループに追加します。
サブスクリプションECSインスタンスを保護状態で、トラフィックが安定しているときにサービスの可用性を確保します。
基本情報タブで、ビジネス要件に基づいてスケーリンググループ内のインスタンスの最小数と最大数を変更します。
スケーリンググループ内のインスタンスの最大数と最小数を変更する方法の詳細については、「スケーリンググループの変更」をご参照ください。
スケーリンググループの詳細ページで、 2つの単純なスケーリングルールを作成します。
次のパラメーターを設定する必要があります。
[ルールタイプ] を [シンプルスケーリングルール] に設定します。
次のルールに基づいて操作を設定します。
単純なスケーリングルール1: スケールアウトイベントがトリガーされると、5つのECSインスタンスがスケーリンググループに追加されます。
シンプルスケーリングルール2: スケールインイベントがトリガーされると、5つのECSインスタンスがスケーリンググループから削除されます。
ビジネス要件に基づいて他のパラメーターを設定します。 詳細については、「スケーリングルールの管理」をご参照ください。
スケーリンググループの詳細ページで、2つのスケジュール済みタスクを作成します。
次のルールに基づいて [実行日時] を設定します。
スケジュールタスク1: 値を11月に設定します。 20、2021、午後4時59分は、ピーク時間が到来したときに、スケールアウトイベントを直ちにトリガすることを。
スケジュールタスク2: 値を11月に設定します。 20、2021、9:59 PMは、オフピーク時間が到着したときにスケールインイベントを直ちにトリガーするがあります。
デフォルトでは、サブスクリプションECSインスタンスがプロビジョニングされているスケーリンググループが選択されています。
[スケーリングメソッド] を [既存のスケーリングルールの選択] に設定します。
次のルールに基づいて単純スケーリングルールを設定します。
スケジュールされたタスク1: [シンプルスケーリングルール1] を選択して、ピーク時にすぐにスケールアウトイベントをトリガーします。
スケジュールされたタスク2: 単純なスケーリングルール2を選択して、オフピーク時間が到来したときにスケールインイベントを直ちにトリガーします。
ビジネス要件に基づいて他のパラメーターを設定します。 詳細については、「スケジュール済みタスクの作成」をご参照ください。
結果の検証
[スケーリングアクティビティ] タブに移動して、スケーリングアクティビティの詳細を表示できます。 スケーリングアクティビティの詳細に基づいて、定義された数のECSインスタンスが期待どおりにスケーリングされているかどうかを確認できます。 詳細については、「スケーリングアクティビティの詳細の表示」をご参照ください。
サブスクリプションECSインスタンスは保護ステータスになり、安全に予約され、予測可能で一貫性のあるトラフィック負荷を処理するように最適化されます。 保護状態のECSインスタンスはスケーリンググループ内でそのまま維持され、意図しない削除が回避されます。 アタッチされたSLBインスタンスのバックエンドサーバーの役割と、負荷分散におけるそれぞれの重みは影響を受けません。
Auto Scalingは、事前に設定されたスケジュールに基づいてECSインスタンスの数をプロアクティブに増やします。これにより、ピーク時のトラフィック需要の増加に対応できる十分な容量が確保されます。 コスト最適化ポリシーを設定し、[補足プリエンプティブルインスタンスの有効化] 機能を有効にすると、ECSインスタンスを低コストで購入できます。
Auto Scalingは、作成したスケジュール済みタスクに基づいて、オフピーク時にECSインスタンスでスケールします。