Auto Scaling

プロダクト紹介

Auto Scalingとは

Auto Scaling は、変化するビジネスニーズを満たすために、エラスティックコンピューティングリソースの容量を自動的に調整します。 ビジネスニーズの拡大に伴い、ユーザーが設定したスケーリングルールに基づいて、ECS インスタンスが自動的に追加されるため、十分なコンピューティング能力を確保できます。 また、ビジネスニーズが低下すると、自動的に ECS インスタンス数を減らして、コストを削減します。

*

スケールアウト

ビジネスの拡大に伴い、基盤となるリソースが自動的にアップグレードされるので、アクセス遅延や過度のリソース負荷を回避できます。
CloudMonitor を設定すると、ECS インスタンスの使用状況をリアルタイムでモニタリングできます。 たとえば、ECS インスタンスの vCPU 使用率がスケーリンググループの 80% を超えたことを CloudMonitor で検知すると、Auto Scaling はユーザーが設定したスケーリングルールに基づいて、ECS リソースを柔軟に追加します。 その際、適切な数の ECS インスタンスが自動的に作成されます。作成された ECS インスタンスは、Server Load Balancer インスタンスと RDS インスタンスのホワイトリストに自動的に追加されます。 詳細は、Auto Scaling の「スケーリンググループの作成」と CloudMonitor の「Auto Scaling のモニタリング」をご参照ください。

注:Auto Scaling によって ECS リソースがスケールアウトされると、有効なスケーリング設定に基づいて、新規の ECS インスタンスが自動的に作成され、スケーリンググループに追加されます。 ECS コンソールにログインすると、これらの ECS インスタンスに対して起動、停止、接続などの操作を実行できます。

スケールアウト

スケールイン

ビジネスニーズが低下すると、基盤となるリソースが Auto Scaling によって自動的にリリースされ、リソースの無駄を省きます。

CloudMonitor を設定すると、ECS インスタンスの使用状況をリアルタイムでモニタリングできます。 たとえば、ECS インスタンスの vCPU 使用率がスケーリンググループの 30% を下回ったことを CloudMonitor で検知すると、Auto Scaling はユーザーが設定したスケーリングルールに基づいて、ECS リソースを柔軟に減らします。 その際、適切な数の ECS インスタンスが自動的にリリースされます。リリースされた ECS インスタンスは、Server Load Balancer インスタンスと RDS インスタンスのホワイトリストから自動的に削除されます。 詳細は、Auto Scaling の 「削除ポリシー」と CloudMonitor の「Auto Scaling のモニタリング」をご参照ください。

*

柔軟なリカバリ

Auto Scaling のヘルスチェック機能により、スケーリンググループ内の ECS インスタンスのステータスが自動的にモニタリングされるため、スケーリンググループ内の正常な ECS インスタンス数が、ユーザーの設定した最小値を下回ることはありません。

ECS インスタンスが正常ではないことを Auto Scaling で検知すると、異常な ECS インスタンスは自動的にリリースされ、新規の ECS インスタンスが作成されます。作成されたインスタンスは、Server Load Balancer インスタンスと RDS インスタンスのホワイトリストに追加されます。 詳細は、「異常なインスタンスの削除」をご参照ください。

*

利点

ここでは、Auto Scaling の機能、プロダクトの特徴、およびシナリオについて説明します。

概要

  • アプリケーションのニーズの増減に応じて、ECS インスタンスを自動的に追加または削除します。
  • Sever Load Balancer の ECS インスタンスを自動的に設定します。
  • ApsaraDB for RDS のホワイトリストを設定します。

特徴

  • オンデマンド: 需要曲線に合わせて、リアルタイムでリソースが調整されます。 需要が急増した場合でも、コンピューティング能力を心配する必要はありません。
  • 自動化: 設定したポリシーに基づいて、ECS インスタンスが自動的に作成およびリリースされます。 手動の操作をしなくても、Server Load Balancer と RDS のホワイトリストが設定されます。
  • 柔軟性: スケジュールされたスケーリング、モニタリング対象インスタンスに基づく動的スケーリング、固定数のインスタンスのスケーリング、および異常なインスタンスの自動置換を設定できます。 また、API を介して外部モニタリングシステムを使用することもできます。
  • インテリジェント: 複雑なシナリオに適用できます。

