ノート:

自動スケーリングを使用したコンピュート・リソースの調整

イントロダクション

このチュートリアルでは、CPU使用率に基づいて自動的にスケール・アウト/インできるロード・バランシングされたWebアプリケーションを構築します。

このチュートリアルでは、ロード・バランサ、コンピュート・インスタンス、インスタンス構成を作成してから、自動スケーリングを構成します。次に、CPU上の構成済のしきい値を超えると、自動スケーリング機能を確認します。

Autoscalingでは、パフォーマンス・メトリック(CPU使用率など)に基づいてインスタンス・プール内のコンピュート・インスタンス数を自動的に調整できます。これにより、需要が多い期間にエンド・ユーザーに一貫したパフォーマンスを提供し、需要が少ない期間にコストを削減することができます。

モニターするパフォーマンス・メトリックを選択し、自動スケーリング・イベントをトリガーするためにパフォーマンス・メトリックが到達する必要のあるしきい値を設定します。システム使用率がしきい値を満たす場合、自動スケーリングはほぼリアルタイムで動的にリソースを割り当てます。負荷が増加するにつれ、インスタンスが自動的にプロビジョニングされます。つまり、インスタンス・プールがスケール・アウトされます。ロードが減少するにつれて、インスタンスが自動的に削除されます。つまり、インスタンス・プールがスケール・インされます。

自動スケーリングは、監視サービスによって収集されるパフォーマンス・メトリックに依存します。これらのパフォーマンス・メトリックは、1分ごとに集計されてから、インスタンス・プール全体で平均化されます。連続する3つの値(つまり、連続する3分間の平均メトリック)がしきい値に一致すると、自動スケーリング・イベントがトリガーされます。

自動スケーリング・イベントの間のクールダウン期間には、更新されたレベルでシステムが安定化します。クールダウン期間は、インスタンス・プールが安定状態になったときに開始します。自動スケーリングは、クールダウン期間中もパフォーマンス・メトリックの評価を続けます。コールドダウン期間が終了すると、自動スケーリングでは、必要に応じてインスタンス・プールのサイズが再調整されます。

ノート: Oracle Cloud Infrastructure (OCI)ユーザー・インタフェースが更新されているため、手順の一部のスクリーンショットは実際のUIとは異なる場合があります

VCNおよびサブネットの作成

Linuxインスタンスをインターネットに接続するように、VCNを設定します。仮想ネットワークの作成に必要なすべてのコンポーネントを構成します。

  1. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」の下で、「ネットワーキング」に進み、「Virtual Cloud Networks」をクリックします。

    左側の「コンパートメント」リストで、コンパートメント(または指定されたコンパートメント)が選択されていることを確認してください。

  2. 「VCNウィザードの起動」をクリックします。

  3. 「インターネット接続性を持つVCN」を選択し、「VCNウィザードの起動」をクリックします。

  4. 次のように入力します(説明は斜体です。シナリオの値に置き換えてください)。

    • Name: クラウド・ネットワークの名前を入力します
    • COMPARTMENT: 目的のコンパートメントを選択します
    • VCN CIDRブロック: 10.0.0.0/16
    • パブリック・サブネットCIDRブロック: 10.0.0.0/24
    • プライベート・サブネットCIDRブロック: 10.0.1.0/24
    • DNS解決: チェック済

    ノート: パブリック・サブネットとプライベート・サブネットには異なるCIDRブロックがあります。

  5. 「次へ」をクリックします。

    「インターネット接続を使用したVCNの作成」構成ダイアログが表示され、入力したすべての値が確認され、作成される追加のコンポーネントがリストされます。

  6. 作成」をクリックして、ワークフローを開始します。

    これにより、次のコンポーネントを含むVCNが作成されます:

    VCN、パブリック・サブネット、プライベート・サブネット、インターネット・ゲートウェイ(IG)、 NATゲートウェイ(NAT)、サービス・ゲートウェイ(SG)

  7. ワークフローが完了したら、「Virtual Cloud Networksの表示」をクリックすると、作成したVCNの詳細ページが表示されます。

