Auto Scaling を使用して、ECS インスタンスとマネージドインスタンス (Cloud Assistant を通じて登録された Alibaba Cloud 以外のサーバー) をまとめて管理します。マネージドインスタンスに CloudMonitor エージェントをインストールし、スケーリンググループに追加すると、Auto Scaling はすべてのインスタンスを集中監視し、監視メトリクスに基づいて ECS インスタンスを自動的にスケーリングします。
前提条件
-
Alibaba Cloud アカウント。お持ちでない場合は、Alibaba Cloud アカウントを作成してください。
-
パブリックインターネットにアクセスできる Alibaba Cloud 以外のサーバー。
シナリオ
このソリューションは、Alibaba Cloud 以外のサーバーでステートレスアプリケーションを実行しており、大幅なトラフィックの変動による手動スケーリングに課題を抱えている場合に適しています。
Alibaba Cloud 以外のサーバーをマネージドインスタンスとして登録し、スケーリンググループに追加すると、Auto Scaling はすべてのインスタンスを監視し、メトリクスの変化に基づいて ECS インスタンスを自動的にスケーリングします。
-
トラフィックのピーク時には、ECS インスタンスを自動的にスケールアウトして、増加した負荷に対応します。
-
トラフィックが少ない時間帯には、ECS インスタンスを自動的にスケールインして、コストを削減します。
概念
主な概念は次のとおりです:
|
用語 |
説明 |
関連リンク |
|
マネージドインスタンス |
Cloud Assistant を通じて登録された Alibaba Cloud 以外のサーバー。登録後、インスタンスは Cloud Assistant、Auto Scaling、CloudOps Orchestration Service、Alibaba Cloud DevOps を使用できます。 |
|
|
Cloud Assistant エージェント |
Alibaba Cloud インスタンスと Alibaba Cloud 以外のインスタンスで、Cloud Assistant からのコマンドを実行します。 |
|
|
CloudMonitor エージェント |
任意のホスト (ECS インスタンス、サードパーティの VM、物理マシン) にインストールして、CloudMonitor のホスト監視を有効にします。 |
操作手順
ステップ 1:Alibaba Cloud 以外のインスタンスの登録
登録する Alibaba Cloud 以外のサーバーを準備します。この例では 3 台のサーバーを使用します。詳細については、「マネージドインスタンス」をご参照ください。
-
アクティベーションコードの作成
ECS コンソールで、マネージドインスタンス用のアクティベーションコードを作成し、インストールスクリプトを生成して保存します。詳細については、「ステップ 1:アクティベーションコードの作成」をご参照ください。
Linux (.deb)システム用のサンプルインストールスクリプトは次のとおりです。# Cloud Assistant エージェントの .deb パッケージをダウンロードします。 sudo wget https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.deb # 最新バージョンの Cloud Assistant エージェントをインストールします。 sudo dpkg -i aliyun_assist_latest.deb # マネージドインスタンスを登録します。 sudo aliyun-service --register --RegionId "cn-hangzhou" \ --ActivationCode "a-hz011wm7BNH3JnTMyx22****VJ6d" \ --ActivationId "A4C23294-D8E9-5591-87A2-CCA2****2AC9" -
Cloud Assistant エージェントのインストールとマネージドインスタンスの登録
各 Alibaba Cloud 以外のサーバーでインストールスクリプトを実行し、Cloud Assistant エージェントをインストールして、マネージドインスタンスとして登録します。
-
Alibaba Cloud 以外のサーバーにログインします。
-
インストールスクリプトを貼り付けて実行します。これにより、Cloud Assistant エージェントがインストールされ、サーバーがマネージドインスタンスとして登録されます。システムは自動的にインスタンス ID を割り当てます。
次のコマンドを実行して Cloud Assistant エージェントをダウンロードしてインストールし、アクティベーションコードを使用してマネージドインスタンスを登録します。登録が成功すると、マネージドインスタンス ID (例:
mi-hzxxx...xxx134) が返されます。$ sudo wget https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.deb --2023-07-24 15:33:07-- https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.deb Resolving aliyun-client-assist.oss-accelerate.aliyuncs.com (aliyun-client-assist.oss-accelerate.aliyuncs.com)... 1xxx.xxx.xxx.xxx6 Connecting to aliyun-client-assist.oss-accelerate.aliyuncs.com (aliyun-client-assist.oss-accelerate.aliyuncs.com)|1xxx.xxx.xxx.xxx6|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 36237058 (35M) [application/octet-stream] Saving to: 'aliyun_assist_latest.deb' aliyun_assist_latest.deb 100%[============================================================>] 2023-07-24 15:33:09 (16.2 MB/s) – 'aliyun_assist_latest.deb' saved [36237058/36237058] $ sudo dpkg -i aliyun_assist_latest.deb Selecting previously unselected package aliyun-assist. (Reading database ... 72699 files and directories currently installed.) Preparing to unpack aliyun_assist_latest.deb ... Unpacking aliyun-assist (2.2.3.421) ... Setting up aliyun-assist (2.2.3.421) ... install linux aliyun-assist at /usr/local/share/aliyun-assist/2.2.3.421 ... install assist ok start assist ok need to install assist_daemon create ok start ok $ sudo aliyun-service --register --RegionId "cn-hangzhou" \ > --ActivationCode "a-hzxxx...xxxVi" \ > --ActivationId "3DC2F9xxx...xxxA667" register ok instance id: mi-hzxxx...xxx134 restart service
-
-
マネージドインスタンスの表示
登録後、ECS コンソールの ECS クラウドアシスタント ページに移動します。インスタンスの管理 タブで、インスタンス ID を記録します。この例では、3 つのインスタンスは Test-01、Test-02、Test-03 と名付けられています。
説明マネージドインスタンスの ID は
mi-で始まり、ECS インスタンスの ID はi-で始まります。
ステップ 2:CloudMonitor エージェントのインストール
詳細については、「CloudMonitor エージェントのインストールとアンインストール」をご参照ください。
-
マネージドインスタンスにログインします。
-
次のコマンドを実行して CloudMonitor エージェントをインストールします:
ARGUS_VERSION=3.5.9.11 /bin/bash -c "$(curl -s https://cloudmonitor-agent.oss-cn-hangzhou.aliyuncs.com/Argus/agent_install_necs-1.8.sh)" -
次のコマンドを実行して CloudMonitor エージェントのステータスを確認します:
ps aux | grep argusagent | grep -v grep次の出力は、インストールが成功したことを示しています:
root 12590 0.0 0.1 33440 6924 ? Ss 15:55 0:00 /usr/local/cloudmonitor/bin/argusagent -d root 12592 0.0 0.4 850972 16096 ? Sl 15:44 0:00 /usr/local/cloudmonitor/bin/argusagent説明CloudMonitor コンソールの [ホスト監視] ページでインストールを確認することもできます。このページには、マネージドインスタンスの CPU 使用率、メモリ使用率、ディスク使用量が表示されます。
ステップ 3:マネージドインスタンスのスケーリンググループへの追加
重要
開始する前に:
-
スケーリンググループに適した監視メトリクスを選択し、イベントトリガータスクを作成してください。詳細については、「イベントトリガータスクの概要」をご参照ください。
-
スケーリンググループに ECS インスタンスとマネージドインスタンスの両方が含まれている場合、イベントトリガータスクはすべてのインスタンスからの集計メトリクスを使用します。マネージドインスタンスはエージェントベースのメトリクスのみをサポートするため、イベントトリガータスクにはエージェントベースのメトリクスを使用してください。
-
マネージドインスタンスは、スケーリンググループへの手動での追加または削除のみが可能です。削除時に解放されません。
操作手順
-
スケーリンググループの作成
ECS タイプのスケーリンググループのみがマネージドインスタンスをサポートします。ECS タイプのスケーリンググループ (例:
Scalinggroup_ecs) を作成します。詳細については、「スケーリンググループの作成」をご参照ください。 -
スケーリング設定の作成と有効化
詳細については、「ECS インスタンスのスケーリング設定の作成」をご参照ください。
-
スケーリンググループの有効化
詳細については、「スケーリンググループの有効化または無効化」をご参照ください。
-
スケーリングルールの作成
2 つのシンプルなスケーリングルールを作成します。詳細については、「スケーリングルールの作成」をご参照ください。
-
スケールアウトルール (Add1) :ECS インスタンスを 1 つ追加するスケーリングルール。
-
スケールインルール (Reduce1) :ECS インスタンスを 1 つ削除するスケーリングルール。
-
-
イベントトリガータスクの作成
[(エージェント) CPU 使用率] メトリクスを使用して、平均 CPU 使用率を 40%~60% に維持するための、2 つのイベントトリガータスクを作成します。詳細については、「イベントトリガータスクの設定」をご参照ください。
-
スケールアウトタスク (ScaleOutAlarm) :[(エージェント) CPU 使用率] メトリクスに対して、条件を [平均 >= 60%] に設定し、タスクをスケールアウトルール (Add1) に関連付けます。これにより、グループの平均 CPU 使用率が、設定された連続期間にわたって 60% 以上になると、ECS インスタンスが 1 つ追加されます。
-
スケールインタスク (ScaleInAlarm) :[(エージェント) CPU 使用率] メトリクスに対して、条件を [平均 <= 40%] に設定し、タスクをスケールインルール (Reduce1) に関連付けます。これにより、グループの平均 CPU 使用率が、設定された連続期間にわたって 40% 以下になると、ECS インスタンスが 1 つ削除されます。
-
-
3 つのマネージドインスタンスをスケーリンググループに手動で追加
重要スケーリンググループ内のマネージドインスタンスは、手動での追加または削除のみが可能です。
-
スケーリンググループの詳細ページで、インスタンス管理 タブをクリックします。
-
マネージドインスタンス タブで、マネージドインスタンスの追加 をクリックします。
-
表示された マネージドインスタンスの追加 ダイアログボックスで、追加するインスタンスを選択し、
アイコンをクリックします。 -
追加 をクリックします。
マネージドインスタンス タブで追加されたインスタンスを表示できます。ステータスが [稼働中] と表示されていれば、インスタンスは正常に管理されています。
-
検証
シナリオ 1:3 台のアイドル状態のマネージドインスタンスを含むグループ
マネージドインスタンスに負荷がない場合、平均 CPU 使用率が 40% を下回り、ScaleInAlarm がトリガーされます。しかし、Auto Scaling はマネージドインスタンスを自動的に削除できません。
-
22:01 から 22:07 の期間、平均 CPU 使用率が 40% を下回ります。ScaleInAlarm がトリガーされますが、実行に失敗します。
イベントトリガータスクの詳細ページには、
ScaleInAlarmが [アラーム状態] であることが示されます。関連付けられたスケールインルールは [Reduce1] です。監視グラフは、22:07 時点の CPU 使用率の平均が約 0.7% であることを示しています。 -
22:01 から 22:07 の期間、システムはスケールインアクティビティを拒否し、インスタンス数は変更されません。詳細については、拒否の理由を表示 をクリックします。
シナリオ 2:3 台の高負荷のマネージドインスタンスを含むグループ
ストレス テスト ツール (lookbusy など) を使用して、マネージドインスタンスの CPU 使用率を約 90% に維持すると、平均 CPU 使用率が 60% を超えます。
-
22:14 から 22:25 の期間、平均 CPU 使用率が 60% を超えます。ScaleOutAlarm がトリガーされ、正常に実行されます。
イベントトリガータスク
ScaleOutAlarmの詳細ページには、ステータスが [正常] と表示されます。監視エリアの CPU 使用率の折れ線グラフは、ストレス テストの開始後に平均 CPU 使用率が約 90% に急上昇し、その後スケールアウトアクティビティの実行に伴い徐々に低下したことを示しています。 -
22:14 から 22:25 の期間、スケールアウトアクティビティによって 2 台の ECS インスタンスが追加されます (合計 5 台)。22:25 以降、平均 CPU 使用率が 40% から 60% の間で安定すると、スケーリングは停止します。
[スケーリングアクティビティ] タブで、各スケーリングアクティビティの実行ステータスと結果を確認できます。成功したスケールアウトアクティビティにより、[変更後の合計インスタンス数] が 3 から 5 に増加しました。一部のアクティビティは、無効なルールのため [拒否] されました (詳細については 拒否の理由を表示 をクリックします)。
シナリオ 3:マネージドインスタンスでのストレス テストの停止
シナリオ 2 の後、スケーリンググループには 2 台の ECS インスタンスと 3 台のマネージドインスタンスが含まれ、平均 CPU 使用率は 40% から 60% の範囲にあります。ストレス テストを停止すると、CPU 使用率が 40% を下回り、ScaleInAlarm がトリガーされます。しかし、マネージドインスタンスは手動でしか削除できません。
-
22:48 から 22:54 の期間、スケールインアクティビティによって両方の ECS インスタンスが削除されます (インスタンス数:5 台から 3 台へ)。22:55 以降、CPU 使用率は 40% を下回ったままですが、残っているのがマネージドインスタンスのみであるため、その後のスケールインアクティビティは失敗します。
-
22:55 以降、平均 CPU 使用率は 40% を下回ったままです。グループには手動で削除する必要があるマネージドインスタンスしか含まれていないため、ScaleInAlarm はトリガーされますが失敗します。
イベントトリガータスクの詳細ページには、
ScaleInAlarmが現在アラーム状態であることが示されます。トリガー条件は [(エージェント) CPU 使用率の平均 ≤ 40% が 5 期間連続] です。関連付けられたスケールインルールは [Reduce1] です。下部の監視グラフは、22:51 以降に CPU 使用率がほぼ 0% に低下し、トリガー条件を継続的に満たしていることを示しています。