シナリオ

  • ビデオ共有: 休日や催事ではワークロードが急増します。 コンピューティングリソースをリアルタイムで自動的に追加する必要があります。
  • ビデオストリーミング: 需要曲線を手動で予測することは困難です。 CPU 使用率、ワークロード、帯域幅に基づいて、コンピューティングリソースをスケールアウトする必要があります。
  • ゲーム: 12 時 00 分から需要の増加が始まり、18 時 00 分から 21 時 00 分 まで続くため、スケジュールされたスケーリングが必要です。

クイックスタート

操作手順

ここでは、Auto Scaling ソリューションを作成するための手順を説明します。

作成

*
  • スケーリンググループを作成します (CreateScalingGroup)。 スケーリンググループ内の ECS インスタンスの最小値と最大値を設定し、関連付ける Server Load Balancer と RDS インスタンスを選択します。
  • スケーリング設定を作成します (CreateScalingConfiguration)。 イメージ ID やインスタンスタイプなど、Auto Scaling の ECS インスタンスの属性を設定します。
  • 手順 2 で作成したスケーリング設定を使用して、スケーリンググループを有効にします (EnableScalingGroup)。
  • スケーリングルールを作成します (CreateScalingRule)。 たとえば、N 個の ECS インスタンスを追加する、などです。
  • スケジュール済みタスクを作成します (CreateScheduledTask)。 たとえば、手順 4 で作成したスケーリングルールを午前 12:00 にトリガーする、などです。
  • アラームタスクを作成します (CloudMonitor API PutAlarmRule)。 たとえば、平均 (最大または最小も可) CPU 使用率が 80 %以上の場合に ECS インスタンスを 1 つ追加する、などです。

Auto Scaling サービスの有効化と許可

ここでは、Auto Scaling サービスの有効化と許可を行う API について説明します。

許可の手順

  • Auto Scaling コンソールにログインします。
  • [権限設定] をクリックして RAM コンソールに移動し、権限を付与します。
  • [AliyunESSDefaultRole] を選択し、[許可に同意] をクリックします。
  • Auto Scaling コンソールへ戻り、ページを更新します

次の手順

許可を完了したら、Auto Scaling サービスを使用できます。 次に、中国 (上海) などの目的のリージョンに、最初のスケーリンググループを作成します。 詳細は、「スケーリンググループの作成」をご参照ください。

許可一覧

AliyunESSDefaultRole ロールにより、Auto Scaling は以下の Alibaba Cloud リソースの呼び出しがデフォルトで許可されています。

  • ECS 関連の許可
    許可名 説明
    ecs:RunInstances 必要に応じて、1 つ以上の ECS インスタンスを作成します。
    ecs:CreateInstance ECS インスタンスを作成します。
    ecs:StartInstance ECS インスタンスを起動します。
    ecs:AllocatePublicIpAddress ECS インスタンスにパブリック IP アドレスを割り当てます。
    ecs:StopInstance ECS インスタンスを停止します。
    ecs:DeleteInstance ECS インスタンスを削除します。
    ecs:DescribeInstances ECS インスタンスリストを照会します。
    ecs:DescribeInstanceAttribute ECS インスタンスの属性を照会します。
    ecs:ModifyInstanceAttribute ECS インスタンスの属性を修正します。
    ecs:DescribeSecurityGroupAttribute セキュリティグループの属性を照会します。
    ecs:DescribeSnapshots スナップショットリストを照会します。
    ecs:DescribeKeyPairs キー ペアリストを照会します。
  • SLB 関連の許可
    許可名 説明
    slb:DescribeLoadBalancerAttribute SLB インスタンス情報を照会します。
    slb:RemoveBackendServers SLB インスタンスからバックエンドサーバーを削除します。
    slb:DescribeHealthStatus SLB インスタンスのバックエンドサーバーのヘルスチェックを実行します。
    slb:AddBackendServers SLB インスタンスにバックエンドサーバーを追加します。
    slb:SetBackendServers バックエンドサーバーの重み付けを設定します。
  • RDS 関連の許可
    許可名 説明
    rds:ModifySecurityIps RDS インスタンスの IP アドレスホワイトリストを変更します。
    rds:DescribeDBInstanceAttribute RDS インスタンスの詳細を表示します。
    rds:DescribeTaskInfo RDS タスク情報を照会します。
    rds:DescribeDBInstanceIPArrayList RDS インスタンスの IP アドレスホワイトリストを表示します。
  • VPC 関連の許可
    許可名 説明
    vpc:DescribeVpcs VPC リストを照会します。
    vpc:DescribeVSwitches VSwitch リストを照会します。
  • MNS 関連の許可
    許可名 説明
    mns:ListTopic アカウントのトピックリストを一覧表示します。
    mns:ListQueue アカウントのキュー リストを一覧表示します。
    mns:SendMessage メッセージを送信します。
    mns:PublishMessage メッセージを公開します。

