より効率的で柔軟なスケーリングサービスを提供するために、Auto Scaling はインスタンスユーザーデータをサポートするようになりました。インスタンスユーザーデータを使用して、Elastic Compute Service (ECS) インスタンスを自動的に設定し、アプリケーションを安全にスケールインまたはスケールアウトできます。
背景情報
Terraform などのオープンソースのインフラ管理ツールと比較して、Auto Scaling でネイティブのインスタンスユーザーデータを使用する方が、より高速かつ安全です。インスタンスユーザーデータスクリプトを準備し、Base64 でエンコードしてスケーリング設定に含めます。自動的に作成された ECS インスタンスは、起動時にスクリプトを実行し、アプリケーションレベルのスケーリングを可能にします。
このトピックでは、実際のシナリオでインスタンスユーザーデータを使用する方法を説明します。インスタンスユーザーデータの詳細については、「インスタンスの初期化設定のカスタマイズ」をご参照ください。Windows と Linux の両方のインスタンスがインスタンスユーザーデータをサポートしています。主な機能は次のとおりです。
-
カスタマイズ:インスタンスの起動時にカスタムスクリプトを実行して、その起動時の動作を定義します。
-
データ参照:プレーンデータをインスタンスに渡し、インスタンス内から参照します。
注意事項
-
インスタンスユーザーデータを使用して ECS インスタンスを自動的に設定する場合、次の点にご注意ください。
-
スケーリンググループは、VPC (Virtual Private Cloud) ネットワークタイプを使用する必要があります。
-
インスタンスユーザーデータは Base64 エンコードされている必要があります。
-
インスタンスユーザーデータは暗号化されずにインスタンスに渡されます。パスワードや秘密鍵などの機密情報をプレーンテキストで渡さないでください。機密データを渡す必要がある場合は、まずデータを暗号化し、暗号化されたデータを Base64 エンコードしてインスタンスに渡し、その後インスタンス内で同じ方法で復号してください。
-
-
API を使用してスケーリング設定を作成する場合、UserData パラメーターを使用してインスタンスユーザーデータを渡します。詳細については、「CreateScalingConfiguration」をご参照ください。
-
インスタンスユーザーデータに加えて、SSH キーペア、RAM ロール名、タグを使用すると、ECS インスタンスをより効率的かつ柔軟に管理できます。詳細については、「スケーリング設定機能を使用した自動スケーリングの実装」をご参照ください。
ステップ 1:インスタンスユーザーデータの準備
インスタンスユーザーデータを使用して、ECS インスタンスの起動時にカスタムシェルスクリプトを自動的に実行できます。シェルスクリプトを作成する際は、次のガイドラインに従ってください。
|
タイプ |
説明 |
|
スクリプトのフォーマット |
最初の行は |
|
スクリプトの制限 |
スクリプトの内容は、Base64 エンコーディング前で 32 KB を超えることはできません。 |
|
スクリプトの実行頻度 |
スクリプトは、最初のインスタンス起動時に一度だけ実行されます。 |
-
ECS インスタンスの起動時に yum と NTP サービスを設定するシェルスクリプトを作成します。
以下にシェルスクリプトのサンプルを示します。
#!/bin/sh # yum リポジトリを変更して更新 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 # NTP サーバーの変更 echo "server ntp1.aliyun.com" | tee /etc/ntp.conf systemctl restart ntpd.service -
シェルスクリプトを Base64 エンコードします。
Base64 エンコードされたスクリプトは次のようになります。
IyEvYmluL3NoCiMgTW9kaWZ5IHl1bSByZXBvIGFuZCB1cGRhdGUKcm0gLXJmIC9ldGMveXVtLnJlcG9zLmQvKgp0b3VjaCBteXJlcG8ucmVwbwplY2hvICJbYmFzZV0iIHwgdGVlIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAibmFtZT1teXJlcG8iIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiYmFzZXVybD1odHRwOi8vbWlycm9yLmNlbnRvcy5vcmcvY2VudG9zIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCmVjaG8gImdwZ2NoZWNrPTAiIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiZW5hYmxlZD0xIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCnl1bSB1cGRhdGUgLXkKIyBNb2RpZnkgTlRQIFNlcnZlcgplY2hvICJzZXJ2ZXIgbnRwMS5hbGl5dW4uY29tIiB8IHRlZSAvZXRjL250cC5jb25mCnN5c3RlbWN0bCByZXN0YXJ0IG50cGQuc2VydmljZQ==
ステップ 2:スケーリンググループの作成と有効化
-
スケーリンググループを作成し、作成後にその詳細を表示します。
詳細な手順については、「スケーリンググループの設定」をご参照ください。
スケーリンググループを作成する際は、次の設定項目にご注意ください。
設定項目
説明
最小インスタンス数
1 に設定します。これにより、スケーリンググループを有効にした後、1 つの ECS インスタンスが自動的に作成されるようになります。
インスタンス設定ソース
新規作成 を選択します。
ネットワークタイプ
VPC を選択します。
VPC
既存の VPC ID を選択します。
vSwitch
対応する vSwitch を選択します。
新しいスケーリンググループは、スケーリンググループリストに 無効 状態で表示されます。操作 列の 詳細情報 をクリックして、詳細情報を表示します。
-
スケーリング設定を作成し、作成後に有効化します。
詳細な手順については、「スケーリング設定の作成 (ECS インスタンス)」をご参照ください。
スケーリング設定を作成する際は、次の設定項目にご注意ください。
設定項目
説明
インスタンスとイメージ
イメージ
公開イメージ から CentOS 7.9 64 ビットを選択します。
管理設定
ログインクレデンシャル
キーペア を選択します。
キーペア
既存のキーペアを選択します。キーペアの作成手順については、「SSH キーペアの作成」をご参照ください。
詳細設定
インスタンスのカスタムデータ
「ステップ 1:インスタンスユーザーデータの準備」で準備したインスタンスユーザーデータスクリプトを入力します。
-
スケーリンググループを有効化します。
詳細な手順については、「スケーリンググループの有効化」をご参照ください。
ステップ 3:インスタンスユーザーデータの効果の検証
最小インスタンス数 を 1 に設定したため、システムはスケーリンググループを有効化した後、この要件を満たすために自動的に 1 つの ECS インスタンスを作成します。
-
スケーリングアクティビティを表示します。
詳細な手順については、「スケーリングアクティビティの詳細の表示」をご参照ください。システムが自動的に 1 つの ECS インスタンスを作成したことがわかります。
-
ECS インスタンスにログインします。
インスタンスユーザーデータの効果を検証するために、ECS インスタンスにログインします。Linux インスタンスの場合、キーペアの使用を推奨します。手順については、「SSH キーペアの作成」および「OpenSSH/Xshell を使用した Linux インスタンスへのリモート接続」をご参照ください。
説明インスタンスにすでにログインパスワードまたはアタッチされたキーペアがある場合は、ワークベンチを使用して接続することもできます。手順については、「ワークベンチを使用した Linux インスタンスへのログイン」をご参照ください。
-
サービスステータスを確認します。
以下の出力は、yum と NTP サービスが実行されていることを示しており、スケーリング設定のインスタンスユーザーデータが有効になったことを意味します。
[root@ixxxZ ~]# cat /etc/yum.repos.d/myrepo.repo [base] name=myrepo baseurl=http://mirror.centos.org/centos gpgcheck=0 enabled=1 [root@ixxxZ ~]# cat /etc/ntp.conf server ntp1.aliyun.com [root@ixxxZ ~]#