OCIの勉強メモ~コンピュート編~
OCIの勉強第4回目は、コンピュートサービスです。
コンピュートサービスはいわゆるIaaS(Infrastructure as a Service)と呼ばれるカテゴリですね。
最近はサーバレス*1というワードをよく聞きますが、コンピュートサービスはクラウドを支える最も基本的な構成要素と言えるでしょう。
シェイプ
OCPU*2の数やメモリサイズのセット、個人的にはインスタンスサイズと言われた方がしっくりくる。
例えば2OCPUで16GBメモリのシェイプといった具合に。
簡単に言えば、AWSにおけるt3.micro, m6i.largeみたいなやつ。
Fixedシェイプ
Flexibleシェイプ
インスタンスの種類
-
- 最も基本的なインスタンスタイプ
- 物理的なHWを複数のユーザーで共有する(マルチテナントモデル)
ベアメタル
- ユーザーが占有できる物理的なHW、HWへ直接アクセスできる
- シングルテナントモデル
- ユースケースとしては次のようなものが考えられる
- パフォーマンスが求められるワークロード
- 仮想化できないワークロード
- 特別なハイパーバイザーが必要なワークロード
- BYOLが必要なワークロード
Dedicated VM Hosts
バーストインスタンス
EC2のt3インスタンスのようなもの
- ベースラインパフォーマンスを保証
- バーストは利用可能な容量に依存
- たまに発生するCPU使用率のスパイクに備えて、より高いレバレッジでのバーストが可能
- VM.Starndard.E3.Flexでのみ利用可能
- メモリはバーストしない
VMインスタンスの購入タイプ
VMインスタンスの購入タイプには、稼働時間に応じて課金が発生する従量課金制の他にもタイプが存在する。*3
オンデマンドインスタンス
稼働時間に応じて課金が発生する従量課金制のインスタンス。一般的な購入タイプ。
プリエンプティブルインスタンス
コストは通常のオンデマンドインスタンスの50%ほどに抑えられるが、急に停止される可能性があり、利用用途は限られる。
その他にも作成後にシェイプを変更できない、プリエンプティブルインスタンスからオンデマンドインスタンスへの変更はできないといった制約もある。
上記のような制約もあるが、上手に活用すれば大幅なコスト削減が見込める。
容量予約
OCI側のコンピュートインスタンスの在庫が無い場合、コンピュートインスタンスを起動してもできない コンピュートインスタンスの容量予約をしておくと、そういった問題を回避できる
シナリオケース
- 災害復旧
- キャンペーン
- 予期せぬワークロード
- 計画的な移行と新規立ち上げ
- 長期プロジェクトのための容量予約
「起動したいときに起動できない」といった問題を解決するための機能と考えればいい。
制限
- 特定のADに関連付けられる
- ADから別のADへの移動は不可
- 専用VMホストは利用不可
- 容量の設定で定義されたシェイプに限定されたインスタンス
- 容量の作成時にすでに在庫が無い場合は、容量の作成が失敗する
特に容量予約は特定のADに関連付けられ、別ADへの移動はできないというのは大事なポイント。
コンピュートイメージ
いわゆる起動ディスクというものでOSやソフトウェアが含まれている。
コンピュートイメージにはいくつか種類がある。
Oracle提供イメージ
カスタムイメージ
マーケットプレース
独自イメージ
インスタンス構成・プールと自動スケーリング
自動スケーリングを利用することで、負荷に応じてインスタンス数を自動で増減できる。
これにより、急な負荷の上昇時にインスタンスを増やす、負荷が落ち着いてきたら不要なインスタンスは削除する、といったことが可能となり伸縮性やコスト効率の良いサービスを構築することができる。
その時に必要となるテンプレートが、インスタンス構成で次のような情報を含んでいる。(AWS Auto Scalingにおける起動テンプレートのようなもの)
- OSイメージ
- メタデータ
- シェイプ
- vNICs
- ストレージ
- サブネット
インスタンス構成を作成したら、インスタンスプールを構成する。
インスタンスプールを作成することで、インスタンス構成で定義されたインスタンスを、設定したインスタンス数で自動的に起動されるようにできる。
インスタンスプールには、最小インスタンス数や初期のインスタンス数、最大インスタンス数を設定する。(Auto ScalingのAuto Scalingグループのようなものというイメージ)
スケーリングポリシー
- メトリックスベース
- CPUやメモリの使用率からスケーリングを行うか判断する
- スケジュールベース
- 予め決められたスケジュールに沿って、スケーリングを行う
自動スケーリングの構成の流れ
Oracle Cloudエージェント
コンピュートインスタンス上で実行されているプラグインを管理するプロセス 使用するにはOracle Cloud Agentソフトウェアをインストールし、プラグインを有効にする必要がある。*4Windows Serverに対してもOS管理サービスを利用できる。
機能
- CVEの検索
- パッケージ管理
- マネージドインスタンスグループ(フリートマネジメント)の作成などが行える
- ジョブのスケジューリング
- OS監視のためのメトリクスとアラームの管理
使用例
実行コマンド(Run Command)
Oracle Cloudエージェントソフトウェアが管理するプラグイン管理対象のインスタンス上で、スクリプト内のコマンドを実行できる。
Linux*6のスクリプトはデフォルトでBash、Windowsスクリプトはバッチファイルとして実行される。
SSH接続をせずにスクリプトを実行したり、スクリプトの結果をObject Storageに送信できたりする。
使用するにはインスタンスにOCIダイナミックグループを作成し、ダイナミックグループを許可するポリシーを作成する必要がある。
まとめ
コンピュートサービスはそれ単体で完結するものではなく、他のサービスと連携されます。(前回のロードバランサもそう)
しっかり情報の整理をしていきたいですね。