Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCI技術資料 : 自動スケーリング概要

OCI技術資料 : 自動スケーリング概要

OCIの技術説明資料 自動スケーリング機能の概要編です。
Oracle Cloud Infrastructure コンピュート・サービスの機能の一つである、自動スケーリング機能にフォーカスしています。

2024/10/16 スケールアップの対応シェイプを更新
2022/4/1 新規作成

#oci #OCI #Compute #Autoscaling

More Decks by Oracle Cloud Infrastructure ソリューション・エンジニア

Other Decks in Technology

Transcript

  1. クラウドインフラを利用するメリット 変化する ビジネス需要 への対応 Copyright © 2024, Oracle and/or its

    affiliates 2 オンプレミス クラウド インフラコスト 時間 インフラの処理能力 需要 • 刻々と変化するビジネス需要への柔軟な追随 が困難 • 需要に応じたインフラ投資により機会損失の 防止、コスト最適化を実現 機会損失 過剰投資のリスク インフラコスト 時間 インフラの処理能力 需要 需要に応じた制御
  2. 「スケールアップ」と「スケールアウト」 インフラの性能を上げるための2つのアプローチ Copyright © 2024, Oracle and/or its affiliates 3

    VM 2 CPU 4 CPU 8 CPU VM 2 CPU 2 CPU 2 CPU • サーバー単体のCPU・メモリ・NW帯域を スペックアップすることで、処理性能を高める • サーバー台数を増やして性能を高める スケールアップ スケールアウト • 性能だけでなく可用性の向上も期待できるが、 サーバーや各サーバーのアプリケーションの状態 管理など、管理対象が増える • 管理するサーバーは1台で良いが、性能の向 上に限界がある
  3. 「スケールアップ」と「スケールアウト」 インフラの性能を上げるための2つのアプローチ Copyright © 2024, Oracle and/or its affiliates 4

    VM 2 CPU 4 CPU 8 CPU VM 2 CPU 2 CPU 2 CPU • サーバー単体のCPU・メモリ・NW帯域を スペックアップすることで、処理性能を高める • サーバー台数を増やして性能を高める スケールアップ スケールアウト • 性能だけでなく可用性の向上も期待できるが、 サーバーや各サーバーのアプリケーションの状態 管理など、管理対象が増える • 管理するサーバーは1台で良いが、性能の向 上に限界がある コンピュートの 「シェイプの変更」 で実現 コンピュートの 「自動スケーリング」 で実現 本資料はこちらをメインに解説
  4. 参考 コンピュートのシェイプ変更によるスケールアップ Copyright © 2024, Oracle and/or its affiliates 5

    • インスタンス再作成せずにVMインスタンスのシェイプを変更することが可能 • アプリケーションへの影響を最小限に適切なサイズに変更 • 起動中のインスタンスはサイズ変更時に再起動が必要 • サポートされるシェイプは下記リンクのドキュメントに記載 (同一シェイプ系でのみ変更可能) インスタンスのシェイプの変更 - サポートされるシェイプ (https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/resizinginstances.htm#support) 制限、注意事項 • インスタンス起動時に使用したイメージが、新しいシェイプに互換性を持っている必要がある。 イメージの互換シェイプはコンソールやCLIにて確認可能。 • Marketplaceイメージはライセンスの制約上リサイズ不可な場合も。(例:Microsoft SQL Server) • セカンダリNICを構成している場合は再起動後に再構成が必要な場合もある。 • ハードウェア系統が変更となる場合は、ネットワークインターフェース名変更などが発生する 場合もある。
  5. https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm • 指定した条件に基づいてインスタンスの数を増減するイベント(自動スケーリング・イベント)を発動する仕組み - 条件の閾値には、OCI Monitoring のメトリック(CPU使用率など)を指定 - メトリックは1分毎に集計され、連続する3つの値が閾値を満たすと(つまり3分間経過すると)イベントが発動する -

    イベント完了後、クールダウン期間 (>=300秒) が経過すると再びイベントが発動されるようになる OCI 自動スケーリング機能とは? Copyright © 2024, Oracle and/or its affiliates 7 インスタンス・プール CPU使用率が平均 80%超 インスタンス・プール CPU使用率が平均 20%未満 インスタンス・プール Load Balancer Load Balancer Load Balancer スケールアウト スケールイン
  6. インスタンス構成 • コンピュート・インスタンスを作成する際の構成情報のテンプレート OSイメージ、シェイプ、メタデータ情報、ボリューム、ネットワーク構成(VINC、サブネット)の設定 • 既存のインスタンスをもとに作成することも可能 インスタンス・プール • 複数のコンピュート・インスタンスをグループとして管理する機能 •

    プール内のインスタンスのステータス(開始、停止、終了) を一括で管理可能 • ターゲット・インスタンス数を変更することで、スケールアウト/スケールインが可能 インスタンス・プールに設定されたインスタンス構成をもとに、コンピュート・インスタンスがプロビジョニングされる 条件がマッチするインスタンスであれば、既存のインスタンスをプールにアタッチすることも可能 自動スケーリング構成 • インスタンス・プールに対して、自動スケーリングを行う条件(自動スケーリング・ポリシー)を 定義し、その条件に基づいて自動的にスケーリングを行う機能 • メトリックベースの自動スケーリングとスケジュールベースの自動スケーリングがある OCI 自動スケーリングに関連する3つの構成要素 Copyright © 2024, Oracle and/or its affiliates 8 インスタンス構成 インスタンス・プール Provisioning 既存インスタンス ターゲット・インスタンス数: 3 新規作成 自動スケーリング構成 Min 2インスタンス、Max 5インスタンス CPU使用率 > 70% → 2インスタンス増 CPU使用率 < 30% → 1インスタンス減
  7. • インスタンスをクローンして構成ファイルに保存 • インスタンスのテンプレートのベースラインを標準化 • 構成ファイルから簡単にインスタンスをデプロイ • アタッチされたリソース情報も含めた複数インスタンスの自動プロビジョニング インスタンス構成のユースケース Copyright

    © 2024, Oracle and/or its affiliates 10 インスタンス構成 配置情報 イメージ シェイプ ネットワーク構成 ボリューム メタデータ 既存インスタンスの 情報をベースに作成 コンソール/CLI等を 通じて新規作成 Virtual Machine インスタンス・プール 新規インスタンス作成時の テンプレートとして インスタンス・プールで作成される インスタンスのテンプレートとして
  8. • インスタンス構成には、インスタンスのブート・ボリュームの情報 (インスタンスにインストールされているアプリケーション、 バイナリ、ファイルなど) は含まれない。 インスタンスの個別の設定を含むインスタンス構成を作成する場合は、以下の工程が必要。 1.対象のインスタンスから カスタム・イメージ を作成 2.1のカスタム・イメージを使用して

    新しいインスタンス を起動 3.2のインスタンスに基づいてインスタンス構成を作成 • インスタンス構成には、インスタンスにアタッチされているブロック・ボリュームのコンテンツは含まれない。インスタンス構成に ブロック・ボリュームのコンテンツを含める場合、以下の工程が必要。※詳細な手順については次のスライドを参照 1.アタッチされたブロック・ボリュームのバックアップを作成 2.SDK、CLIまたはAPIを使用し、インスタンス構成を作成する際の “構成設定” のリストで、 ブロック・ボリュームのバックアップを指定 • インスタンス構成が 容量予約に関連付けられている場合、その予約は、そのインスタンス構成を使用して作成された インスタンスまたはインスタンス・プールに自動的に適用される。十分な容量が使用可能であるかぎり、インスタンスの 起動時には、関連付けられた予約の容量が使用されます。 インスタンス構成における注意点 Copyright © 2024, Oracle and/or its affiliates 11
  9. ブロック・ボリュームがアタッチ済み (かつ、マウント済みで データも保持した状態) のインスタンス 構成を作成するためには、下記手順が必要となる ※コマンドのサンプルは次スライドを参照 1.インスタンス①を作成 2.ブロック・ボリューム②を作成 3.①のインスタンスに②をアタッチ 4.インスタンス①に接続し、パーティション作成/マウント/fstabの編集など実施

    5.①のインスタンスから カスタム・イメージ 作成 6.②のブロック・ボリュームから バックアップ を作成 (7.任意で 手順5のカスタム・イメージからインスタンスを作成し、そのインスタンスから インスタンス構成を作成する) (8.任意で 手順7で作成したインスタンス構成から “構成設定” 情報を取得 @cli) 9.インスタンス構成作成時に必要となる “構成設定” ファイルのテンプレート取得 @cli 10.手順9で取得したテンプレートを編集し、手順5、6で取得したカスタム・イメージや、 ブロック・ボリューム・バックアップのOCIDを指定 ※このとき、手順8で取得した “構成情報” を手本にすると編集し易い 11.手順10で編集した “構成設定” ファイルをインプットに、インスタンス構成を作成 @cli 参考 ブロック・ボリュームがアタッチされたコンピュートの”インスタンス構成”の作成手順 Copyright © 2024, Oracle and/or its affiliates 12 Virtual Machine Block Storage Back Up Boot Volume Custom Image インスタンス構成 Instance Pool インスタンス① ブロック・ボリューム②
  10. 手順8の コマンド サンプル --instance-configuration-id : 手順7で作成したインスタンス構成のOCIDを指定 手順9の コマンド サンプル 手順11

    の コマンド サンプル --instance-details : 手順10で編集した “構成設定” ファイルを指定 OCI CLI コマンドリファレンス: https://docs.oracle.com/iaas/tools/oci-cli/latest/oci_cli_docs/cmdref/compute-management/instance-configuration/create.html 参考 インスタンス構成作成時の コマンド サンプル Copyright © 2024, Oracle and/or its affiliates 13 oci compute-management instance-configuration get --instance-configuration-id ocid1.instanceconfiguration.oc1.xxxxxxxxxx > sample.json oci compute-management instance-configuration create --generate-param-json-input instance-details > template.json oci compute-management instance-configuration create --compartment-id ocid1.compartment.oc1.xxxxxxxxxx --instance-details file://input.json
  11. • 一貫性のある構成で構成されたインスタンスのグループを一括で管理 • プールのサイズを変更することによるスケールアウト・スケールインが可能 ✓ 設定に応じて、リージョン内の複数可用性ドメイン、フォルト・ドメインにまたがって展開 • インスタンス停止時にはインスタンスを再起動(*)、インスタンス終了時には新規作成し、ターゲット・インスタンス数を維持 インスタンス・プールのユースケース Copyright

    © 2024, Oracle and/or its affiliates 15 インスタンス・プール ターゲット・インスタンス数: 2 インスタンス・プール ターゲット・インスタンス数: 2 インスタンス・プール ターゲット・インスタンス数: 3 インスタンス・プール ターゲット・インスタンス数: 1 インスタンス・プール ターゲット・インスタンス数: 2 インスタンス・プール ターゲット・インスタンス数: 2 一括停止/起動 スケールアウト スケールイン 自動起動(*) (*)再起動までの時間はインスタンスの状況により異なる (15~20分程度が多い)ため、必ず検証の上ご利用ください
  12. • 条件にマッチしていれば、インスタンス・プールに 既存のインスタンスを 追加でアタッチすることも可能 ✓ インスタンスとプールが実行中である。 ✓ インスタンスとプールのマシン・タイプが同一である(仮想マシンまたはベア・メタル)。 ✓ インスタンスとプールの可用性ドメインとフォルト・ドメインが同一である。

    ✓ インスタンスのプライマリVNICが、プールと同じVCNおよびサブネットに存在する。 ✓ セカンダリVNICが定義されている場合、インスタンスのセカンダリVNICが、プール内の その他のインスタンスで使用されているセカンダリVNICと同じVCNおよびサブネットに 存在する。 ✓ インスタンスが別のプールにアタッチされていない。 • インスタンス・プール内で管理していたインスタンスをデタッチする場合、 インスタンスを削除するか保持するかを選択可能 • デタッチ時に、プールのインスタンス構成をインスタンスのテンプレートとし て使用し、インスタンスを新しいインスタンスで置き換える インスタンス・プールへのアタッチ・デタッチ Copyright © 2024, Oracle and/or its affiliates 16 既存のインスタンス インスタンス・プール 個別のインスタンス インスタンス・プール
  13. ➢ スケールアウト・イベント時 • インスタンスはインスタンス構成に基づいて、新しくイメージから作成される • ブート・ボリュームも新規作成される • インスタンス構成にセカンダリ仮想NICや、追加ブロックボリュームがアタッチされている場合は、新規作成されアタッチされる • ホスト名は自動でランダムに付与される

    • 可用性ドメイン(AD)*、フォルト・ドメイン(FD)** をバランスするように新規インスタンスが作成される * インスタンス・プール作成時に複数ADを指定していた場合 (AD1 -> AD2 -> AD3 -> AD1) ** 単一ADを指定した場合 (FD1 -> FD2 -> FD3 -> FD1) • (関連づけている場合は)ロード・バランサーに通知され、インスタンスがバックエンドセットに追加される ➢ スケールイン・イベント時 • FIFO (First In First Out) ロジックに従って、最も最初に作成されたインスタンスから削除される * * まず 可用性ドメイン間 でインスタンス数のバランスが調整され、次に フォルト・ドメイン間 で調整される。最後に、フォルト・ドメイン内の最も古い インスタンスが終了される。 • インスタンスは完全に終了 (Terminate) され、付随するリソース**も全てデタッチ&削除(終了)される ** ブートボリューム、アタッチされているブロックボリューム、セカンダリ仮想NIC、エフェメラルなパブリックIPアドレスなど • (関連づけている場合は)ロード・バランサー に通知され、インスタンスがバックエンド・セットから除去される スケールアウト/スケールイン・イベント時の挙動 Copyright © 2024, Oracle and/or its affiliates 17
  14. • インスタンス・プールに設定した「インスタンス構成」は、インスタンス・プールの作成後も、編集ボタンより 変更が可能。 ✓ ただし、インスタンス・プールのインスタンス構成を変更しても、そのプールに含まれている既存のインスタンスは変更されない。 ✓ インスタンス構成の変更後に作成された新しいインスタンスでは、新しいインスタンス構成が適用される。 ※ 新規インスタンスは、インスタンス・プールのサイズを増やすか、既存のインスタンスを終了しないかぎり作成されない。 インスタンス・プールにおける注意点

    Copyright © 2024, Oracle and/or its affiliates 18 インスタンス・プール インスタンス・プール インスタンス・プール インスタンス構成B インスタンス構成B インスタンス構成A インスタンス構成Aに 従った構成 インスタンス構成Aに 従った構成のまま インスタンス構成Aに 従った構成のまま ターゲット・インスタンス数: 2 ターゲット・インスタンス数: 2 ターゲット・インスタンス数: 3 インスタンス構成 Bに従った構成 インスタンス構成の変更前 インスタンス構成の変更後 インスタンス・プールを増加後
  15. インスタンス・プールの自動スケーリング Copyright © 2024, Oracle and/or its affiliates 20 メトリックベースの自動スケーリング

    • モニタリングによって取得されたメトリックを使用し、あらかじ め設定した閾値に基づいて自動的にインスタンス・プール のインスタンス数を増減 • ポリシーに設定可能なメトリック:CPU使用率、メモリ使用率 • 負荷がピークの期間はスケール・アウト、負荷が低い期間 はスケール・インしてコストをセーブする スケジュールベースの自動スケーリング • あらかじめスケジュールした時間に自動的にインスタンス・ プールのインスタンス数を増減 • 繰り返し実行もしくは1回のみのスケジューリングが可能 • スケジュールはcron表記で定義 • ユースケース • 平日朝にインスタンス数をスケールアウトし、夕方に減らす • 年間のうち年度末のみ特に負荷が増大するので、その3日間 だけスケールアウトする スケールアウト スケジュール メトリック (CPU,メモリ使用率) OR 最小サイズ 初期サイズ 最大サイズ 初期サイズ スケールイン CPU使用率70%以上で2インスタンス追加 CPU使用率20%以下で2インスタンス削除 毎日朝9時に2インスタンス追加 毎日夜20時に2インスタンス削除 12/30~1/3のみ2インスタンス追加 インスタンス・プールがスケールインする際のインスタンス終了順序の判断 ADにまたがって均等なインスタンス数 → フォルトドメインにまたがって均等 → フォルトドメイン内では古いものから先に終了 インスタンス・プール インスタンス・プール
  16. スケジュール・ベースの自動スケーリングによって インスタンスの停止/起動 も可能 常時起動しておかなくてよいインスタンスを自動停止させてコストを削減することも可能 ライフサイクル状態に対するスケジュールベースのアクション Copyright © 2024, Oracle and/or

    its affiliates 21 トリガー 自動スケーリング ポリシー コンピュート・インスタンス 停止 インスタンス・プール スケジュール 朝 9:00 – 起動 夜 18:00 – 停止 起動 ライフサイクル・アクション • 起動 • 強制停止 • 再起動 • 強制再起動
  17. • 1つのインスタンス・プールに対して、複数の自動スケーリング構成を作成することはできない。 (自動スケーリング構成 と インスタンス・プール の関係は、1:1) • 1つの自動スケーリング構成で、メトリック・ベースとスケジュール・ベースのポリシーを混在させることはできない。 「業務時間外は自動停止させる」、「業務時間中は ”負荷に合わせて”

    スケールアウト/インさせる」という組合せは不可。 • メトリック・ベースの自動スケーリング構成、スケジュール・ベースの自動スケーリング構成、それぞれの中で 複数のポリシーを 定義することは可能。 例: ✓ メトリック・ベースの自動スケーリング構成で、CPU使用率、メモリー使用率のポリシーをそれぞれ定義する ✓ スケジュール・ベースの自動スケーリング構成で、プール・サイズのスケーリング・ポリシー、ライフサイクル状態に対する変更ポリシーを 定義する 自動スケーリング構成の制約 Copyright © 2024, Oracle and/or its affiliates 22
  18. • スケールイン・イベントが発動すると、インスタンスが終了(Terminate)される、その際にブート・ボリュームとアタッチされ たブロック・ボリュームが全て削除される • 重要なデータは、インスタンス内部には保管せず、外部ストレージ(Object Storage / File Storage など)に保管

    する ✓ アプリケーションの永続化データ ✓ HTTPのセッションデータ ✓ Webサーバーのログファイル ✓ OSログファイル 考慮点 : インスタンスはいつ終了されても良いようにする Copyright © 2024, Oracle and/or its affiliates 24
  19. • スケールアウト・イベントで新しくインスタンスが作成されると、イメージから新しくブート・ボリュームが作成されるため、 「設定ずみ」の状態をカスタム・イメージ化することで、アプリケーションの起動の高速化を図ることができる • アプリケーションには自動起動のスクリプトを設定したり、systemdなどでデーモン化を図る • 起動時の設定ファイルの変更などに cloud-init を活用し、外部ストレージ(Object Storage

    / FSSなど)から更新 できるようにする • ISCSIブロック・ボリュームの自動ログインや、セカンダリ仮想NICの登録などは、Oracle Linuxの oci-utils を使うと 便利 参考:OCI で Oracle Linux を使うときに超絶便利なツール oci-utils https://qiita.com/mmarukaw/items/f62391703bb3181e27d5 考慮点 : カスタムイメージと起動スクリプトの活用 Copyright © 2024, Oracle and/or its affiliates 25
  20. インスタンス・プールの作成 Copyright © 2024, Oracle and/or its affiliates 29 作成したインスタンス構成をもとに、プール内のインスタンスの数、配

    置するADやサブネット、ロード・バランサをアタッチするか否かを指定 し、インスタンス・プールを作成します。
  21. プール内のインスタンス数の変更 Copyright © 2024, Oracle and/or its affiliates 30 インスタンス数:

    1 → 2に変更 インスタンス数: 2 → 1に変更 プール内のインスタンス数を変更することで、 インスタンスの増減を行うことができます。
  22. 「メトリックベース」の自動スケーリング構成の場合 自動スケーリング構成の作成(1/2) Copyright © 2024, Oracle and/or its affiliates 31

    クールダウン時間(秒) スケールが完了してから安定するまでの時 間。Cooldown期間がたってから再度メト リックをベースにしたスケーリング判断を行う。 300秒以上で設定。 パフォーマンス・メトリック CPU使用率またはメモリー使用率 自動スケーリング・ポリシー ・スケールアウト/スケールイン・ルール - > < ≧ ≦ - しきい値パーセンテージ - 追加/削除するインスタンス数 ・スケーリング制限 - インスタンスの最小数(1以上) - インスタンスの最大数 - インスタンスの初期数
  23. 「スケジュール・ベース」の自動スケーリング構成の場合 自動スケーリング構成の作成(2/2) Copyright © 2024, Oracle and/or its affiliates 32

    実行するアクション プール・サイズのスケーリング または 全イン スタンスのライフサイクル状態の変更 ※インスタンス・プールの自動停止・起動を 行う場合は後者を選択 ターゲット・プール・サイズ インスタンス・プールのターゲット数を指定 自動スケーリング・ポリシー クイック・スタートを利用しCron式を設定するか、 各項目を設定し、Cron式を構成 各項目は、左から下記を意味する <分> <時間> <月内の日付> <月> <曜日> <年> 値は*や?などの特殊文字を指定可能 Cron式について:https://docs.oracle.com/ja- jp/iaas/Content/Compute/Tasks/autoscalinginstancepools.htm#cron
  24. 自動スケーリング・イベントの際の動作 Copyright © 2024, Oracle and/or its affiliates 33 指定した閾値に達すると自動でスケールする

    ロード・バランサをアタッチしている場合、自動的にロード・バ ランサのバックエンド・セットにも追加/削除される
  25. Oracle Cloud Infrastructure マニュアル (日本語 / 英語) • https://docs.cloud.oracle.com/iaas/api/ -

    APIリファレンス • https://docs.cloud.oracle.com/ja-jp/iaas/Content/General/Reference/aqswhitepapers.htm - テクニカル・ホワイト・ペーパー • https://docs.cloud.oracle.com/iaas/releasenotes/ - リリースノート • https://docs.cloud.oracle.com/ja-jp/iaas/Content/knownissues.htm - 既知の問題(Known Issues) • https://docs.cloud.oracle.com/ja- jp/iaas/Content/General/Reference/graphicsfordiagrams.htm - OCIアイコン・ダイアグラム集(PPT、 SVG、Visio用) ※ 日本語版は翻訳のタイムラグのため情報が古い場合があります。最新情報は英語版をご確認ください Oracle Cloud Infrastructure マニュアル・ドキュメント Copyright © 2024, Oracle and/or its affiliates 36
  26. Oracle Cloud Infrastructure 活用資料集 • https://community.oracle.com/docs/DOC-1035494 チュートリアル - Oracle Cloud

    Infrastructureを使ってみよう • https://oracle-japan.github.io/ocitutorials/ Oracle Cloud ウェビナーシリーズ • https://www.oracle.com/goto/ocws-jp Oracle 主催 セミナー、ハンズオン・ワークショップ • https://www.oracle.com/search/events/_/N-2bu/ Oracle Cloud Infrastructure – General Forum (英語) • https://cloudcustomerconnect.oracle.com/resources/9c8fa8f96f/summary Oracle Cloud Infrastructure トレーニング・技術フォーラム Copyright © 2024, Oracle and/or its affiliates 37