3.2. インスタンスを自動的にスケーリングするための heat テンプレートの設定
オーケストレーションサービス (heat) テンプレートを設定して、インスタンスを作成し、トリガー時に、インスタンスを作成およびスケーリングするアラームを設定できます。
注記
この手順では、環境に合わせて変更する必要がある値の例を使用します。
前提条件
- 自動スケーリングサービスを使用して、オーバークラウドをデプロイしました。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
- テレメトリーストレージを自動スケーリングするためのアーカイブポリシーを使用して、オーバークラウドを設定しました。詳細は、「自動スケーリング用の汎用アーカイブポリシーの作成」 を参照してください。
手順
stackユーザーとして環境にログインします。$ source ~/stackrc
自動スケーリンググループのインスタンス設定を保持するディレクトリーを作成します。
$ mkdir -p $HOME/templates/autoscaling/vnf/
-
$HOME/templates/autoscaling/vnf/instance.yamlなどのインスタンス設定テンプレートを作成します。 次の設定を
instance.yamlファイルに追加します。cat <<EOF > $HOME/templates/autoscaling/vnf/instance.yaml heat_template_version: wallaby description: Template to control scaling of VNF instance parameters: metadata: type: json image: type: string description: image used to create instance default: fedora36 flavor: type: string description: instance flavor to be used default: m1.small key_name: type: string description: keypair to be used default: default network: type: string description: project network to attach instance to default: private external_network: type: string description: network used for floating IPs default: public resources: vnf: type: OS::Nova::Server properties: flavor: {get_param: flavor} key_name: {get_param: key_name} image: { get_param: image } metadata: { get_param: metadata } networks: - port: { get_resource: port } port: type: OS::Neutron::Port properties: network: {get_param: network} security_groups: - basic floating_ip: type: OS::Neutron::FloatingIP properties: floating_network: {get_param: external_network } floating_ip_assoc: type: OS::Neutron::FloatingIPAssociation properties: floatingip_id: { get_resource: floating_ip } port_id: { get_resource: port } EOF-
parametersパラメーターは、この新しいリソースのカスタムパラメーターを定義します。 -
resourcesパラメーターのvnfサブパラメーターは、OS::Heat::AutoScalingGroupで参照されるカスタムサブリソースの名前を定義します (例:OS::Nova::Server::VNF)。
-
heat テンプレートで参照するリソースを作成します。
$ cat <<EOF > $HOME/templates/autoscaling/vnf/resources.yaml resource_registry: "OS::Nova::Server::VNF": $HOME/templates/autoscaling/vnf/instance.yaml EOF
インスタンスのスケーリングを制御するための heat のデプロイメントテンプレートを作成します。
$ cat <<EOF > $HOME/templates/autoscaling/vnf/template.yaml heat_template_version: wallaby description: Example auto scale group, policy and alarm resources: scaleup_group: type: OS::Heat::AutoScalingGroup properties: max_size: 3 min_size: 1 #desired_capacity: 1 resource: type: OS::Nova::Server::VNF properties: metadata: {"metering.server_group": {get_param: "OS::stack_id"}} 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 scaledown_policy: type: OS::Heat::ScalingPolicy properties: adjustment_type: change_in_capacity auto_scaling_group_id: { get_resource: scaleup_group } cooldown: 60 scaling_adjustment: -1 cpu_alarm_high: type: OS::Aodh::GnocchiAggregationByResourcesAlarm properties: description: Scale up instance if CPU > 50% metric: cpu aggregation_method: rate:mean granularity: 60 evaluation_periods: 3 threshold: 60000000000.0 resource_type: instance comparison_operator: gt alarm_actions: - str_replace: template: trust+url params: url: {get_attr: [scaleup_policy, signal_url]} query: list_join: - '' - - {'=': {server_group: {get_param: "OS::stack_id"}}} cpu_alarm_low: type: OS::Aodh::GnocchiAggregationByResourcesAlarm properties: description: Scale down instance if CPU < 20% metric: cpu aggregation_method: rate:mean granularity: 60 evaluation_periods: 3 threshold: 24000000000.0 resource_type: instance comparison_operator: lt alarm_actions: - str_replace: template: trust+url params: url: {get_attr: [scaledown_policy, signal_url]} query: list_join: - '' - - {'=': {server_group: {get_param: "OS::stack_id"}}} outputs: scaleup_policy_signal_url: value: {get_attr: [scaleup_policy, alarm_url]} scaledown_policy_signal_url: value: {get_attr: [scaledown_policy, alarm_url]} EOF注記スタックの出力は、情報提供用であり、ScalingPolicy または AutoScalingGroup では参照されません。出力を表示するには、
openstack stack show <stack_name>コマンドを使用します。
関連情報
- オーバークラウドの高度なカスタマイズ ガイド。