Oracle Autonomous Data Warehouse Cloud 起動停止の自動化 ~Oracle Cloud Infrastructure CLI によるスケジューリング編~

技術者が語るOracle Cloud

はじめに

皆様、こんにちは。データソリューション部の山本です。

Oracle Autonomous Data Warehouse Cloud(以下、ADW Cloud)に対するインスタンスの起動停止スケジューリングをテーマとした記事となります。

2019年10月現在ですが、Cloudのインターフェースで起動や停止するスケジューリング機能がないです。ユニバーサルクレジットでは、使用した時間分課金されるので、お客様へ提供するにあたりコスト面を考慮してOCI CLIツールによるインスタンスの起動・停止を検討しました。(→OACのインスタンスの起動・停止はこちら

本記事では、Oracle社のマニュアルやサポートなどのWeb情報、私自身の経験などを元に検証しました。クラウド全般的に言える内容ではありますが、クラウド環境は日々改善や機器増強され、性能面の強化などが頻繁に発生しています。その為、本記事の検証結果は同様に実施した検証と異なる可能性がございますが、ご容赦の程宜しくお願いします。

本件は過去に対応した案件を2019年10月に再確認した内容です。

前提内容

  • 本記事を作成するにあたり、Oracle Cloudの表示言語は日本語で設定しています。
  • ADW Cloudのインスタンスは「us-ashburn-1」に作成した状態となります。
  • 社内のLinux環境(仮想)にCLIツールを導入してOracle Cloudにアクセスしています。
  • Linuxの環境はrootユーザで設定しています。
  • 社内のネットワークは、プロキシがある環境です。

検証環境概要

oraclecloud02_01.png

環境区分環境情報補足内容
実行サーバ Red Hat Enterprize Linux 7.6
oci 2.6.8 2019年10月時点の導入バージョン
python 2.7.5 前提バージョン

インスタンス起動停止のスケジューリング化

インスタンスの起動・停止をスケジューリング化する為に、以下のステップで環境を準備しました。

  • ステップ1:OCI CLI ツールのインストール事前準備
  • ステップ2:OCI CLI ツールのインストール
  • ステップ3:OCI CLI ツールのセットアップ
  • ステップ4:OCI CLI ツールによるスケジューリング

ステップ1 : OCI CLI ツールのインストール事前準備

OCI CLI ツールのインストールは、モジュールをcurlでダウンロードして、pythonでインストールします。

1. 「python」のインストールバージョン

pythonはRHEL7.6 の最小インストールでも導入されていました。導入されているバージョンを確認したい場合は、以下のコマンドで確認する。

【サンプルコマンド】
# python --version
Python 2.7.5
#

使用するネットワーク環境にプロキシがある場合、curlとpythonがプロキシ経由で実行されるように設定が必要となるので、以下の「2」、「3」を実施する。

2. 「curl」のプロキシ設定

rootユーザ(実行するユーザ)のホームディレクトリに以下の内容を参考に設定を追加する。

【サンプル設定】
# vi ~/.curlrc

追加する設定内容
 proxy = ""http://xx.xx.xx.xx:yyyy""
  xx.xx.xx.xx → プロキシのIPアドレス
  yyyy        → プロキシのポート番号

3. 「python」のプロキシ設定

rootユーザ(実行するユーザ)のコマンドラインで、以下のコマンドを実行する。

【サンプルコマンド】
# export HTTP_PROXY=http://xx.xx.xx.xx:yyyy
# export HTTPS_PROXY=http://xx.xx.xx.xx:yyyy

 http://xx.xx.xx.xx:yyyy
  xx.xx.xx.xx → プロキシのIPアドレス
  yyyy        → プロキシのポート番号

ステップ2 : OCI CLI ツールのインストール

OCI CLI のインストール時に以下の項目を明示的に指定し、その他の項目についてはデフォルト設定でインストールしました。

設定項目デフォルト設定値
インストールディレクトリ /root/lib/oracle-cli /u01/app/oci/lib/oracle-cli
oci.exeの配置先ディレクトリ /root/bin /u01/app/oci/bin
ociスクリプトの配置先ディレクトリ /root/bin/oci-cli-scripts /u01/app/oci/bin/oci-cli-scripts

1. インストールコマンドの実行

以下のコマンドでインストールスクリプトをダウンロードして、インストールを開始する。

【サンプルコマンド】
# bash -c ""$(curl -L 
https://raw.githubusercontent.com/oracle/oci-
cli/master/scripts/install/install.sh)"

2. バージョンの確認

以下のコマンドでインストールしたcliツールのバージョンを確認する。

【サンプルコマンド】
# /u01/app/oci/bin/oci -v
2.6.8
#

ステップ3 : OCI CLI ツールのセットアップ

OCI CLIを使用するためには、以下の手順を実施する。

1. Oracle Cloud環境で実行するユーザーの作成とグループ設定

Oracle Cloudのハンバーガーメニューをクリックして、「アイデンティティ」→「ユーザー」のメニューを展開する。展開したメニューより「ユーザーの作成」をクリックする。

oraclecloud02_02.png
oraclecloud02_03.png

実行するユーザー名と説明を入力して、「作成」をクリックする。
本記事では、以下の内容で作成しています。

名前 : exec_service
説明 : インスタンス操作

oraclecloud02_04.png

作成したユーザのグループ項目で、「ユーザーをグループに追加」をクリックする。

グループに「Administrators」を選択して、「追加」をクリックする。

