皆様、こんにちは。データソリューション部の山本です。
Oracle Analytics Cloud(以下、OAC)のに対するインスタンスの起動停止スケジューリングをテーマとした記事となります。
2019年10月現在ですが、Cloudのインターフェースで起動や停止するスケジューリング機能がないです。ユニバーサルクレジットでは、使用した時間分課金されるので、お客様へ提供するにあたりコスト面を考慮してPaaS Service Manager(以下、PSM)CLIツールによるインスタンスの起動・停止を検討しました。(→ADW Cloud のインスタンスの起動・停止はこちら)
本記事では、Oracle社のマニュアルやサポート、コミュニティサイトなどのWeb情報、私自身の経験などを元に検証しました。クラウド全般的に言える内容ではありますが、クラウド環境は日々改善や機器増強され、性能面の強化などが頻繁に発生しています。その為、本記事の検証結果は同様に実施した検証と異なる可能性がございますが、ご容赦の程宜しくお願いします。
本件は過去に対応した案件を2019年10月に再確認した内容です。
前提内容
- 本記事を作成するにあたり、Oracle Cloudの表示言語は日本語で設定しています。
- OACのインスタンスは「us-ashburn-1」に作成した状態となります。
- 社内のLinux環境(仮想)にCLIツールを導入してOracle Cloudにアクセスしています。
- Linuxの環境はrootユーザで設定しています。
- 使用したネットワークにプロキシ環境があります。
検証環境概要
環境区分 | 環境情報 | 補足内容 |
---|---|---|
実行サーバ | Red Hat Enterprize Linux 7.6 | 最小構成でインストール |
psm 1.1.28 | 2019年10月時点の導入バージョン | |
python 3.6.9 | PSM CLIの前提バージョンを考慮 |
インスタンス起動停止のスケジューリング化
インスタンスの起動・停止をスケジューリング化する為には、以下のステップで環境を準備する必要があります。
- ステップ1:PSM CLI ツールのインストール事前準備
- ステップ2:PSM CLI ツールのインストール
- ステップ3:PSM CLI ツールのセットアップ
- ステップ4:PSM CLI ツールによるスケジューリング
ステップ1:PSM CLI ツールのインストール事前準備
PSM CLIはPython 3.3以上がツールの要件となり、pythonのサイトからソース等をダウンロードしてコンパイルする必要があります。本記事では、ソースファイルをコンパイルする手順で環境を準備しています。
1. ソースのコンパイル環境の準備
ソースファイルをコンパイルする環境として、Linux環境に以下のモジュールをインストールします。本手順では、DVDに同梱しているモジュールをyumのリポジトリとしてインストールしています。
モジュール名 | 備考 |
---|---|
make | 「openssl-devel」を導入していない環境では、PythonからPIPツールが実行できない場合がある。 参考:Oracle公式サイト |
gcc | |
zlib-devel | |
bzip2-devel | |
openssl-devel | |
ncurses-devel | |
sqlite-devel | |
readline-devel | |
tk-devel | |
wget | 最小構成ではインストールされない為、追加でインストール |
# yum -y install <モジュール名>
2. pythonモジュールのダウンロード
wgetでプロキシが使用できるように設定して、pythonのサイトよりモジュールをダウンロードする。
# vi ~/.wgetrc 追加する設定内容 http_proxy=http://xx.xx.xx.xx:yyyy https_proxy=http://xx.xx.xx.xx:yyyy ftp_proxy=http://xx.xx.xx.xx:yyyy xx.xx.xx.xx → プロキシのIPアドレス yyyy → プロキシのポート番号
# wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
※Python 3.7系と3.8系でPSMを導入するとエラーになったので、3.6系の最新バージョンをインストールしました。
3. pythonモジュールのインストール
pythonのインストールパスを指定し、以下のサンプルコマンドを元にソースをコンパイルおよびインストールする。
# tar -zxvf Python-3.6.9.tgz # cd Python-3.6.9 # ./configure --prefix=/u01/app/python # make # make install
※Linuxのスペックが影響しますが、検証した環境では上記が完了するまで10分ぐらい掛かりました。
4. python環境の初期設定
デフォルトで定義されているpython関連のシンボリックリンクを更新して、インストールしたモジュールのバージョンを確認する。
# ln -nfs /u01/app/python/bin/python3 /usr/bin/python # ln -nfs /u01/app/python/bin/pip3 /usr/bin/pip # python --version Python 3.6.9 #
5. yumで使用するpythonの設定
yumが使用されているpythonのバージョンは2系となり、3系のpythonを使用するとエラーになります。その為、yumで使用するバージョンを以下のサンプル設定を元に2系に変更する。
# vi /usr/bin/yum
変更する内容はファイルの先頭行を以下の内容に変更
修正前)#!/usr/bin/python
修正後)#!/usr/bin/python2
マジックナンバーを「python2」に変更
ステップ2:PSM CLI ツールのインストール
PSM CLIのモジュールをダウンロードする方法としては、Oracle Cloudのサイトからダウンロードする方法とREST APIを利用した方法があります。本ステップでは、Oracle Cloudのサイトからダウンロードする方法を紹介します。REST APIを利用したダウンロードは、本ステップの【参考】で紹介します。
1. Oracle Cloudサイトからモジュールのダウンロード
Oracle Cloudのハンバーガーメニューをクリックして、「プラットフォーム・サービス」→「Analytics」のメニューを展開する。
Analytics Cloudのサイト右上でユーザのマークをクリックし、「ヘルプ」 → 「Download」のメニューを展開する。
Download Centerのポップアップ画面で、ダウンロードマークをクリックし、ファイルをダウンロードする画面がダウンロードを開始する。
ダウンロード後、「閉じる」でポップアップ画面を閉じ、「psmcli.zip」を設定するサーバにアップロードする。
【参考】モジュールのダウンロード(REST API編)
rootユーザ(実行するユーザ)のホームディレクトリに以下の内容を参考に設定を追加する。
# vi ~/.curlrc 追加する設定内容 proxy = "http://xx.xx.xx.xx:yyyy" xx.xx.xx.xx → プロキシのIPアドレス yyyy → プロキシのポート番号
ダウンロードする際に必要な以下の情報を確認して、サンプルコマンドを参考にcurlでファイルをダウンロードする。
設定項目 | 項目の説明 | 設定値 |
---|---|---|
AREA | 通信先となる REST API サーバ | us |
IDENTITYDOMAIN | アイデンティティドメイン名 | idcs-xxxxxxxxxx |
USER | ログインするユーザ名 | xxxxx@system-exe.co.jp |
PASSWD | ログインするユーザのパスワード | xxxxxxxxx |
# export AREA=us # export IDENTITYDOMAIN=idcs-xxxxxxxxxx # export USER=xxxxx@system-exe.co.jp # export PASSWD=xxxxxxxxx # curl -v -X GET -u ${USER}:${PASSWD} -H X-ID-TENANT-NAME:
${IDENTITYDOMAIN} https://psm.${AREA}.ora clecloud.com/paas/core/api/v1.1/cli/${IDENTITYDOMAIN}/client -o
psmcli.zip
2. モジュールのインストール
rootユーザ(実行するユーザ)のコマンドラインでプロキシの設定をしてpythonのpipツールでpsmをインストールする。
# 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 → プロキシのポート番号 # pip install -U psmcli.zip
3. シンボリックリンクの作成
psmはインストールしたpython配下のディレクトリに配置される為、シンボリックリンクを作成して、使い易いように設定する。
# mkdir -p /u01/app/psm # ln -s /u01/app/python/bin /u01/app/psm/bin
4. バージョンの確認
以下のコマンドでインストールしたpsm cliツールのバージョンを確認する。
# /u01/app/psm/bin/psm --version Oracle PaaS CLI client Version 1.1.28 #
ステップ3:PSM CLI ツールのセットアップ
PSM CLIを使用するためには、以下の手順でセットアップする。
1. 利用環境の設定
利用する環境の情報を確認して、サンプルコマンドを参考にセットアップする。
設定項目 | 項目の説明 | 設定値 |
---|---|---|
Username | ツールを実行ユーザ名 | xxxxx@system-exe.co.jp |
Password | ツールを実行ユーザのパスワード | xxxxxxxxx |
Retype Password | ツールを実行ユーザのパスワード(再) | xxxxxxxxx |
Identity domain | アイデンティティドメイン名 | idcs-xxxxxxxxxx |
Region | 使用するリーション名 | us |
Output format | 出力タイプの選択 | short |
Use Oauth? | Oauth経由でPSM REST APIと通信 | n |
# /u01/app/psm/bin/psm setup Username: xxxxx@system-exe.co.jp Password: Retype Password: Identity domain: idcs-xxxxxxxxxx Region [us]: us Output format [short]: short Use OAuth? [n]: n
ステップ4:PSM CLI ツールによるスケジューリング
起動・停止処理をスクリプト化して、cronなど登録してスケジューリング化する。
1. OAC 起動停止スクリプトの準備
起動停止のスクリプトを準備するにあたり、以下の点を考慮しました。
- インスタンス指定で起動や停止などの処理ができること
- 起動または停止時に処理で待機または一定時間経過で終了を選択できること
- プロキシがある場合でも実行できること
※サンプルスクリプトの動作は確認していますが、実行環境の違いなどにより正常に動作しないことが考えられる為、利用する際は自己責任でお願いします。
2. cronにスクリプトを登録
「1」で作成したスクリプトをcronに登録する。
サンプル設定では、以下の内容で実行されます。
- インスタンスは毎日9時に起動(起動が完了するまで待機)
- インスタンスは毎日21時に停止(コマンド実行後、指定時間チェック)
# crontab -e 0 9 * * * bash /unyo/script/oac_ctl.bash xxx start wait 0 21 * * * bash /unyo/script/oac_ctl.bash xxx stop check
xxx : OACのインスタンス名
最後に
最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。
データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。
それでは、次回をお楽しみに!
- カテゴリ:
- エンジニアリング