※本記事は、Peter Jausovecによる"Autoscaling your workload on Oracle Cloud Infrastructure"を翻訳したものです。
この記事では、Oracle Cloud Infrastructure(OCI)コンピュート・インスタンスのインスタンス・プール、インスタンス構成、および構成の自動スケーリングについて学習します。
インスタンス・プールは、同じ構成から複数のコンピュート・インスタンスを作成し、グループとして管理する目的で使用できます。また、自動スケーリング構成にすることで、インスタンス・プール内のコンピュート・インスタンスの数を自動で調整できます。自動スケーリング構成により、需要が多いときには一貫したパフォーマンスを確保し、需要が少ないときにはコストを削減することができます。
インスタンス・プールを作成する前に、インスタンス構成を作成する必要があります。インスタンス構成とは、コンピュート・インスタンスの作成時に使用される設定を定義したテンプレートです。
図1:コンピュート・ワークロードの自動スケーリングで使用するコンポーネント
インスタンス構成は、既存のコンピュート・インスタンスをテンプレートとして使用することで作成できます。インスタンス構成を一から作成する場合は、SDK、CLI、またはAPIを使用します。
まずは、インスタンス構成のテンプレートとして使用できるコンピュート・インスタンスを作成しましょう。
インスタンスがプロビジョニングされたら、インスタンスの詳細ページからインスタンス構成を作成できます。
図2:インスタンスの詳細
次に、新しく作成したインスタンスをインスタンス構成のテンプレートとして使用します。
名前として、instance-configと入力します。
図3:インスタンス構成
「Create Instance Configuration」をクリックします。
インスタンス構成の作成後、詳細ページが表示されます(以下の図を参照)。
図4:インスタンス構成の詳細
インスタンス・プールはインスタンス構成ページから直接作成できます。それには、「Create Instance Pool」をクリックして以下の手順を実行します。
Configure Pool Placementページで、1つ以上の可用性ドメインを追加できます。各ドメインに対して、フォルト・ドメイン、プライマリ仮想クラウド・ネットワーク(VCN)、およびサブネットを指定できます。デフォルトでは、プール内のインスタンスは、容量に基づくベストエフォート型としてすべてのフォルト・ドメインに分散されます。あるフォルト・ドメインで容量が使用できない状態の場合、インスタンスが他のフォルト・ドメインに配置され、インスタンス・プールが正常に起動できるようになります。高可用性を確保するために、選択したフォルト・ドメインのそれぞれにインスタンスを均等に分散するように指定できます。
また、「Attach a load balancer」チェック・ボックスをオンにして、ロードバランサをインスタンス・プールに関連付けることができます。この機能を使用するには、既存のロードバランサを保持しておく必要があります。
次に、可用性ドメインとして「AD1」を選択し、さらにVCNとサブネットを選択します。「Next」をクリックして、「Create」をクリックすると、インスタンス・プールが作成されます。
インスタンス・プールの作成には数分かかります。作成後、左側のナビゲーション・ペインの「Created Instances」をクリックして、プール内に作成されたインスタンスのリストを開くことができます(以下の図を参照)。
図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に設定する必要があります。
この記事では、インスタンス・プール、インスタンス構成、および構成の自動スケーリングについて学習しました。また、CPU使用率、メモリ使用率、または定義したスケジュールに基づいてインスタンス・プールのスケールインまたはスケールアウトを実行するための、メトリックベースおよびスケジュールベースの自動スケーリング構成の作成方法について確認しました。
需要が多いときには一貫したパフォーマンスを確保し、需要が少ないときにはコストを削減するために、以下のリソースを活用してください。
ユースケースには何一つ同じものはありません。Oracle Cloud Infrastructureがご自分に合ったものなのかを判断できる唯一の方法が、お試しいただくことです。Oracle Cloud Free Tierまたは30日間の無償トライアルをお選びいただけます。無償トライアルには、コンピュート、ストレージ、ネットワーキングを含む幅広いサービスを使い始めるための300米ドル分のクレジットが含まれています。