oraclecloud02_05.png
oraclecloud02_06.png

2. ユーザーのOCIDを取得

作成したユーザーのOCID項目横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。

oraclecloud02_07.png

3. テナントのOCIDを取得

Oracle Cloudのハンバーガーメニューをクリックして、「管理」→「テナンシ詳細」のメニューを展開する。

テナンシ情報のOCID項目横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。

oraclecloud02_08.png
oraclecloud02_09.png

4. ADWのOCIDを取得

Oracle Cloudのハンバーガーメニューをクリックして、「Autonomous Data Warehouse」のメニューをクリックする。

oraclecloud02_10.png

展開したメニューより対象となるADW Cloudの「表示名」をクリックする。

OCID項目の横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。

oraclecloud02_11.png
oraclecloud02_12.png

5. OCI CLIの構成セットアップ

構成セットアップ時に以下の項目を明示的に指定しました。

設定項目デフォルト設定値
コンフィグファイルの配置場所 /root/.oci/config /u01/app/oci/config/us-ashburn-1 ※1
ユーザーのOCID 本ステップの「2」で取得したID
テナントのOCID 本ステップの「3」で取得したID
アクセスするリージョン us-ashburn-1
(本記事で作成したリージョン)
新規RSA鍵の生成 Y
RSA鍵の生成するディレクトリ /root/.oci /u01/app/oci/config/.rsa
RSA鍵の名称 oci_api_key us-ashburn-1_api_key
パスフレーズ 空(パスワード無し)

※1:構成ファイルは、リージョン毎に定義する必要がある為、対象リージョンが増えることを考慮して、リージョン名で作成しました。

以下のコマンドで構成ファイルのセットアップを実施する。

【サンプルコマンド】
# /u01/app/oci/bin/oci setup config

6. 鍵ファイルの情報確認

「5」で作成した鍵ファイルの内容を以下の内容で確認する。

【サンプルコマンド】
# cat /u01/app/oci/config/.rsa/us-ashburn-1_api_key_public.pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwQ8EAqS24keLCrZBEugi
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
kg+DHv0abD7AMmSdNFPAlgSHn8Y8Qh7Fw0EdnhKoBXdzicJ9DAkEMQX0kvyaMzWs
zQIDAQAB
-----END PUBLIC KEY-----

7. APIキーの設定

Oracle Cloudのハンバーガーメニューをクリックして、「アイデンティティ」→「ユーザー」のメニューを展開する。

展開したメニューより「公開キーの追加」をクリックする。

oraclecloud02_13.png
oraclecloud02_14.png

本ステップの「6」で確認した鍵ファイルの情報を「公開キー」に貼付け、「追加」をクリックする。

oraclecloud02_15.png

8. 動作確認

以下のコマンドでADW Cloud ステータス情報が取得できるか確認する。

【サンプルコマンド】
# /u01/app/oci/bin/oci db autonomous-data-warehouse get --
autonomous-data-warehouse-id "ocid1.aut
onomousdwdatabase.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxtxq" --config-file /u01/app/oci/config/us-ashburn-1

※正常に動作すると「lifecycle-state」に「STOPPED」など状態が表示される。

ステップ4 : OCI CLI ツールによるスケジューリング

起動・停止処理をスクリプト化して、cronなど登録してスケジューリング化する。

1. ADW Cloud 起動停止スクリプトの準備

起動停止のスクリプトを準備するにあたり、以下の点を考慮しました。

  • インスタンスを指定して起動や停止などの処理ができること
  • 利用するリージョンが追加した場合にも対応可能であること
  • 起動または停止時に処理で待機または一定時間経過で終了を選択できること
  • 社内にプロキシがある場合でも実行できること

→サンプルスクリプトのダウンロード

※サンプルスクリプトの動作は確認していますが、実行環境の違いなどにより正常に動作しないことが考えられる為、利用する際は自己責任でお願いします。

2. リストファイル作成

サンプルスクリプトを実行する際に参照するインスタンス名とOCID情報のリストファイルを作成する。

ADWのインスタンス名とOCIDはステップ3で取得した情報を記載する。

※スクリプト用に半角スペースを区切り文字として、ADWインスタンス名とOCIDを記載

【サンプル設定】
# vi /u01/app/oci/config/us-ashburn-1.list

xxx ocid1.autonomousdatabase.oc1.iad.zzzzzzzzzzzzzzzzzzzzzz6wba

3. cronにスクリプトを登録

「1」で作成したスクリプトをcronに登録する。

サンプル設定では、以下の内容で実行されます。

  • インスタンスは毎日9時に起動(起動が完了するまで待機)
  • インスタンスは毎日21時に停止(コマンド実行後、指定時間チェック)
【サンプル設定】
# crontab -e

0 9 * * * bash /unyo/script/adw_ctl.bash us-ashburn-1 xxx start wait
0 21 * * * bash /unyo/script/adw_ctl.bash us-ashburn-1 xxx stop check

xxx : ADW Cloudのインスタンス名

【参考】

OCI CLI でAutonomous Transaction Processing(ATP)に対してもスクリプトを若干修正することで同様の手順で起動・停止を制御することが可能です。

サンプルスクリプトは以下となりますが、利用する際はADWのスクリプト同様自己責任でお願い致します。

→サンプルスクリプトのダウンロード

最後に

最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。

データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。

それでは、次回をお楽しみに!

同じテーマの記事一覧