Load Balancerの作成とセキュリティ・リストの更新

  1. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「ネットワーキング」に移動して「ロード・バランサ」をクリックします。

  2. 「ロード・バランサの作成」をクリックします。ダイアログ・ボックスに入力します。

    「詳細の追加」の下

    • LOAD BALANCER NAME: ロード・バランサの名前を入力します。

    • 可視性タイプの選択: パブリック

    • 最大合計幅の選択: 「動的シェイプ」を選択し、マイクロ- 10Mbpsで選択できます。(ロード・バランサの帯域幅が指定されます。)

    • 仮想クラウド・ネットワーク: VIRTUAL CLOUD NETWORKの選択

    • SUBNET: パブリック・サブネットを選択します

    「次へ」をクリックします。

    「Choose Backends」の下:

    • LOAD BALANCING POLICYの指定: 加重ラウンド・ロビン
    • バックエンドの追加: バックエンドは追加しません。これはインスタンス・プールによって管理されます。

    • プロトコル: HTTP

    • ポート: 80

    • URLパス(URI): /

      その他のオプションはデフォルトのままにします

    Click **Next**.
    

    「リスナーの構成」の下

    • リスナーで処理するトラフィック・タイプの指定: HTTP

    • リスナーでイングレス・トラフィックをモニターするポートの指定: 80

      その他のオプションはデフォルトのままにします

  3. 「発行」をクリックします。

  4. ロード・バランサがアクティブになるまで待機してから、そのパブリックIPアドレスをノートにとります。

  5. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」の下で、「ネットワーキング」に進み、「Virtual Cloud Networks」をクリックします。以前に作成したVCNを見つけます。

  6. VCN名をクリックして、「VCNの詳細」ページを表示します。

  7. 「セキュリティ・リスト」をクリックし、デフォルト・セキュリティ・リストを見つけます。

  8. 「Your_VCNのデフォルト・セキュリティ・リスト」をクリックし、「イングレス・ルールの追加」をクリックします。

  9. 「イングレス・ルールの追加」をクリックします。

    「イングレス・ルールの追加」ダイアログが表示されます。

  10. 次を入力します。

    • STATELESSフラグの選択を解除したままにします
    • ソース・タイプ: CIDR
    • Source CIDR: 0.0.0.0/0と入力
    • IPプロトコル: 「TCP」を選択します
    • ソース・ポート範囲: すべて
    • Destination Port Range: 80と入力(リスナーポート)
    • 説明: 着信HTTP接続を許可

  11. 「イングレス・ルールの追加」をクリックします。

インスタンス・プールの作成と自動スケーリングの構成

Webサーバーの作成とインスタンスの構成

