情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

OpenStackCeilometer+Heatを使ったオートスケール(第2回)Heat-templateの解説

前回はオートスケールって何?とオートスケールを考慮した設計についてお話しました。今回から本題に入りたいと思います。Heat-Templateの書き方です



前回はオートスケールって何?とオートスケールを考慮した設計についてお話しました。
今回から本題に入りたいと思います。

4部構成となっています。


オートスケールを考慮したHeat-Templateの書き方。

使用可能なHeat-Templateの種類

使用可能なテンプレート形式は、
    Heat Orchestration Template (HOT)
    CloudFormation-compatible format (CFN)
の2種類です。今回はHOTの方を例にとり解説していきます。

コミュニティからもいろいろなheat-templateが公開されているので参考になるかと思います。
今回紹介するテンプレート例はコミュニティのHeat-templateを元にしています。
参考:https://github.com/openstack/heat-templates

Heat-Templateの書き方

オートスケールに必要な要素は3個

1) AutoScalingGroup
  何をスケールアウトさせるか。
2) ScalingPolicy
  スケールアウトするときのルールを定義します。
  1回のアラートで何個増やすかなど。
3) Alarm
  リソース監視を定義
  閾値超えたらアラームを上げ、そのアラームがScalingPolicyに拾われるようにします。

まずはHeat-Templateの全体像について解説します。

Heat共通の項目については省略します。
「図 3 VMが1個増えるだけ」を例にとると、テンプレート内の要素はこんな形になっています。

図 8 VMだけオートスケールするテンプレート

1) VMのmetadata設定で「このIDで監視します」と定義する。
Metadataの設定を忘れると、監視されないためオートスケールが発動されません。
2) このIDがmetadataに入ったVMを監視します。と定義する。
  1) と対をなす設定です。
3) 監視設定にHitしたらScalingPolicyを呼び出す。
4) オートスケール実行。リソースを増減させます。


AutoScalingGroup ScalingPolicy Alarm これら3要素の書き方は、
Horizonから、オーケストレーションのリソース種別を見ると詳しい書き方が載っています。
これを参考にしながら解説していきます。


図 9 Heat リソース種別

OS::Heat::AutoScalingGroup

まずは「図 8 VMだけオートスケールするテンプレート」の上から解説していきます。

AutoScalingGroupは" OS::Heat::AutoScalingGroup"です。これを開くと書き方の解説が出てきます。
この中に書かれているもの全てを使う必要は無いです。必須なものと必要なものを選んで使ってください。
Resourceで別のheat-templateを呼び出すことが出来るので、スケールアウトする対象が複雑な構成であれば、別ファイルにしたほう可読性が上がります。

最低限↓の項目があれば十分です。

min_size

最低リソース数

max_size

最大リソース数

Resource

スケールアウトさせるリソース
Heat-templateを呼び出すこともできる。

desired_capacity

維持しておきたいリソース数




図 10 AutoScalingGroup 説明欄

OS::Heat::ScalingPolicy

同じようにHorizonからリソース種別の詳細を見ると、解説が書かれていますが、
ここではおまじないのようなものだと思って使いまわしてください。
一応変更するパラメータだけ解説します。

Cooldown

更新間隔

scaling_adjustment

何個スケールさせるか。
+1で1個増加
-1で1個減少

OS::Ceilometer::Alarm

最後に、Ceilometerの監視設定になります。
オートスケールを発動させるための監視設定を定義します。

Description

設定の名前

meter_name

Ceilometer meter-listに出てくる監視アイテム。
有効にする場合は、
/etc/ceilometer/pipeline.yamlに設定を追加する必要有。

Statistic

統計値として何を使うか。
[count, avg, sum, min, max]

Period

更新間隔

evaluation_periods

統計間隔(分)

Threshold

閾値

comparison_operator

比較演算子
[ge(=<), gt(=>), eq(=), ne(!=), lt(>), le(<)]

alarm_actions

どのアクションを実行するか
OS::Heat::ScalingPolicyを実行します。

さいごに

Heat-Templateの基本的な書き方は以上です。どんなに複雑な構成になろうとも、基本はこれらを組み合わせることで対応可能できます。
コミュニティからもいろいろなHeat-Template例が出ていますので参考になるかと思います。
次回はオートスケールを実際に動かしてみます。

OpenStack®はOpenStack, LLCの登録商標又は商標です。
4部構成となっています。
連載シリーズ
テクノロジーコラム
著者プロフィール
深津 颯騎
深津 颯騎
NTTソフトウェア株式会社