為了提供更加高效靈活的伸縮服務,彈性伸縮配置中新增了實例自定義數據。您可以利用實例自定義數據自動完成ECS實例配置,從而安全快速地實現應用級別的擴容和縮容。

前提條件

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

背景信息

相比較Terraform等開源IT基礎架構管理工具,使用彈性伸縮原生的實例自定義數據更加快速、安全,您只需準備好實例自定義腳本,然后以Base64編碼的方式傳入伸縮配置即可,自動創建的ECS實例會在啟動時自動執行實例自定義腳本,實現應用級別的擴容和縮容。

本文結合具體場景向您展示ECS實例自定義數據的使用方式,關于ECS實例自定義數據的更多信息,請參見ECS實例自定義數據概述。Windows實例和Linux實例均支持設置實例自定義數據功能,主要功能體現如下:
  • 自定義功能:作為實例自定義腳本在啟動實例時執行,您可以自定義實例的啟動行為。
  • 引用功能:作為普通數據向實例傳入信息,您可以在實例中引用這些數據。

注意事項

  • 使用實例自定義數據自動配置ECS實例時,您需要注意以下幾點:
    • 伸縮組的網絡類型需要為專有網絡(VPC)。
    • 實例自定義數據需要為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服務已開啟,表示伸縮配置中的實例自定義數據配置已生效。服務狀態