スタックの構築
対象リージョン:東日本第3/西日本第3
テンプレート(yaml形式)に定義されたリソース群を一括配備します。配備されたリソース一式は、スタックとして管理します。
テンプレートの詳細については、以下を参照してください。
- SNAT通信を行う場合、OS::Neutron::Routerの Optional Propertiesの value_specsパラメータに nuage_underlayを指定する必要があります。
-
デフォルトではSNAT機能が無効です。SNAT機能を有効にするには、external_gateway_infoパラメータ、および SNAT通信可否(nuage_underlay)パラメータの指定が必要です。nuage_underlayパラメータには、SNAT通信なしの場合は「off」、SNAT通信ありの場合は「snat」を指定してください。
設定例
test_router2:
type: OS::Neutron::Router
properties:
external_gateway_info: { network: "fip-net" }
name: test_router2
value_specs: { nuage_underlay: "snat" }
nuage_underlayパラメータの詳細については、APIリファレンス(東日本リージョン3/西日本リージョン3)の「API詳細(Routers)」を参照してください。
監視サービスのアラームを利用したオートスケール
監視サービスのアラームをトリガーとして実行されるオートスケールのスタック定義について説明します。
アラームのリソース種別には OS::PMM::Alarm を使用します。テンプレートに定義する項目は以下のとおりです。
項目 | 値 | 必須 |
---|---|---|
name | アラームの名前を指定する | ◯ |
description | アラームの説明を指定する | |
target_type |
監視する仮想サーバを指定する
|
◯ |
object_id |
仮想サーバを識別するリソースIDを指定する
|
◯ |
metric_type |
アラームの監視項目を以下から指定する
|
◯ |
interval_duration | 監視項目の監視を実行する(監視項目の値を計測する)間隔(分)を指定する | |
from | しきい値との比較に使用する監視項目の値を計測する期間(分)を指定する | |
aggregation_function |
監視項目の測定方法を以下から指定する 仮想サーバごとに監視データを算出する場合
すべての仮想サーバを集計して1つの値を算出する場合
|
◯ |
comparison_function |
監視項目としきい値の比較方法を以下から指定する
|
◯ |
threshold | 監視項目に設定するしきい値(単位は監視項目に依存する)を指定する | ◯ |
alert_count | 監視条件が満たされた状態が何分間続いたらアラートを発するかを指定する | |
severity |
アラームレベルを指定する(アラームの情報としてだけ利用可能)
|
|
enabled |
アラームの状態を指定する
|
|
nodata_alert |
監視データ取得不可時の通知有無を指定する
注: アラームが複数の仮想サーバを監視しており、そのうち一部の仮想サーバからだけ監視データが取得できない場合、通知は実行されません。各仮想サーバごとに監視データが取得できない状態を監視する必要がある場合は、それぞれ個別にアラームを作成し、そのうえで監視データ取得不可通知を有効にしてください。
|
|
alarm_action |
アラームアクションを以下から指定する(複数指定可)
注: アラームをトリガーにオートスケールを実行するためには、アラームアクションにautoscaleを設定する必要があります。
|
|
notification_url |
アラームが有効になったことを通知する先のURLを指定する アラームをトリガーにオートスケールを実行するためには、スケーリングポリシーの signal_urlを設定する必要があります。 以下の値を固定で設定してください。 { get_attr: [scaleup_policy, signal_url] } |
◯ |
instances |
監視対象とする仮想サーバIDをリスト形式で指定する 例)["22c91117-08de-4894-9aa9-6ef382400985","f5dc173b-6804-445a-a6d8-c705dad5b5eb"] 注: target_typeで「aggregate」を指定した場合に有効です。この項目を設定すると、集合体(aggregate)が自動的に作成されます。object_idと instancesを同時に指定した場合、instancesの内容が優先されます。
|
以下のテンプレートは、CPU使用率に基づいて仮想サーバの数をオートスケールします。
スタック定義の記述例:
heat_template_version: 2017-02-24
description: Example auto scale group, policy and alarm
resources:
scaleup_group:
type: OS::Heat::AutoScalingGroup
properties:
cooldown: 60
desired_capacity: 1
min_size: 1
max_size: 3
resource:
type: OS::Nova::Server
properties:
key_name: sample_key
block_device_mapping_v2:
[{boot_index: '0', device_name: '/dev/vda', volume_size: 10, image: 'sample_images', delete_on_termination: true}]
flavor: S3-1
name: "test_vm"
networks:
- network : test-net
scaleup_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: {get_resource: scaleup_group}
cooldown: 60
scaling_adjustment: 1
alarm:
type: OS::PMM::Alarm
properties:
name: 'alarm_vm_cpu'
target_type: 'stack'
object_id: { get_param: "OS::stack_id" }
metric_type: 'instance.cpu.usage'
interval_duration: '1m'
from: '1m'
aggregation_function: 'avg'
comparison_function: 'above'
threshold: 80
alert_count: 1
alarm_action: ['autoscale']
autoscale_url: { get_attr: [scaleup_policy, signal_url] }
監視サービスのアラーム(旧版)を利用したオートスケール
アラームをトリガーとして実行されるオートスケールのスタック定義について説明します。
アラームのリソース種別には OS::AppFormix::Alarmを使用します。テンプレートに定義する項目は以下のとおりです。
項目 | 値 | 必須 |
---|---|---|
alarm_name | アラームの名前を指定する | ◯ |
alarm_metric |
アラームの監視項目を以下から指定する
|
◯ |
threshold | 監視項目に設定するしきい値(単位は監視項目に依存する)を指定する | ◯ |
aggregation_function |
監視項目の測定方法を以下から指定する
|
◯ |
comparison_function |
監視項目としきい値の比較方法を以下から指定する
|
◯ |
duration | しきい値との比較に使用する監視項目の値を計測する秒数を指定する | ◯ |
num_intervals | 監視項目の監視を実行する(監視項目の値を計測する)間隔を指定する | ◯ |
num_exception_intervals | アラームが有効になった場合、アラームを有効状態に設定し続ける間隔を指定する | ◯ |
project_id |
アラームを適用する仮想サーバのプロジェクトIDを指定する 注: project_id か aggregate_id のどちらか一方を必ず指定してください。
|
|
aggregate_id |
テンプレートで作成された仮想サーバを指定する 以下の値を固定で設定してください。 { GET_PARAM: "OS::STACK_ID" } 注: project_id か aggregate_id のどちらか一方を必ず指定してください。
|
|
notification_url |
アラームが有効になったことを通知する先のURLを指定する アラームをトリガーとしたオートスケールのためには、スケーリングポリシーのsignal_urlを設定する必要があります。 以下の値を固定で設定してください。 { get_attr: [scaleup_policy, signal_url] } |
◯ |
以下のテンプレートは、CPUの応答有無に基づいて仮想サーバの数をオートスケールします。
スタック定義の記述例:
description: Example auto scale group, policy and alarm
resources:
scaleup_group:
type: OS::Heat::AutoScalingGroup
properties:
cooldown: 60
desired_capacity: 1
min_size: 1
max_size: 3
resource:
type: OS::Nova::Server
properties:
key_name: sample_key
block_device_mapping_v2:
[{boot_index: '0', device_name: '/dev/vda', volume_size: 10, image: 'sample_images', delete_on_termination: true}]
flavor: S3-1
name: "test_vm"
networks:
- network : test-net
scaleup_policy:
type: OS::Heat::ScalingPolicy
properties:
adjustment_type: change_in_capacity
auto_scaling_group_id: {get_resource: scaleup_group}
cooldown: 60
scaling_adjustment: 1
alarm:
type: OS::AppFormix::Alarm
properties:
alarm_name: 'alarm_vm_cpu'
alarm_metric: 'cpu.usage'
aggregation_function: 'average'
comparison_function: 'above'
duration: 60
num_intervals: 1
num_exception_intervals: 1
threshold: 80
aggregate_id: { get_param: "OS::stack_id" }
notification_url: { get_attr: [scaleup_policy, signal_url] }
- スタックが配備されると、仮想サーバ(test_vm)が作成されます。
- アラーム(alarm_vm_cpu)は仮想サーバのCPU使用率(しきい値は80%)を監視します。
- アラームが有効の場合、scaleup_policyは60秒ごとに1台仮想サーバを追加します。
- Max_sizeに指定した値まで仮想サーバが追加されると、scaleup_policyは停止します。