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

OCI 自動スケーリング機能を使ってみよう

OCI 自動スケーリング機能を使ってみよう

Oracle Cloud Infrastructure (OCI) の自動スケーリング機能 (Auto Scaling) の解説資料です。2019年8月27日のOCIスキルアップセミナーで使用しました。
自動スケーリング機能と、それを支えるコンポーネント(インスタンス構成、インスタンス・プール、自動スケーリング構成)を実際に触って動作を理解します。

Masataka Marukawa

August 27, 2019
Tweet

More Decks by Masataka Marukawa

Other Decks in Technology

Transcript

  1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | OCIスキルアップセミナー第1回 自動スケーリング機能をさわってみよう 2019年9月4日 日本オラクル株式会社 丸川 祐考 @mmarukaw #ocijp 1
  2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | Safe Harbor Statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこと はできません。以下の事項は、マテリアルやコード、機能を提供することをコ ミットメント(確約)するものではないため、購買決定を行う際の判断材料になさ らないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期について は、弊社の裁量により決定されます。 2
  3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | OCI 自動スケーリング機能とは? • 指定した条件に基づいてインスタンスの数を増減するイベント(自動スケーリン グ・イベント)を発動する仕組み – 条件の閾値には、OCI Monitoring のメトリック(CPU使用率など)を指定 – メトリックは1分毎に集計され、連続する3つの値が閾値を満たすと(つまり3分間経過すると) イベントが発動する – イベント完了後、クールダウン期間 (>=300秒) が経過すると再びイベントが発動されるように なる 4 https://docs.oracle.com/cd/E97706_01/Content/Compute/Tasks/autoscalinginstancepools.htm インスタンス・プール CPU使用率が平均 80%超 インスタンス・プール CPU使用率が平均 20%未満 インスタンス・プール クールダウン期間経過
  4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 自動スケーリングの利用目的 • 耐障害性の向上 – 起動しているインスタンスの数を一定に保つ • 可用性の向上 – 一つの可用性ドメイン(AD)や、フォルト・ドメイン(FD)が利用できなくなっても、新しいADや FDで新しいインスタンスが起動できる • コスト削減 – 需要に応じて必要な数のインスタンスを起動できる – (将来) 需要予測に対応するスケーリングのスケジュール設定 5
  5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | OCI 自動スケーリング機能の構成コンポーネント • インスタンス構成 (Instance Configuration) – 自動スケーリングで使用するコンピュート ・インスタンスの構成 を定義する – OSイメージ、シェイプ、仮想NIC、ボリューム、所属サブネット、 メタデータ – 稼働中のインスタンスを基にして作成される – 作成済みインスタンス構成の変更はAPI/CLIでのみ可能 • インスタンス・プール (Instance Pool) – 自動スケーリング対象となるコンピュート ・インスタンスを集合 として管理する単位 – ステータス(開始、停止、終了)およびターゲット・インスタンス数 を一括管理 – ロードバランサー のバックエンド・セットとの関連づけが可能 – 作成済みインスタンス・プールの変更はAPI/CLIでのみ可能 6 インスタンス 構成 インスタンス・プール ターゲット・ インスタンス数: 3 稼働中インスタンス
  6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | OCI 自動スケーリング機能の構成コンポーネント(続き) • 自動スケーリング構成 (Auto Scaling Configuration) – 自動スケーリングをいつ、どのような条件で実行するかのを指定 – 条件の閾値には、OCI Monitoring のメトリック(CPU使用率、メモリ 使用量)を指定 → Agentが稼働している必要あり – インスタンスの最小数、最大数、増分数、減分数を指定 – 条件を満たして自動スケーリング・イベントが発動すると、インス タンス・プールのインスタンス数が書き換えられ、インスタンスが 増減する 7 インスタンス・プール ターゲット・ インスタンス数 : 3 → 4 自動スケーリング構成 Min 2インスタンス、Max 8インスタンス CPU使用率 > 70% → 2インスタンス増 CPU使用率 < 30% → 1インスタンス減
  7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | スケールアウト・イベント発動時の挙動 • インスタンスはインスタンス構成に基づいて、新しくイメージから作成される – ブート・ボリュームも新規作成される – インスタンス構成にセカンダリ仮想NICや、追加ブロックボリュームがアタッチされている場 合は、新規作成されアタッチされる – ホスト名は自動でランダムに付与される • 可用性ドメイン(AD)*、フォルト・ドメイン(FD)** をバランスするように新規イ ンスタンスが作成される – * 自動スケーリング構成作成時に複数ADを指定していた場合(AD1 -> AD2 -> AD3 -> AD1) – ** 単一ADを指定した場合(FD1 -> FD2 -> FD3 -> FD1) • (紐づいている場合は)ロード・バランサー に通知され、インスタンスがバック エンドセットに追加される 8
  8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | スケールイン・イベント発動時の挙動 • FIFO (First In First Out) ロジックに従って、最も最初に作成されたインスタンスか ら削除される – LIFOではない • インスタンスは完全に終了(Terminate) され、付随するリソースも全てデタッチ &削除(終了)される – ブートボリューム、アタッチされているブロックボリューム、セカンダリ仮想NIC、エフェメ ラルなパブリックIPアドレスなど • (紐づいている場合は)ロード・バランサー に通知され、インスタンスがバック エンド・セットから除去される 9
  9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 11 インスタンス構成の作成 既存のインスタンスからインスタ ンス構成を作成します。
  10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 12 インスタンス・プールの作成 作成したインスタンス構成をもとに、プール内の インスタンスの数と、配置するADやサブネットを 指定してインスタンス・プールを作成します。
  11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | プール内のインスタンス数の変更 13 インスタンス数: 1 → 2に変更 インスタンス数: 2 → 1に変更 プール内のインスタンス数を変更することで インスタンスの増減を行うことができます。
  12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | ロードバランサーの準備 • ロードバランサーを作成 – バックエンドに何もサーバーを追加してない状態 14
  13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | インスタンス・プールの作成 15 インスタンス構成からインスタンスプールを作 成 準備したロード・ バランサーを指定 インスタンスを配置す るADとサブネットを 指定 インスタンス数を指定
  14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | インスタンス・プールの作成(続き) 16 指定したインスタンス数でインスタンスが自 動的に起動され、指定したロードバランサー のBackendに追加される
  15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 自動スケーリング定義の作成 • 自動スケーリングの作成 17 Cooldown時間(秒) スケールが完了してから安定するま での時間。Cooldown期間がたってか ら再度メトリックをベースにしたス ケーリング判断を行う。300秒以上 で設定。 Auto Scalingポリシー ・メトリック: - CPU使用率 または メモリ使用率 ・スケーリング・リミット: - 最小インスタンス数、最大インスタ ンス数、初期インスタンス数 ・スケーリング・ルール: - > < ≧ ≦ - パーセンテージ - 追加/削除するインスタンス数
  16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 自動スケーリング・イベントの際の動作 18 指定した閾値に達すると自動でスケールする 自動的にロードバランサーのBackendにも追加/削除さ れる
  17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | メトリックの確認 • Monitoring機能のメトリック・エクスプローラ画面から、インスタンス・プール内のインスタン スのCPU使用率などのメトリックを確認可能 19 特定のインスタンス・ プールを指定してグラフ 化
  18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | oci compute-management instance-pool update --instance-pool-id <インスタンス・プールのOCID> --instance-configuration-id <変更後の新しいインスタンス構成のOCID> インスタンス構成情報の変更 • インスタンス・プールに紐づけられたインスタンス構成を更新すると、自動ス ケーリングによって今後起動するインスタンスのみを変更することができる (起動済みインスタンスは変更されない) • ただし、インスタンス・プールの更新は、コンソールからは不可、API/ CLIの利 用が必要 • CLIからのインスタンス・プールの更新例 (インスタンス構成の変更) : 20
  19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | シナリオ1 : シンプルな自動スケーリング 1. VCNを作成(テンプレートでOK) 2. インスタンスを作成 3. 作成したインスタンスからインスタンス構成を作成 4. インスタンス構成からインスタンス・プールを作成 5. インスタンス・プールから自動スケーリング構成を作成 6. 負荷をかけてインスタンスの増減をテスト – sudo stress –c 2 22
  20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | シナリオ2 : ロードバランサー と組み合わせた自動スケーリング 1. VCNを作成し、使用するサブネットのセキュリティリストで80番ポートを解放 2. インスタンスを作成しユーザーデータでwebサーバーを起動 3. 作成したインスタンスからインスタンス構成を作成 4. ロードバランサー 、リスナー、バックエンドセットを作成 5. インスタンス構成からインスタンス・プールを作成 – 作成したロードバランサーとバックエンドセットを紐づけ 6. インスタンス・プールから自動スケーリング構成を作成 7. 負荷をかけてインスタンスの増減をテスト 23
  21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 考慮点 : 閾値とクールダウン時間の設定 • インスタンスが追加された時に閾値の下限を下回らない値に設定する(Min=1 の 場合には上限値の半分以下) • サーバーの起動にかかる時間の把握し、クールダウン時間をそれ以上に設定す る – インスタンスの起動(1~2分) – OSサービスの起動(1~2分) – アプリケーションの起動(X分) – サービスの安定(X分) 25
  22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 考慮点 : インスタンスはいつ終了されても良いようにする • スケールイン・イベントが発動すると、インスタンスが終了(Terminate)される、 その際にブート・ボリュームとアタッチされたブロック・ボリュームが全て削 除される • 重要なデータは、インスタンス内部には保管せず、外部ストレージ(Object Storage / File Storage など)に保管する – アプリケーションの永続化データ – HTTPのセッションデータ – Webサーバーのログファイル – OSログファイル 26
  23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 考慮点 : カスタムイメージと起動スクリプトの活用 • スケールイン・イベントで新しくインスタンスが作成されると、イメージから 新しくブート・ボリュームが作成されるため、「設定ずみ」の状態をカスタ ム・イメージ化することで、アプリケーションの起動の高速化を図ることがで きる • アプリケーションには自動起動のスクリプトを設定したり、systemdなどでデー モン化を図る • 起動時の設定ファイルの変更などに cloud-init を活用し、外部ストレージ(Object Storage / FSSなど)から更新できるようにする • ISCSIブロック・ボリュームの自動ログインや、セカンダリ仮想NICの登録などは、 Oracle Linuxの oci-utils を使うと便利 – 参考blog 27
  24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 考慮点 : インスタンスの構成を変更しやすくする • インスタンス構成は、一度作ると変更できない インスタンス構成はAPI/CLI を利用すれば変更可能(コンソールでは不可) – 元となるインスタンスを変更してもインスタンス構成は変わらない(作成時に関連が切れる) – インスタンス構成を変更したい場合は、元インスタンスを変更した後、インスタンス構成と インスタンス・プールを再作成する必要がある • できる限りの変更に対応できるように予め構成しておく – 変更が予想されるコンポーネントは、カスタム・イメージに含まずに後から簡単に変更でき るようにしておく (例) cloud-init で実行するスクリプト自体も外部から取得して実行されるようにしておく (Object Storageからスクリプトをダウンロードして実行する) 28
  25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | 将来リリース予定の機能 • Scaling on custom metrics • Notification of scaling events (Email, SMS, Web Hooks) • Schedule-based autoscaling • Day of week or month; Time-based 29
  26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | スケジュールベースのスケーリング(カスタム) • https://oc-blog.com/2019/06/26/oci-autoscale-super-script/ • https://github.com/AnykeyNL/OCI-AutoScale • Hi All, Just released my updated Auto Scaling script for OCI. With this script you can scale up/down and power on/off based on a schedule. – Resources supported: • Compute VMs (power on/off) • Instance Pools (Scale up/down and Power On/off) • Database VMs (power on/off) • Database baremetal (Scale up/down) • Autonomous Database (Scale up/down and Power On/off) 30
  27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | • API Document – InstanceConfiguration – InstanceConfigurationSummary – InstancePool – InstancePoolLoadBalancerAttachment – InstancePoolSummary – Autoscaling * • * Autoscaling API だけは、他のAPIとエンドポイントが異 なるので注意 (https://autoscaling.<リージョン>.oci.oraclecloud.com) • CLI Document – instance-configuration – instance-pool – autoscaling 31 API / CLI リファレンス
  28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | シリーズ : OCIスキルアップセミナー • Oracle Cloud Infrastructure (OCI) の技術トピックを取り上げてディープに学習する 勉強会シリーズです。月に1回のペースで、業務時間後に開催しています。 • 時々ミートアップイベントも予定しています • Connpass の Oracle Code Night グループで活動しています https://oracle-code-tokyo-dev.connpass.com/ 32