Apache Webサーバーを使用してOracle Linuxインスタンスを作成し、Webサーバーに基づいてインスタンスを構成します。これは自動スケーリング構成の基盤になります。

  1. Oracle Cloud Infrastructureのメイン・メニューを開きます。

  2. 「コンピュート」「インスタンス」の順に選択します。

  3. インスタンスのリスト画面で、「インスタンスの作成をクリックします。

  4. インスタンスの名前を入力します。

  5. インスタンスを作成するコンパートメントを選択します。

  6. 「Configure placement and hardware」セクションで、次を選択します。

    • 可用性ドメイン インスタンスを作成する可用性ドメインを選択します
    • フォルト・ドメイン・オプション。チェックを外したままにできます。
    • イメージ 最新のOracle Linux (デフォルトでは、サポートされている最新バージョンがすでに選択されています)
    • [シェイプ]目的のシェイプを選択します。
  7. 「ネットワークの構成」セクションで、次を選択します:

    • ネットワーク 既存の仮想クラウド・ネットワークを選択します
    • 「仮想クラウド・ネットワーク」で、目的のVCNを持つコンパートメントを選択します
    • ネットワーク仮想ネットワーク・クラウド・ネットワークの選択
    • 「サブネット」で、目的のVCNがあるコンパートメントを選択します
    • サブネット パブリック・サブネットを選択します
    • 未チェックのトラフィックを制御するには、ネットワーク・セキュリティ・グループを使用します
    • パブリックIPアドレス *パブリックIPv4アドレスを割り当てます
  8. 「SSHキーの追加」セクションで:

    SSHキー・ペアを保持していない場合:

    1. 「SSHキー・ペアの生成」を選択します。
    2. 「秘密キーの保存」をクリックし、ブラウザのプロンプトに従って秘密キーを保存します。
    3. 「公開キーの保存」をクリックし、ブラウザのプロンプトに従って公開キーを保存します。

    公開キーがある場合は、次のことができます。

    1. 「公開キー・ファイルの選択」を選択します
    2. 公開キー・ファイルを上にドラッグ・アンド・ドロップするか、または場所を参照します。、場所を見つけてファイルを選択します。

    または

    1. 「公開キーの貼付け」を選択します。
    2. 公開キー値をSSHキーに貼り付けます(「Anotehrキー」をクリックして複数のキーを追加できます)。
  9. 「ブート・ボリュームの構成」で、すべてのオプションを選択しないままにします。

  10. 「拡張オプションの表示」をクリックします。

    管理中

    • 初期化スクリプト: 「Cloud- initスクリプトの貼付け」を選択し、次のスクリプトを貼り付けます。Cloud- initスクリプトは、インスタンスを構成するためにのみ初回起動時に実行されます。
    #cloud-config
    yum_repos:
        epel-testing:
            baseurl: https://yum.oracle.com/repo/OracleLinux/OL7/developer_EPEL/$basearch/
            enabled: true
            failovermethod: priority
            gpgcheck: true
            gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
            name: EPEL ($basearch)
    
    packages:
    - httpd
    - stress
    
    runcmd:
    - [sh, -c, echo "<html>Web Server IP `hostname --ip-address`</html>" > /var/www/html/index.html]
    - [firewall-offline-cmd, --add-port=80/tcp]
    - [systemctl, start, httpd]
    - [systemctl, restart, firewalld]
    
  11. 「Create」をクリックします。

  12. インスタンスの詳細ページが表示されます。黄色の四角形が緑色になると、インスタンスがプロビジョニング、起動および実行されます。

  13. インスタンスが「実行中」状態になるのを待機します。「作業リクエスト」まで下にスクロールして、プロビジョニング・プロセスを確認できます。

  14. 「インスタンス名」をクリックします。「他のアクション」をクリックし、「インスタンス構成の作成」を選択します。次を入力します。

    • コンパートメントに作成: コンパートメントを選択します。
    • Name: 名前を指定します。
  15. 「インスタンス・プールの作成」をクリックし、次のように入力します。

    • コンパートメントに作成: コンパートメントを選択します
    • Name: 名前を指定します。
    • COMPARTMENT_NAMEのインスタンス構成: 現在選択されているコンパートメントと異なる場合は、コンパートメントを選択します
    • インスタンス構成名: ステップ14で作成したインスタンス・プールが移入されている必要があります。
    • インスタンス数: 0

  16. 「次へ」をクリックして、ポーリング配置を構成してください

  17. 「プール配置の構成」ページで、次のように入力します。

    • 可用性ドメイン: インスタンスを配置するADを選択します(複数ADリージョンの場合、AD 1を選択できます)。
    • 仮想クラウド・ネットワーク・コンパートメントの選択: 現在選択されているコンパートメントと異なる場合は、VCNのコンパートメントを選択し、VCNを選択します。
    • COMPARTMENT_NAMEのサブネット: 現在選択されているコンパートメントと異なる場合は、サブネットのコンパートメントを選択し、サブネットを選択します。
    • ロード・バランサのアタッチ: このオプションを選択します。
    • COMPARTMENT_NAMEのLoad Balancer: 現在選択されているコンパートメントと異なる場合は、LBのコンパートメントを選択し、Load Balancerを選択します
    • バックエンド・セット: 最初のバックエンド・セットを選択します
    • ポート: 80
    • VNIC: デフォルトのままにします
  18. 「次へ」をクリックし、情報を確認して、「作成」をクリックします。

  19. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「リソース・プール」を選択し、「インスタンス・プール名」をクリックします。

  20. 「インスタンス・プールの詳細」画面で、「他のアクション」をクリックし、「自動スケーリング構成の作成」を選択して、次のように入力します:

    • 名前: 名前の定義
    • コンパートメントに作成: コンパートメントを選択します
    • COMPARTMENT_NAMEのインスタンス・プール: 現在選択されているコンパートメントと異なる場合はコンパートメントを選択し、インスタンス・プールを選択します(プールが表示されていない場合は、ブラウザをリフレッシュして再試行してください)

  21. 「次へ」をクリックし、「自動スケーリング・ポリシーの構成」ページで次を入力します:

    • 「メトリックベースの自動化」を選択します。
    • AUTOSCALING POLICY NAME: 名前を指定します
    • COOLDOWN IN SECONDS : 300 (これは、スケーリング・アクション間の最小期間です。)
    • PERFORMANCE METRIC: CPU使用率(これは、スケーリング・アクションのトリガーに使用するメトリックです。)
    • スケールアウト・オペレータ: より大きい(>)
    • しきい値割合: 80
    • 追加するインスタンスの数: 1
    • スケールイン・オペレータ: より小さい(<)
    • しきい値割合 : 20
    • 削除するインスタンスの数: 1
    • インスタンスの最小数: 1 (これは、プールが常に持つインスタンスの最小数です)
    • インスタンスの最大数: 2 (プールが常に持つインスタンスの最大数)
    • INITIAL NUMBER OF INSTANCES : 1 (最初にインスタンス・プールに作成されるインスタンスの数)

  22. 「次へ」をクリックし、情報を確認して、「作成」をクリックします。

