皆様、こんにちは。データソリューション部の山本です。
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ユーザで設定しています。
- 社内のネットワークは、プロキシがある環境です。
検証環境概要
環境区分 | 環境情報 | 補足内容 |
---|---|---|
実行サーバ | 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のハンバーガーメニューをクリックして、「アイデンティティ」→「ユーザー」のメニューを展開する。展開したメニューより「ユーザーの作成」をクリックする。
実行するユーザー名と説明を入力して、「作成」をクリックする。
本記事では、以下の内容で作成しています。
名前 : exec_service
説明 : インスタンス操作
作成したユーザのグループ項目で、「ユーザーをグループに追加」をクリックする。
グループに「Administrators」を選択して、「追加」をクリックする。
2. ユーザーのOCIDを取得
作成したユーザーのOCID項目横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。
3. テナントのOCIDを取得
Oracle Cloudのハンバーガーメニューをクリックして、「管理」→「テナンシ詳細」のメニューを展開する。
テナンシ情報のOCID項目横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。
4. ADWのOCIDを取得
Oracle Cloudのハンバーガーメニューをクリックして、「Autonomous Data Warehouse」のメニューをクリックする。
展開したメニューより対象となるADW Cloudの「表示名」をクリックする。
OCID項目の横にある「コピー」をクリックするとOCIDがコピーされるので、テキストなどに保存する。
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のハンバーガーメニューをクリックして、「アイデンティティ」→「ユーザー」のメニューを展開する。
展開したメニューより「公開キーの追加」をクリックする。
本ステップの「6」で確認した鍵ファイルの情報を「公開キー」に貼付け、「追加」をクリックする。
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のスクリプト同様自己責任でお願い致します。
最後に
最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。
データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。
それでは、次回をお楽しみに!
- カテゴリ:
- エンジニアリング