すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:インスタンスユーザーデータ機能を使用したECSインスタンスの自動設定

最終更新日:Sep 23, 2024

Auto Scalingのインスタンスユーザーデータ機能は、より柔軟なスケーリングオプションを提供し、インスタンスをより高速にスケーリングできます。 インスタンスユーザーデータ機能を使用して、Elastic Compute Service (ECS) インスタンスの安全で信頼性の高い自動設定を実装できます。 これにより、ECSインスタンスを手動で設定する負担が軽減され、ビジネスに集中できるようになります。

前提条件

Alibaba Cloud アカウントが作成済みであること。 Alibaba Cloudアカウントを作成するには、[Alibaba Cloudにサインアップ] ページに移動します。

背景情報

TerraformなどのオープンソースのITインフラストラクチャ管理ツールと比較して、インスタンスユーザーデータ機能はより効率的で信頼性があります。 カスタムインスタンススクリプトを準備し、Base64形式でスクリプトをエンコードしてから、Base64-encodedスクリプトをアクティブなスケーリング設定に渡すだけです。 Auto Scalingがスケーリング設定に基づいてECSインスタンスを起動すると、スクリプトが自動的に実行され、インスタンスのスケーリングが高速化されます。

このトピックでは、インスタンスユーザーデータ機能の使用方法に関するケース固有の例を示します。 インスタンスユーザーデータ機能の詳細については、「インスタンスユーザーデータ」をご参照ください。 WindowsおよびLinuxインスタンスのインスタンスユーザーデータ機能を設定できます。 インスタンスユーザーデータ機能には、次の利点があります。

  • カスタム機能: インスタンスユーザーデータ機能を使用して、インスタンスのスタートアップを管理するカスタムインスタンススクリプトを設定できます。 カスタムインスタンススクリプトは、Auto Scalingがインスタンスを起動すると自動的に実行されます。

  • データ参照: インスタンスユーザーデータ機能を使用して、インスタンスにデータを渡し、インスタンスのデータを参照できます。

使用上の注意

  • インスタンスユーザーデータ機能を使用してECSインスタンスを自動的に設定する前に、次の項目に注意してください。

    • インスタンスユーザーデータ機能を有効にするスケーリンググループは、仮想プライベートクラウド (VPC) に存在する必要があります。

    • インスタンスユーザーデータをBase64-encodedする必要があります。

    • インスタンスユーザーデータは、プレーンテキストでインスタンスに渡されます。 パスワードや秘密鍵などの機密情報をインスタンスのユーザーデータとして渡さないことを推奨します。 機密情報を渡す必要がある場合は、機密情報を暗号化し、暗号化された情報をBase64形式で渡してから、インスタンスの情報を復号化することを推奨します。

  • APIを呼び出してスケーリング設定を作成する場合、UserDataパラメーターを使用してインスタンスのユーザーデータを渡すことができます。 詳細については、「CreateScalingConfiguration」をご参照ください。

  • インスタンスユーザーデータ機能に加えて、Secure Shell (SSH) キーペア、RAMロール、およびタグを使用して、ECSインスタンスのより効率的で便利な管理を実装することもできます。 詳細については、「スケーリング設定機能を使用した自動スケーリングの有効化」をご参照ください。

手順1: インスタンスユーザーデータの準備

インスタンスユーザーデータ機能を使用して、Auto ScalingがECSインスタンスを起動するときにシェルスクリプトの自動実行を有効にできます。 カスタムシェルスクリプトを作成するときは、次の表で説明する項目に注意してください。

項目

説明

スクリプト形式

スクリプトは #! で始まる必要があります。 例: #!/bin/sh

スクリプトサイズ

スクリプトをBase64形式でエンコードする前に、スクリプトコンテンツのサイズが16 KBを超えることはできません。

実行頻度

