スタックの構築

対象リージョン:東日本第3/西日本第3

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

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

注: 仮想ルータの SNAT通信設定について
  • 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::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は停止します。