X

A blog about Oracle Technology Network Japan

  • December 22, 2020

Oracle Cloud Infrastructureでのワークロードの自動スケーリング

Guest Author

※本記事は、Peter Jausovecによる"Autoscaling your workload on Oracle Cloud Infrastructure"を翻訳したものです。


この記事では、Oracle Cloud Infrastructure(OCI)コンピュート・インスタンスのインスタンス・プールインスタンス構成、および構成の自動スケーリングについて学習します。

インスタンス・プールは、同じ構成から複数のコンピュート・インスタンスを作成し、グループとして管理する目的で使用できます。また、自動スケーリング構成にすることで、インスタンス・プール内のコンピュート・インスタンスの数を自動で調整できます。自動スケーリング構成により、需要が多いときには一貫したパフォーマンスを確保し、需要が少ないときにはコストを削減することができます。

インスタンス・プールを作成する前に、インスタンス構成を作成する必要があります。インスタンス構成とは、コンピュート・インスタンスの作成時に使用される設定を定義したテンプレートです。

図1:コンピュート・ワークロードの自動スケーリングで使用するコンポーネント

 

インスタンス構成は、既存のコンピュート・インスタンスをテンプレートとして使用することで作成できます。インスタンス構成を一から作成する場合は、SDK、CLI、またはAPIを使用します。

 

インスタンスの作成

まずは、インスタンス構成のテンプレートとして使用できるコンピュート・インスタンスを作成しましょう。

  1. ナビゲーション・メニューを開き、「Compute」に移動し、「Instances」をクリックします。
  2. Create Instance」をクリックします。
  3. 名前として、instance-templateと入力します。
  4. Change Shape」をクリックします。
  5. Browse All Shapesダイアログ・ボックスで、「Virtual Machine」をクリックします。
  6. Specialty and Legacy」をクリックします。
  7. お使いのリージョンで使用できるシェイプを選択します(例:VM.Standard.E2.1)。
  8. Select Shape」をクリックします。
  9. Create」をクリックします。

インスタンスがプロビジョニングされたら、インスタンスの詳細ページからインスタンス構成を作成できます。

図2:インスタンスの詳細 

 

インスタンス構成の作成

次に、新しく作成したインスタンスをインスタンス構成のテンプレートとして使用します。

  1. インスタンスの詳細ページで、「More Actions」メニューをクリックし、「Create Instance Configuration」を選択します。
  2. Create in compartmentリストで、コンパートメントを選択します。
  3. 名前として、instance-configと入力します。

    図3:インスタンス構成 

     

  4. 「Create Instance Configuration」をクリックします。
    インスタンス構成の作成後、詳細ページが表示されます(以下の図を参照)。

    図4:インスタンス構成の詳細

 

インスタンス・プールの作成

インスタンス・プールはインスタンス構成ページから直接作成できます。それには、「Create Instance Pool」をクリックして以下の手順を実行します。

  1. Compartmentリストで、インスタンス構成を作成したコンパートメントを選択します。
  2. 名前として、my-instance-poolと入力します。
  3. Instance Configurationリストで、「instance-config」を選択します。
  4. インスタンス数として、5と入力します。このインスタンス数は、インスタンス・プール内にプロビジョニングできるインスタンスの最大数を示します。プロビジョニング可能なインスタンス数は、テナンシーのサービス上限およびリージョン内のコンピュート・シェイプの可用性によって異なります。
  5. Next」をクリックします。

Configure Pool Placementページで、1つ以上の可用性ドメインを追加できます。各ドメインに対して、フォルト・ドメイン、プライマリ仮想クラウド・ネットワーク(VCN)、およびサブネットを指定できます。デフォルトでは、プール内のインスタンスは、容量に基づくベストエフォート型としてすべてのフォルト・ドメインに分散されます。あるフォルト・ドメインで容量が使用できない状態の場合、インスタンスが他のフォルト・ドメインに配置され、インスタンス・プールが正常に起動できるようになります。高可用性を確保するために、選択したフォルト・ドメインのそれぞれにインスタンスを均等に分散するように指定できます。

また、「Attach a load balancer」チェック・ボックスをオンにして、ロードバランサをインスタンス・プールに関連付けることができます。この機能を使用するには、既存のロードバランサを保持しておく必要があります。

次に、可用性ドメインとして「AD1」を選択し、さらにVCNとサブネットを選択します。「Next」をクリックして、「Create」をクリックすると、インスタンス・プールが作成されます。

インスタンス・プールの作成には数分かかります。作成後、左側のナビゲーション・ペインの「Created Instances」をクリックして、プール内に作成されたインスタンスのリストを開くことができます(以下の図を参照)。