このスクリプトは、ECSインスタンスが初めて起動されたときに1回だけ実行されます。

  1. ECSインスタンスの起動時にYellow dog Updater、Modified (YUM) およびNetwork Time Protocol (NTP) サービスを有効にするカスタムシェルスクリプトを作成します。

    次のコードは、サンプルシェルスクリプトを示しています:

    #!/bin/sh
    # Modify yum repo and update
    rm -rf /etc/yum.repos.d/*
    touch myrepo.repo
    echo "[base]" | tee /etc/yum.repos.d/myrepo.repo
    echo "name=myrepo" | tee -a /etc/yum.repos.d/myrepo.repo
    echo "baseurl=http://mirror.centos.org/centos" | tee -a /etc/yum.repos.d/myrepo.repo
    echo "gpgcheck=0" | tee -a /etc/yum.repos.d/myrepo.repo
    echo "enabled=1" | tee -a /etc/yum.repos.d/myrepo.repo
    yum update -y
    # Modify NTP Server
    echo "server ntp1.aliyun.com" | tee /etc/ntp.conf
    systemctl restart ntpd.service
  2. シェルスクリプトをBase64形式でエンコードします。

    次のコードは、Base64エンコーディングの結果を示しています。

    IyEvYmluL3NoCiMgTW9kaWZ5IHl1bSByZXBvIGFuZCB1cGRhdGUKcm0gLXJmIC9ldGMveXVtLnJlcG9zLmQvKgp0b3VjaCBteXJlcG8ucmVwbwplY2hvICJbYmFzZV0iIHwgdGVlIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAibmFtZT1teXJlcG8iIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiYmFzZXVybD1odHRwOi8vbWlycm9yLmNlbnRvcy5vcmcvY2VudG9zIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCmVjaG8gImdwZ2NoZWNrPTAiIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiZW5hYmxlZD0xIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCnl1bSB1cGRhdGUgLXkKIyBNb2RpZnkgTlRQIFNlcnZlcgplY2hvICJzZXJ2ZXIgbnRwMS5hbGl5dW4uY29tIiB8IHRlZSAvZXRjL250cC5jb25mCnN5c3RlbWN0bCByZXN0YXJ0IG50cGQuc2VydmljZQ==

ステップ2: スケーリンググループを作成して有効にする

  1. スケーリンググループを作成します。 スケーリンググループを作成したら、スケーリンググループの詳細を表示できます。

    詳細については、「スケーリンググループの管理」をご参照ください。

    次の表に、スケーリンググループを作成するときに設定する必要があるパラメーターを示します。

    パラメーター

    説明

    最小インスタンス数

    この例では、値を1に設定します。 この場合、Auto Scalingは、スケーリンググループを有効にすると1つのECSインスタンスを作成します。

    インスタンス設定ソース

    この例では、値を [スクラッチから作成] に設定します。

    ネットワークタイプ

    この例では、[VPC] を選択します。

    [VPC]

    既存のVPCを選択します。

    vSwitch

    指定したVPCに存在するvSwitchを選択します。

    スケーリンググループを作成すると、スケーリンググループは [スケーリンググループ] ページに表示され、[無効] 状態のままになります。 [操作] 列の [詳細] をクリックすると、スケーリンググループの詳細が表示されます。

  2. スケーリング設定を作成して有効にします。

    詳細については、「ECSタイプのスケーリング設定の作成」をご参照ください。

    次の表に、スケーリング設定を作成するときに設定する必要があるパラメーターを示します。

    パラメーター

    説明

    [基本設定]

    [イメージ]

    この例では、[パブリックイメージ] の下の [CentOS 7.9 64] を選択します。

    システム構成

    [ログイン資格情報]

    この例では、[キーペア] を選択します。

    キーペア

    既存のキーペアを選択します。 キーペアの作成方法については、「SSHキーペアの作成」をご参照ください。

    高度な (インスタンスRAMロールとインスタンスユーザーデータcloud-init) > インスタンスユーザーデータ

    手順1: インスタンスユーザーデータの準備で準備したスクリプトを渡します。

  3. スケーリンググループを有効にします。

    詳細については、「スケーリンググループの有効化」をご参照ください。

ステップ3: インスタンスユーザーデータ機能の効果を確認する

ステップ2では、スケーリンググループの [最小インスタンス数] パラメーターを1に設定します。 スケーリンググループを有効にすると、Auto scalingはスケーリンググループに1つのECSインスタンスを作成し、インスタンスの最小数に達するようにします。

  1. スケーリングアクティビティを確認します。

    詳細については、「スケーリングアクティビティの詳細の表示」をご参照ください。 この例では、スケーリングアクティビティ中に1つのECSインスタンスが作成されます。

  2. ECSインスタンスにログインします。

    インスタンスユーザーデータ機能の効果を確認するには、ECSインスタンスにログインする必要があります。 Linuxインスタンスの場合、キーペアを使用することを推奨します。 詳細については、「SSHキーペアの作成」および「SSHキーペアを使用したLinuxインスタンスへの接続」をご参照ください。

    説明

    ログインパスワードを設定した場合、またはECSインスタンスにキーペアを関連付けた場合、ワークベンチを使用してECSインスタンスにログインできます。 詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  3. サービスの状態を確認します。

    次の図は、YUMおよびNTPサービスが有効になっていることを示しています。 これは、スケーリング設定で設定されたインスタンスユーザーデータ機能が有効になったことを証明します。 Figure - Status