要求事項
繁忙期に仮想サーバの増設が必要と見込まれている場合に、あらかじめ仮想サーバ増設を行っておきたい、といった要求事項に対するパターンです。
対応するK5デザインパターン概要
業務の繁忙期など、負荷増大があらかじめ予測できる場合には、オートスケールの機能に含まれるオートスケールスケジューラー機能を利用することでスケールアウト運用を自動化することが可能です。
構造 (イメージ図)
実装サンプル
1.オートスケールの設定
2.スケジュールの登録(API)
項目 | 内容 |
---|
$NAME | オートスケールのスケジュール名(任意) (重要:リージョン内の全プロジェクトで一意である必要があります。) |
$METHOD | "POST"で固定 |
項目 | 内容 |
---|
$EP | オーケストレーションのエンドポイントhttp版(sなし) |
$PROJECT_ID | スケジュール処理を実行するプロジェクトID |
$STACK_NAME | オートスケールのHeatテンプレートのスタック名 |
$STACK_ID | オートスケールのHeatテンプレートのスタックID |
$RESOURCE_NAME | Heatテンプレートに記載のオートスケールポリシーの名前 |
$URL | $EP/v1/$PROJECT_ID/stacks/$STACK_NAME/$STACK_ID/resources/$RESOURCE_NAME/signal |
実行日時 | 起動時刻は「"time" : "* * * * *"」をcronの指定方法と同様に変更して調整可能(UTCで指定する) |
- 実行API(例:スケジュールを毎月1日 15:00に調整)
curl -i $AUTOSCALE/autoscale_schedulers -X POST -H "X-Auth-Token: $OS_AUTH_TOKEN" -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"name" : "'$NAME'" ,"time" : "0 15 1 * *","method" : "'$METHOD'","url" : "'$URL'","project_id" : "'$PROJECT_ID'"}'
3.スケジュールリストの参照(API)
curl -s $AUTOSCALE/autoscale_schedulers -X GET -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .
4.スケジュールの削除(API)
curl -i $AUTOSCALE/autoscale_schedulers/$NAME -X DELETE -H "X-Auth-Token: $OS_AUTH_TOKEN"
メリット・効果
オートスケールスケジューラ機能を利用した場合のメリット・効果は以下の通りです。
- 業務の繁忙期など、事前に予測できる負荷増大に対するスケールアウト運用の自動化
- 仮想サーバ群の自動拡張・縮小によるリソースの最適化と運用コスト抑制
- 負荷分散とオートスケールによる拡張性向上
- 仮想サーバ復旧処理と仮想サーバ拡張処理の共通化による運用・保守性向上
注意事項
- 事前にオートスケールポリシーを有するスタックを作成してください。
スケジュール登録は対象のスタックを作成したユーザと同じユーザで登録してください。
- WindowsやRHELのOSでは、OS利用料金は月額で課金されます。
スケールアウト処理が発生すると、その都度新規にサーバを作成しますので、スケールアウト処理の回数分OSの料金が発生します。
その他
特にありません。
関連資料
(2018年2月検証)