スタックの構築(東日本リージョン3/西日本リージョン3)

テンプレート(yaml形式)に定義されたリソース群を一括配備します。配備されたリソース一式は、スタックとして管理します。

テンプレートの詳細については、以下を参照してください。

アラームを利用したオートスケール

アラームをトリガーとして実行されるオートスケールのスタック定義について説明します。

アラームのリソース種別にはOS::AppFormix::Alarmを使用します。テンプレートに定義する項目は以下のとおりです。

注: OS::AppFormix::AlarmはOpenStack Resource Typesに記述されていない独自のリソース種別です。
表 1. スタック定義の指定項目
項目 必須
alarm_name アラームの名前を指定する
alarm_metric

アラームの監視項目を以下から指定する

  • cpu.usage
  • memory.usage
  • network.ingress.bit_rate
  • network.ingress.packet_rate
  • network.ingress.errors
  • network.ingress.drops
  • network.egress.bit_rate
  • network.egress.packet_rate
  • network.egress.errors
  • network.egress.drops
threshold 監視項目に設定するしきい値(単位は監視項目に依存する)を指定する
aggregation_function

監視項目の測定方法を以下から指定する

  • average
  • max
  • min
  • sum
comparison_function

監視項目としきい値の比較方法を以下から指定する

  • below
  • equal
  • above
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は停止します。