設定のテスト

  1. ロード・バランサの詳細で、Load BalancerのパブリックIPを確認し、Webブラウザで開きます。

  2. OCIコンソールに戻り、「コンピュート」「インスタンス・プール」をクリックし、プール名をクリックします。「作成されたインスタンス」をクリックすると、作成されたコンピュート・インスタンスが表示されます。コンピュート・インスタンス名をクリックします。

  3. yout Priateキーを保存した端末で、インスタンスにsshを実行します

    ssh -i <private_key> opc@<PUBLIC_IP_OF_COMPUTE>
    
  4. CPU負荷を開始します。Enterコマンド:

    sudo stress --cpu 4 --timeout 350
    

    350秒のタイムアウトで回転する4人のワーカーを生成します。

  5. OCIコンソールに切り替えて、「インスタンス・プールの詳細」ページに移動します。「メトリック」画面までスクロール・ダウンすると、1分ほど経ってからCPUスパイク・アップが表示されます。

  6. 約3分から5分(自動スケーリング構成の作成時に構成された時間)で、プールのステータスは「スケーリング」に変わり、2番目のコンピュート・インスタンスが起動します。**「作業リクエスト」をクリックすると、新しいインスタンスを作成する作業リクエストが表示されます。

    これは、CPU使用率> 10の基準が満たされたためです。

  7. 2番目のインスタンスが稼働中で、インスタンス・プールのステータスが「実行中」の場合、Webブラウザに切り替えてページを複数回リフレッシュし、2つのWebサーバー間のロード・バランサ・バランシング・トラフィックを確認します。

  8. 端末に戻り、ストレス・ツールがまだ実行されている場合は、[Ctrl]を押しながら[C]を押してスクリプトを停止します。

  9. OCIコンソール・ウィンドウに切り替えて、コンピュート・インスタンスの詳細ページに移動します。1分後にCPU使用率が低下することを確認します。

  10. インスタンス・プールの詳細ページに移動し、3分から4分後にインスタンス・プールのステータスが「スケーリング」に変わります。追加のコンピュート・インスタンスが削除されます。

    これは、CPU使用率< 5の基準が満たされているためです。

リソースの削除

  1. OCIコンソール・ウィンドウに切り替えます。

  2. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「インスタンス・プール」を選択します。右端にある3つのドットをクリックし、「終了」を選択します。要求されたら、確認します。

  3. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「インスタンス構成」を選択します。右端にある3つのドットをクリックし、「終了」を選択します

  4. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「インスタンス」を選択します。右端にある3つのドットをクリックし、「終了」を選択します。「アタッチされたブート・ボリュームを完全に削除」ボックスを選択し、「インスタンスの終了」をクリックします。

  5. ナビゲーション・メニューを開きます。「ネットワーキング」で、「ロード・バランサ」を選択します。右端にある3つのドットをクリックし、「終了」を選択します。要求されたら、確認します。

  6. ナビゲーション・メニューを開きます。「ネットワーキング」で、「Virtual Cloud Networks」を選択します。右端にある3つのドットをクリックし、「終了」を選択します。要求されたら、確認します。

  7. ナビゲーション・メニューを開きます。「コア・インフラストラクチャ」で、「インスタンス・プール」を選択します。右端にある3つのドットをクリックし、「終了」を選択します。リソースのリストが終了したら、「すべて終了」をクリックします

  8. 最初のコンピュート・インスタンスを探して、「アクション」アイコンをクリックし、「終了」をクリックします。

  9. アタッチされたブート・ボリュームが完全に削除されていることを確認し、「Terminate Instance」をクリックします。インスタンスが完全に終了するまで待ちます。

  10. 「インスタンス・プールの詳細」ページのOCIコンソール・ウィンドウで、「アクション」の下の「終了」をクリックします。ポップアップ・ダイアログ・ボックスにインスタンス・プール名を指定し、「終了」をクリックします。これにより、コンピュート・インスタンスおよび自動スケーリング構成とともにプールが削除されます。

  11. 「コンピュート」の下の「インスタンス構成」に移動します。インスタンス構成で、3つの垂直ドットの下の「削除」をクリックします。

  12. 「コンピュート」の下にあるAutoScaling構成に移動します。「インスタンス構成」で、「削除」をクリックします。

  13. OCIサービス・メニューから、「ネットワーキング」の下の「ロード・バランサ」をクリックし、Load Balancerを見つけて、3つの垂直ドットの下の「終了」をクリックします。

  14. 「OCIサービス」メニューから、「ネットワーキング」、「VCNの検索」の下の「Virtual Cloud Networks」をクリックし、「アクション」アイコンをクリックし、「終了」をクリックします。「確認」ウィンドウで「すべて削除」をクリックします。VCNを削除したら、「閉じる」をクリックします。

完了しました。演習を正常に完了しました。

謝辞

その他の学習リソース

docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。