図5:作成されたインスタンス 

 

自動スケーリング構成の作成

ここで、既存のインスタンス数では現在の需要に対応できないというシナリオについて考えてみます。このようなシナリオで、自動スケーリング構成を作成して、プール内のインスタンスの数を自動的にスケーリングすることができます。

インスタンス・プールの詳細ページから自動スケーリング構成を作成しましょう。

  1. More Actions」メニューをクリックし、「Create Autoscaling Configuration」を選択します。
  2. Create in compartmentリストで、インスタンス・プールを作成したコンパートメントを選択します。
  3. 名前として、my-autoscaling-configと入力します。
  4. Instance poolリストで、「my-instance-pool」を選択します。
  5. Next」をクリックします。Configure Autoscaling Policyページで、「Metric-based Autoscaling」または「Schedule-based Autoscaling」を選択できます。

    メトリックベースの自動スケーリング

    メトリックベースの自動スケーリングでは、CPU使用率またはメモリ使用率により、自動スケーリング・イベントをトリガーすることができます。この場合は、スケールアウトスケールインのルールを定義します。これらのルールは、プールに追加する(スケールアウト)場合とプールから削除する(スケールイン)場合のしきい値のパーセンテージおよびインスタンス数を指定するものです。

    また、スケーリングの上限も定義できます。この設定では、プールの初期インスタンス数(例では5)を使用します。また、ここではインスタンスの最小数と最大数を設定できます。さらに、クールダウン期間(秒単位)の設定によって、スケーリング・イベントに対して最小限の間隔(例では300秒つまり5分)が確保されるため、インスタンスの追加または削除が速すぎるという状況を防止できます。

    以下の図は、CPU使用率ベースの自動スケーリング・ポリシーの例を示したものです。このポリシーでは、CPU使用率が70 %を超えると2つのインスタンスが追加されます。また、CPU使用率が40 %を下回ると、2つのインスタンスが削除されます。

    図6:CPU使用率ベースの自動スケーリング 


    メトリックベースの自動スケーリングは、通信量を予測できず、CPU使用率またはメモリ使用率に基づいてスケーリングを自動化したい場合に使用します。需要を予測できる場合、または今後の需要増の発生(例:発売イベント)が分かっている場合は、スケジュールベースの自動スケーリングを使用します。

    スケジュールベースの自動スケーリング

    スケジュールベースの自動スケーリングでは、cron式を使用して、プール内のインスタンス数を変更するタイミングを構成できます。cron式の詳細については、Cron Trigger Tutorialを参照してください。

    例として、1月から3月までの期間、毎週月曜日の午後2時に一連の発売イベントの実施を予定している場合を考えてみます。この時間には10個のインスタンスが確実に実行されるようにしましょう。以下の図に、このポリシーを構成する方法を示します。ここでは、ターゲット・プール・サイズとして10を設定し、分(0)、時(14)、日(?)、月(1-3)、曜日(2)、年(*)の値を入力しています。

    図7:スケジュールベースの自動スケーリング 

    スケジュールベースの自動スケーリングでは、複数の自動スケーリング・ポリシーを同時に定義できます。たとえば、上で定義したポリシーの例ではインスタンスの数が10にスケールアウトされるだけで、発売イベント終了後のインスタンス数のスケールインは実行されません。月曜日の発売イベントの終了後にインスタンス数を減らすとなれば、別のポリシーを追加し、ターゲット・プール・サイズを5に設定する必要があります。

  6. 自動スケーリング・ポリシーの構成後、「Create」をクリックしてポリシーを作成します。同じインスタンス・プールに対して複数の自動スケーリング構成を定義でき、これらの定義は個別に有効化または無効化できます。

 

まとめ

この記事では、インスタンス・プール、インスタンス構成、および構成の自動スケーリングについて学習しました。また、CPU使用率、メモリ使用率、または定義したスケジュールに基づいてインスタンス・プールのスケールインまたはスケールアウトを実行するための、メトリックベースおよびスケジュールベースの自動スケーリング構成の作成方法について確認しました。

需要が多いときには一貫したパフォーマンスを確保し、需要が少ないときにはコストを削減するために、以下のリソースを活用してください。

参考資料


ユースケースには何一つ同じものはありません。Oracle Cloud Infrastructureがご自分に合ったものなのかを判断できる唯一の方法が、お試しいただくことです。Oracle Cloud Free Tierまたは30日間の無償トライアルをお選びいただけます。無償トライアルには、コンピュート、ストレージ、ネットワーキングを含む幅広いサービスを使い始めるための300米ドル分のクレジットが含まれています。

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.