AliyunESSDefaultRole の完全なポリシーリストは、以下のとおりです。


	{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "ecs:CreateInstance",
        "ecs:RunInstances",
        "ecs:StartInstance",
        "ecs:AllocatePublicIpAddress",
        "ecs:StopInstance",
        "ecs:DeleteInstance",
        "ecs:DescribeInstances",
        "ecs:DescribeInstanceAttribute",
        "ecs:ModifyInstanceAttribute",
        "ecs:DescribeSecurityGroupAttribute",
        "ecs:DescribeImages",
        "ecs:DescribeSnapshots",
        "ecs:DescribeKeyPairs",
        "slb:DescribeLoadBalancerAttribute",
        "slb:RemoveBackendServers",
        "slb:DescribeHealthStatus",
        "slb:AddBackendServers",
        "slb:SetBackendServers",
        "rds:ModifySecurityIps",
        "rds:DescribeDBInstanceAttribute",
        "rds:DescribeTaskInfo",
        "rds:DescribeDBInstanceIPArrayList"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "vpc:DescribeVpcs",
        "vpc:DescribeVSwitches"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "mns:ListTopic",
        "mns:ListQueue",
        "mns:SendMessage",
        "mns:PublishMessage"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "ecs.aliyuncs.com"
        }
      }
    }
  ]
}
					

クイックスタートガイド(初級)

このクイックスタートガイドでは、基本的な Auto Scaling の設定方法を説明します。ECS インスタンスの自動購入、Server Load Balancer への ECS インスタンスの自動追加、RDS のホワイトリストへの IP アドレスの自動追加方法を説明します。

次の 2 ステップを実行することで設定可能です。

*

ステップ 1: スケーリンググループの作成

スケーリンググループは、同じアプリケーションが稼動する ECS インスタンスの集合です。スケーリンググループでは、グループ内で稼動する ECS インスタンスの最大数と最小数や、関連する Server Load Balancer インスタンス、RDS インスタンスなどを定義します。

  1. スケーリンググループリスト ページで、スケーリンググループを作成 をクリックします。
  2. スケーリンググループの リージョン を選択し、スケーリンググループ名 を入力します。
  3. スケーリングに許可される最大インスタンス数 と スケーリングに許可される最小インスタンス数 を 1 に設定します。これにより、スケーリングソリューション全体を作成した後で、1 個の ECS インスタンスが自動的に作成されます。
  4. Server Load Balancer インスタンスを選択します。指定された Server Load Balancer インスタンスに対して設定されているすべてのリスナーポートについて、ヘルスチェックを有効にしておく必要があります。
    スケーリンググループの作成
  5. データベース インスタンスを選択します。[RDS データベースの選択] ダイアログボックスを表示します ([RDS データベースの選択] の図を参照してください)。
  6. RDS データベースな選択した後、[送信] をクリックします。

スケーリング設定の作成

スケーリング設定は、自動スケーリングに使用される ECS インスタンス情報を定義します。ECS インスタンスをスケーリンググループに自動的に追加する場合、自動スケーリングはスケーリング構成に基づいて ECS インスタンスを作成します。

  1. スケーリンググループリスト ページで希望するスケーリンググループの横の 管理 をクリックします。
  2. スケーリング設定ページにて、スケーリング設定の作成 をクリックします。
  3. 必要な ECS インスタンスタイプを選択します。
  4. イメージ、セキュリティグループなどを選択します。
  5. スケーリング設定の名前を入力します。
  6. 作成 をクリックして、確認に進みます。
    スケーリング設定の作成