AutoScalingの作成

AlibabaCloudの基本プロダクトサービスであるAutoscalingの作成方法を解説します。

1. AutoScaling

  Auto Scaling はECSリソースの容量を自動的にスケールイン/スケールアウト調整してくれます。 図 1 ※ESSとは、SDK名やパッケージ名で用いられるAuto Scalingの略称です。(Elastic Scaling Service)


2. コンポーネント

  VPCは、CIDRブロック、VRouter、及びVSwitchで構成されます。

・スケールアウト ECSリソースが増加した際、自動的にECSインスタンスが作成されるので、アクセス遅延や過度のリソース負荷を回避できます。 図 2

・スケールイン ビジネスニーズに伴い、基盤となるECAリソースが低下した場合、自動的にECSインスタンスが削除され、リソースの無駄を省いてくれます。 図 3

・柔軟なリカバリ 異常なECSインスタンスを検知し、自動的にリリースされ、代わりに新規ECSインスタンスが作成されます。 図 4

3. AutoScalingのTerraformについて

  本題、AutoScaling作成に移ります。以下の構成図通り、簡単なソースを作ってみます。

resource "alicloud_ess_scaling_group" "scaling" {
  min_size = 2
  max_size = 10
  scaling_group_name = "tf-scaling"
  vswitch_ids=["${alicloud_vswitch.vsw. *.id}"]
  loadbalancer_ids = ["${alicloud_slb.slb. *.id}"]
  removal_policies   = ["OldestInstance", "NewestInstance"]
  depends_on = ["alicloud_slb_listener.http"]
}

resource "alicloud_ess_scaling_configuration" "config" {
  scaling_group_id = "${alicloud_ess_scaling_group.scaling.id}"
  image_id = "ubuntu_140405_64_40G_cloudinit_20161115.vhd"
  instance_type = "ecs.n2.small"
  security_group_id = "${alicloud_security_group.default.id}"
  active=true
  enable=true
  user_data = "#! /bin/bash\necho \"Hello, World\" > index.html\nnohup busybox httpd -f -p 8080&"
  internet_max_bandwidth_in=10
  internet_max_bandwidth_out= 10
  internet_charge_type = "PayByTraffic"
  force_delete= true
}

resource "alicloud_ess_scaling_rule" "rule" {
  scaling_group_id = "${alicloud_ess_scaling_group.scaling.id}"
  adjustment_type  = "TotalCapacity"
  adjustment_value = 2
  cooldown = 60
}

AutoScalingを作成する時はalicloud_ess_scaling_groupalicloud_ess_scaling_configurationalicloud_ess_scaling_ruleの3つの組み合わせが必要になります。

alicloud_ess_scaling_group

同じアプリケーションシナリオを持つECSインスタンスにてAutoScalingグループリソースを提供するために必要なパラメータです。グループ内のECSインスタンスの最大数と最小数、関連付けられたSLB、RDSインスタンス、およびその他の属性を定義します。

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/ess_scaling_group.html

alicloud_ess_scaling_configuration

alicloud_ess_scaling_configurationはAutoScalingを設定するパラメータです。

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/ess_scaling_configuration.html

alicloud_ess_scaling_rule

AutoScalingのルールリソースを設定するパラメータです。


以下にAutoScalingの実際のサンプルを入れていますので、こちらも参照してみてください。

example: オートスケーリング