全部產品
Search
文件中心

Auto Scaling:使用執行個體自訂資料自動設定ECS執行個體

更新時間:Jun 30, 2024

為了提供更加高效靈活的伸縮服務,Auto Scaling配置中新增了執行個體自訂資料。您可以利用執行個體自訂資料自動完成ECS執行個體配置,從而安全快速地實現應用層級的擴容和縮容。

前提條件

使用本教程進行操作前,請確保您已經註冊了阿里雲帳號。如還未註冊,請先完成帳號註冊

背景資訊

相比較Terraform等開源IT基礎架構管理工具,使用Auto Scaling原生的執行個體自訂資料更加快速、安全,您只需準備好執行個體自訂指令碼,然後以Base64編碼的方式傳入伸縮配置即可,自動建立的ECS執行個體會在啟動時自動執行執行個體自訂指令碼,實現應用層級的擴容和縮容。

本文結合具體情境向您展示ECS執行個體自訂資料的使用方式,關於ECS執行個體自訂資料的更多資訊,請參見執行個體自訂資料。Windows執行個體和Linux執行個體均支援設定執行個體自訂資料功能,主要功能體現如下:
  • 自訂功能:作為執行個體自訂指令碼在啟動執行個體時執行,您可以自訂執行個體的啟動行為。
  • 引用功能:作為普通資料向執行個體傳入資訊,您可以在執行個體中引用這些資料。

注意事項

  • 使用執行個體自訂資料自動設定ECS執行個體時,您需要注意以下幾點:
    • 伸縮組的網路類型需要為Virtual Private Cloud。
    • 執行個體自訂資料需要為Base64編碼方式。
    • 執行個體自訂資料將以不加密的方式傳入執行個體,請不要以明文方式傳入機密的資訊(例如密碼、私密金鑰資料等)。如果必須傳入,建議先加密未經處理資料,以Base64方式編碼加密後的資料並傳入執行個體,然後在執行個體內部以同樣的方式反解密。
  • 通過API建立伸縮配置時,您可以使用UserData參數傳入執行個體自訂資料,更多資訊,請參見CreateScalingConfiguration
  • 除執行個體自訂資料外,SSH金鑰組、RAM角色名稱以及標籤也可以協助您更加高效靈活地管理ECS執行個體,更多資訊,請參見使用伸縮配置特性實現自動擴縮容

步驟一:準備執行個體自訂資料

您可以利用執行個體自訂資料實現在ECS執行個體啟動時自動執行自訂Shell指令碼,在定義Shell指令碼時,需注意以下幾點:
類型說明
指令碼格式首行固定為#!,例如#!/bin/sh
指令碼限制在Base64編碼前指令碼內容不能超過16 KB。
指令碼執行頻率僅在初次開機執行個體時執行一次。
  1. 自訂一個Shell指令碼,實現在ECS執行個體啟動時配置yum和NTP服務。
    Shell指令碼樣本如下所示:
    #!/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. 對Shell指令碼進行Base64編碼。
    Base64編碼後的Shell指令碼如下所示:
    IyEvYmluL3NoCiMgTW9kaWZ5IHl1bSByZXBvIGFuZCB1cGRhdGUKcm0gLXJmIC9ldGMveXVtLnJlcG9zLmQvKgp0b3VjaCBteXJlcG8ucmVwbwplY2hvICJbYmFzZV0iIHwgdGVlIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAibmFtZT1teXJlcG8iIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiYmFzZXVybD1odHRwOi8vbWlycm9yLmNlbnRvcy5vcmcvY2VudG9zIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCmVjaG8gImdwZ2NoZWNrPTAiIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiZW5hYmxlZD0xIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCnl1bSB1cGRhdGUgLXkKIyBNb2RpZnkgTlRQIFNlcnZlcgplY2hvICJzZXJ2ZXIgbnRwMS5hbGl5dW4uY29tIiB8IHRlZSAvZXRjL250cC5jb25mCnN5c3RlbWN0bCByZXN0YXJ0IG50cGQuc2VydmljZQ==

步驟二:建立並啟用伸縮組

  1. 建立伸縮組,並在建立成功後查看伸縮組詳情。
    具體操作,請參見配置伸縮組
    建立伸縮組時,請注意以下配置項:
    配置項說明
    組內最小執行個體數設定為1,表示在啟用伸縮組後即會自動建立一台ECS執行個體。
    組內執行個體配置資訊來源選擇從零開始建立的方式。
    網路類型選擇專用網路類型。
    專用網路選擇已建立的專用網路ID。
    選擇交換器選擇對應虛擬交換器。
    新建立的伸縮組出現在伸縮組列表中,且伸縮組處於停用狀態,您可以單擊操作列下的查看詳情,查看伸縮組的更多資訊。
  2. 建立伸縮配置,並在建立成功後啟用配置。
    具體操作,請參見建立伸縮配置(ECS執行個體)
    建立伸縮配置時,請注意以下配置項:
    配置項說明
    基礎配置鏡像選用公用鏡像中的CentOS 7.9 64位。
    系統配置登入憑證選擇金鑰組方式。
    金鑰組選擇建立好的金鑰組。如何建立金鑰組,具體操作,請參見建立SSH金鑰組
    進階選項(執行個體RAM角色&執行個體自訂資料cloud-init) > 執行個體自訂資料輸入步驟一:準備執行個體自訂資料中準備的執行個體自訂資料指令碼。
  3. 啟用伸縮組。
    具體操作,請參見啟用伸縮組

步驟三:驗證執行個體自訂資料的效果

由於建立伸縮組時指定組內最小執行個體數為1,在啟用伸縮組後,系統會自動建立1台ECS執行個體,以保證伸縮組滿足最小執行個體數的限制。

  1. 查看伸縮活動。
    具體操作,請參見查看伸縮活動詳情。您可以查看到系統已自動建立1台ECS執行個體。
  2. 登入ECS執行個體。
    驗證執行個體自訂資料效果時需要登入ECS執行個體,對Linux執行個體建議您使用金鑰組,具體操作,請參見建立SSH金鑰組通過密鑰認證登入Linux執行個體
    說明 如果執行個體已設定登入密碼或者綁定金鑰組,您也可以選擇通過Workbench方式串連執行個體,具體操作,請參見通過密碼或密鑰認證登入Linux執行個體
  3. 查看服務狀態。
    服務狀態如下圖所示,即yum和NTP服務已開啟,表示伸縮配置中的執行個體自訂資料配置已生效。服務狀態