このトピックでは、Auto Scalingを使用してAlibaba Cloud以外のインスタンスとAlibaba Cloudインスタンスを管理する方法について説明します。 Cloud Assistantを使用して、Alibaba Cloud以外のインスタンスをAlibaba Cloudインスタンスとして登録し、登録されたインスタンスにCloudMonitorエージェントをインストールできます。 次に、登録されたインスタンスをスケーリンググループに追加できます。 これにより、Alibaba Cloud以外のインスタンスとAlibaba Cloudインスタンスを一元的にモニタリングでき、メトリック統計に基づいてインスタンスが自動的にスケーリングされます。
前提条件
Alibaba Cloud アカウントが作成済みであること。 Alibaba Cloudアカウントをお持ちでない場合は、Alibaba Cloudにサインアップしてください。
インターネットにアクセスできるAlibaba Cloud以外のインスタンスが1つ以上用意されています。
シナリオ
たとえば、Alibaba Cloud以外のインスタンスで実行されるステートレスアプリケーションでは、ビジネストラフィックが大幅に変動し、その変動に対応してアプリケーションインスタンスのスケーリングが困難になります。
この場合、Cloud Assistant、CloudMonitor、およびAuto Scalingが提供する機能を使用して、Alibaba Cloud以外のインスタンスをAlibaba Cloudインスタンスとして登録し、登録されたインスタンスにCloudMonitorエージェントをインストールできます。 次に、登録されたインスタンスを自動スケーリングのスケーリンググループに追加できます。 Auto Scalingは、Alibaba Cloudインスタンスと同じ方法で登録済みインスタンスをモニタリングし、メトリック統計に基づいてインスタンスを自動的にスケーリングします。 これにより、ビジネスはトラフィックの変動に効率的に対応できます。 Auto Scalingには次の機能があります。
ピーク時には、Auto ScalingはAlibaba Cloud Elastic Computer Service (ECS) インスタンスをスケーリンググループに自動的に追加し、ビジネストラフィックの増加に対応します。
オフピーク時には、Auto ScalingはAlibaba Cloud ECSインスタンスをスケーリンググループから自動的に削除し、リソースコストを削減します。
概念
次の表に、このトピックで使用される概念を示します。
パラメーター | 説明 | 関連ドキュメント |
管理対象インスタンス | Cloud Assistantを使用して、Alibaba Cloud以外のサーバーをAlibaba Cloudインスタンスとして登録できます。 登録済みインスタンスは管理対象インスタンスです。 登録完了後、登録済みのインスタンスは、Cloud Assistant、Auto Scaling、CloudOps Orchestration Service (OOS) 、Apsara DevOpsなどのさまざまなAlibaba Cloudオンラインサービスを使用できます。 | |
Cloud Assistantエージェント | Cloud Assistantエージェントは、Alibaba Cloud以外のインスタンスおよびAlibaba Cloudインスタンスにインストールできる軽量プラグインです。 Cloud Assistantエージェントのみを使用して、Alibaba Cloud以外のインスタンスまたはAlibaba Cloudインスタンスにコマンドを送信できます。 | |
CloudMonitorエージェント | cloud Monitorは、ホストがECSインスタンス、別のクラウドサービスベンダーが提供する仮想マシン、または物理マシンのいずれであるかに関係なく、cloud Monitorエージェントをホストにインストールした後にシステムモニタリングサービスを提供します。 |
手順
手順1: Alibaba Cloud以外のインスタンスをAlibaba Cloudインスタンスとして登録
登録の前に、少なくとも1つの非Alibaba Cloudインスタンスを準備する必要があります。 このセクションでは、Alibaba Cloud以外の3つのインスタンスを例として使用して、登録を完了する方法を説明します。 詳細については、「Alibaba Cloudが提供していないサーバーの管理」をご参照ください。
登録コードを作成します。
ECSコンソールで登録コードを作成し、インストールスクリプトを生成し、オンプレミスマシンに保存します。 詳細については、「手順1: マネージインスタンスのアクティベーションコードの作成」をご参照ください。 次のサンプルコードは、
Linux(.deb)
型のインストールスクリプトを提供します。# Download the DEB package of the Cloud Assistant client. sudo wget https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.deb # Install the Cloud Assistant client of the latest version. sudo dpkg -i aliyun_assist_latest.deb # Register the non-Alibaba Cloud instances. sudo aliyun-service --register --RegionId "cn-hangzhou" \ --ActivationCode "a-hz011wm7BNH3JnTMyx22****VJ6d" \ --ActivationId "A4C23294-D8E9-5591-87A2-CCA2****2AC9"
Cloud Assistantエージェントをインストールし、Alibaba Cloud以外のインスタンスを登録します。
インストールスクリプトを取得したら、Alibaba Cloud以外の3つのインスタンスでスクリプトを実行してCloud Assistantエージェントをインストールし、インスタンスをAlibaba Cloudインスタンスとして登録します。
Alibaba Cloud以外のインスタンスにログインします。
インストールスクリプトをAlibaba Cloud以外のインスタンスにコピーし、インストールスクリプトを実行してCloud Assistantエージェントをインストールします。 次に、Alibaba Cloud以外のインスタンスをAlibaba Cloudインスタンスとして登録します。 登録が成功すると、Alibaba Cloudは登録されたインスタンスにIDを割り当てます。 登録済みインスタンスは管理対象インスタンスです。
マネージドインスタンスを表示します。
登録が完了したら、ECSコンソールの [クラウドアシスタント] ページの マネージドインスタンス タブに移動して、マネージドインスタンスのIDを表示できます。 上記の手順を繰り返して、他の2つのAlibaba Cloud以外のインスタンスをマネージドインスタンスとして登録します。 この例では、管理対象インスタンスのIDはTest-01、Test-02、およびTest-03です。
説明管理対象インスタンスのIDは
mi-
で始まり、ECSインスタンスのIDはi-
で始まります。
手順2: CloudMonitorエージェントのインストール
CloudMonitorエージェントの詳細については、「C ++ 用の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
次のコマンド出力が返された場合、CloudMonitorエージェントは正常であり、インストールは成功です。 上記の手順を繰り返して、他の2つの登録済みインスタンスにCloudMonitorエージェントをインストールします。
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: マネージドインスタンスをスケーリンググループに追加する
注意
マネージドインスタンスをスケーリンググループに追加する前に、次の項目に注意してください。
スケーリンググループのイベントトリガータスクを作成する必要があります。 イベントトリガータスクによって監視されるメトリックは、ビジネス要件を満たす必要があります。 詳細については、「イベントトリガータスクの概要」をご参照ください。
スケーリンググループにマネージドインスタンスとAlibaba Cloudインスタンスが同時に含まれている場合、イベントトリガータスクは、スケーリンググループ内のすべてのインスタンスのメトリック統計に基づいてアラートをトリガーします。 マネージドインスタンスは、CloudMonitorシステムメトリクスのみをサポートします。 イベントトリガータスクでは、CloudMonitorシステムメトリクスを指定することを推奨します。
スケーリンググループは、管理対象インスタンスのライフサイクルを管理しません。 不要になったマネージインスタンスをスケーリンググループから手動で削除する必要があります。 マネージドインスタンスがスケーリンググループから削除された後、インスタンスはリリースされません。
手順
スケーリンググループを作成します。
マネージドインスタンスは、ECSタイプのスケーリンググループにのみ追加できます。 したがって、このステップでは、ECSタイプのスケーリンググループを作成する必要があります。 この例では、スケーリンググループの名前はScalinggroup_ecsです。 スケーリンググループの作成方法の詳細については、「手順」をご参照ください。
スケーリング設定を作成して有効にします。
詳細については、「ECSタイプのスケーリング設定の作成」をご参照ください。
スケーリンググループの有効化
スケーリンググループを有効にする方法については、「スケーリンググループの作成」をご参照ください。
スケーリングルールを作成します。
この例では、2つの単純なスケーリングルールが作成されます。 詳細については、「スケーリングルールの作成」をご参照ください。
スケールアウトルール (Add1): 1つのECSインスタンスをスケーリンググループに追加します。
スケールインルール (Reduce1): スケーリンググループから1つのECSインスタンスを削除します。
イベントトリガータスクを作成します。
この例では、スケーリンググループ内のすべてのインスタンスの全体的なCPU使用率が40% 〜60% になるように、2つのイベントトリガータスクが作成されています。 (エージェント) CPU使用率メトリックは、イベントトリガータスクで指定されます。 イベントトリガータスクの作成方法の詳細については、「アラームタスクの作成」をご参照ください。
スケールアウトのイベントトリガータスク (ScaleOutAlarm): (エージェント) CPU使用率の指標を監視し、スケーリンググループ内のすべてのインスタンスの平均CPU使用率が60% 以上になるとアラートをトリガーします。 スケーリンググループ内のすべてのインスタンスの平均CPU使用率が60% 以上になると、Auto scalingは1つのECSインスタンスをスケーリンググループに追加します。
スケールイン (ScaleInAlarm) のイベントトリガータスク: (エージェント) CPU使用率の指標を監視し、スケーリンググループ内のすべてのインスタンスの平均CPU使用率が40% を下回るか、または下回るとアラートをトリガーします。 スケーリンググループ内のすべてのインスタンスの平均CPU使用率が40% 以下になると、Auto scalingはスケーリンググループから1つのECSインスタンスを削除します。
3つのマネージドインスタンスをScalinggroup_ecsスケーリンググループに手動で追加します。
重要スケーリンググループ内の管理対象インスタンスは、スケーリンググループから手動でのみ削除できます。
Scalinggroup_ecsスケーリンググループの詳細ページで、インスタンス タブをクリックします。
マネージドインスタンス タブをクリックし、マネージドインスタンスの追加 をクリックします。
マネージドインスタンスの追加 ダイアログボックスで、追加するマネージドインスタンスを選択し、アイコンをクリックします。
追加 をクリックします。
マネージドインスタンス タブで、スケーリンググループに追加した管理対象インスタンスを表示できます。
モニタリング効果の確認
シナリオ1: スケーリンググループに3つの無負荷管理インスタンスのみが含まれています
管理対象インスタンスが無負荷の場合、スケーリンググループ内の管理対象インスタンスの平均CPU使用率は40% を下回ります。 理論的には、この場合、Auto ScalingはScaleInAlarmイベントトリガータスクを実行して、スケーリンググループから1つのECSインスタンスを削除します。 ただし、スケーリンググループにはマネージドインスタンスのみが含まれ、マネージドインスタンスはスケーリンググループから手動でのみ削除できます。 次のケースが発生する可能性があります。
たとえば、マネージドインスタンスの平均CPU使用率が22:01:00から22:07:00までに40% を下回った場合、Auto ScalingがScaleInAlarmイベントトリガータスクを実行するときに例外が発生します。
たとえば、スケールインリクエストは拒否され、スケーリンググループ内の管理対象インスタンスの数は22:01:00から22:07:00まで変更されません。 この場合、[拒否理由の表示] をクリックして問題のトラブルシューティングを行うことができます。
シナリオ2: スケーリンググループに含まれるマネージドインスタンスは3つだけで、平均CPU使用率は約90%
lookbusyなどのストレステストツールを使用して、3つのマネージドインスタンスのワークロードのストレスをテストし、3つのマネージドインスタンスの平均CPU使用率が約90% のままであることを検出します。これは、しきい値60% を超えています。 次のケースが発生する可能性があります。
たとえば、スケーリンググループ内のマネージインスタンスの平均CPU使用率が22:14:00から22:25:00まで60% を超える場合、Auto scalingはScaleOutAlarmイベントトリガータスクを実行します。
たとえば、22:14:00から22:25:00まで、Auto ScalingはScaleOutAlarmイベントトリガータスクを実行して2つのECSインスタンスを追加します。 この場合、スケーリンググループには合計5つのインスタンスが含まれます。 22:25:00以降、スケーリンググループ内のすべてのインスタンスの平均CPU使用率が40% 〜60% のままである場合、スケールアウトは終了します。
シナリオ3: スケーリンググループに2つのECSインスタンスと3つのストレステスト不要マネージドインスタンスが含まれています
スケーリンググループには、2つのECSインスタンスと3つのマネージドインスタンスが含まれます。 スケーリンググループ内のすべてのインスタンスの平均CPU使用率は40% 〜60% です。 3つのマネージドインスタンスのストレステストをキャンセルすると、スケーリンググループ内のすべてのインスタンスの平均CPU使用率が40% を下回ります。 理論的には、この場合、Auto ScalingはScaleInAlarmイベントトリガータスクを実行して、スケーリンググループからインスタンスを削除します。 ただし、管理対象インスタンスはスケーリンググループから手動でのみ削除できます。 次のケースが発生する可能性があります。
たとえば、Auto Scalingはスケールインをトリガーして、22:48:00から22:54:00の間にスケーリンググループ内のインスタンス数を5から3に減らします。 Auto Scalingが、スケーリンググループ内の残りのインスタンスの平均CPU使用率が22:55:00以降も40% を下回ったことを検出した場合、Auto scalingはスケールインをトリガーせず、特定の数の管理対象インスタンスを手動で削除する必要があります。
たとえば、スケーリンググループ内のすべてのインスタンスの平均CPU使用率が22:55:00以降も40% を下回った場合、Auto scalingがScaleInAlarmイベントトリガータスクを実行し続けてスケーリンググループからインスタンスを削除すると、例外が発生します。 これは、管理対象インスタンスをスケーリンググループから手動でのみ削除できるためです。