為了提供更加高效靈活的伸縮服務(wù),彈性伸縮配置中新增了實(shí)例自定義數(shù)據(jù)。您可以利用實(shí)例自定義數(shù)據(jù)自動(dòng)完成ECS實(shí)例配置,從而安全快速地實(shí)現(xiàn)應(yīng)用級(jí)別的擴(kuò)容和縮容。

前提條件

使用本教程進(jìn)行操作前,請(qǐng)確保您已經(jīng)注冊(cè)了阿里云賬號(hào)。如還未注冊(cè),請(qǐng)先完成賬號(hào)注冊(cè)

背景信息

相比較Terraform等開(kāi)源IT基礎(chǔ)架構(gòu)管理工具,使用彈性伸縮原生的實(shí)例自定義數(shù)據(jù)更加快速、安全,您只需準(zhǔn)備好實(shí)例自定義腳本,然后以Base64編碼的方式傳入伸縮配置即可,自動(dòng)創(chuàng)建的ECS實(shí)例會(huì)在啟動(dòng)時(shí)自動(dòng)執(zhí)行實(shí)例自定義腳本,實(shí)現(xiàn)應(yīng)用級(jí)別的擴(kuò)容和縮容。

本文結(jié)合具體場(chǎng)景向您展示ECS實(shí)例自定義數(shù)據(jù)的使用方式,關(guān)于ECS實(shí)例自定義數(shù)據(jù)的更多信息,請(qǐng)參見(jiàn)ECS實(shí)例自定義數(shù)據(jù)概述。Windows實(shí)例和Linux實(shí)例均支持設(shè)置實(shí)例自定義數(shù)據(jù)功能,主要功能體現(xiàn)如下:
  • 自定義功能:作為實(shí)例自定義腳本在啟動(dòng)實(shí)例時(shí)執(zhí)行,您可以自定義實(shí)例的啟動(dòng)行為。
  • 引用功能:作為普通數(shù)據(jù)向?qū)嵗齻魅胄畔ⅲ梢栽趯?shí)例中引用這些數(shù)據(jù)。

注意事項(xiàng)

  • 使用實(shí)例自定義數(shù)據(jù)自動(dòng)配置ECS實(shí)例時(shí),您需要注意以下幾點(diǎn):
    • 伸縮組的網(wǎng)絡(luò)類型需要為專有網(wǎng)絡(luò)(VPC)。
    • 實(shí)例自定義數(shù)據(jù)需要為Base64編碼方式。
    • 實(shí)例自定義數(shù)據(jù)將以不加密的方式傳入實(shí)例,請(qǐng)不要以明文方式傳入機(jī)密的信息(例如密碼、私鑰數(shù)據(jù)等)。如果必須傳入,建議先加密原始數(shù)據(jù),以Base64方式編碼加密后的數(shù)據(jù)并傳入實(shí)例,然后在實(shí)例內(nèi)部以同樣的方式反解密。
  • 通過(guò)API創(chuàng)建伸縮配置時(shí),您可以使用UserData參數(shù)傳入實(shí)例自定義數(shù)據(jù),更多信息,請(qǐng)參見(jiàn)CreateScalingConfiguration
  • 除實(shí)例自定義數(shù)據(jù)外,SSH密鑰對(duì)、RAM角色名稱以及標(biāo)簽也可以幫助您更加高效靈活地管理ECS實(shí)例,更多信息,請(qǐng)參見(jiàn)使用伸縮配置的特性實(shí)現(xiàn)自動(dòng)部署

步驟一:準(zhǔn)備實(shí)例自定義數(shù)據(jù)

您可以利用實(shí)例自定義數(shù)據(jù)實(shí)現(xiàn)在ECS實(shí)例啟動(dòng)時(shí)自動(dòng)執(zhí)行自定義Shell腳本,在定義Shell腳本時(shí),需注意以下幾點(diǎn):
類型說(shuō)明
腳本格式首行固定為#!,例如#!/bin/sh
腳本限制在Base64編碼前腳本內(nèi)容不能超過(guò)16 KB。
腳本執(zhí)行頻率僅在首次啟動(dòng)實(shí)例時(shí)執(zhí)行一次。
  1. 自定義一個(gè)Shell腳本,實(shí)現(xiàn)在ECS實(shí)例啟動(dòng)時(shí)配置yum和NTP服務(wù)。
    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. 對(duì)Shell腳本進(jìn)行Base64編碼。
    Base64編碼后的Shell腳本如下所示:
    IyEvYmluL3NoCiMgTW9kaWZ5IHl1bSByZXBvIGFuZCB1cGRhdGUKcm0gLXJmIC9ldGMveXVtLnJlcG9zLmQvKgp0b3VjaCBteXJlcG8ucmVwbwplY2hvICJbYmFzZV0iIHwgdGVlIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAibmFtZT1teXJlcG8iIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiYmFzZXVybD1odHRwOi8vbWlycm9yLmNlbnRvcy5vcmcvY2VudG9zIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCmVjaG8gImdwZ2NoZWNrPTAiIHwgdGVlIC1hIC9ldGMveXVtLnJlcG9zLmQvbXlyZXBvLnJlcG8KZWNobyAiZW5hYmxlZD0xIiB8IHRlZSAtYSAvZXRjL3l1bS5yZXBvcy5kL215cmVwby5yZXBvCnl1bSB1cGRhdGUgLXkKIyBNb2RpZnkgTlRQIFNlcnZlcgplY2hvICJzZXJ2ZXIgbnRwMS5hbGl5dW4uY29tIiB8IHRlZSAvZXRjL250cC5jb25mCnN5c3RlbWN0bCByZXN0YXJ0IG50cGQuc2VydmljZQ==

步驟二:創(chuàng)建并啟用伸縮組

  1. 創(chuàng)建伸縮組,并在創(chuàng)建成功后查看伸縮組詳情。
    具體操作,請(qǐng)參見(jiàn)配置伸縮組
    創(chuàng)建伸縮組時(shí),請(qǐng)注意以下配置項(xiàng):
    配置項(xiàng)說(shuō)明
    組內(nèi)最小實(shí)例數(shù)設(shè)置為1,表示在啟用伸縮組后即會(huì)自動(dòng)創(chuàng)建一臺(tái)ECS實(shí)例。
    組內(nèi)實(shí)例配置信息來(lái)源選擇從零開(kāi)始創(chuàng)建的方式。
    網(wǎng)絡(luò)類型選擇專有網(wǎng)絡(luò)類型。
    專有網(wǎng)絡(luò)選擇已創(chuàng)建的專有網(wǎng)絡(luò)ID。
    選擇交換機(jī)選擇對(duì)應(yīng)虛擬交換機(jī)。
    新創(chuàng)建的伸縮組出現(xiàn)在伸縮組列表中,且伸縮組處于停用狀態(tài),您可以單擊操作列下的查看詳情,查看伸縮組的更多信息。
  2. 創(chuàng)建伸縮配置,并在創(chuàng)建成功后啟用配置。
    具體操作,請(qǐng)參見(jiàn)創(chuàng)建伸縮配置(ECS實(shí)例)
    創(chuàng)建伸縮配置時(shí),請(qǐng)注意以下配置項(xiàng):
    配置項(xiàng)說(shuō)明
    基礎(chǔ)配置鏡像選用公共鏡像中的CentOS 7.9 64位。
    系統(tǒng)配置登錄憑證選擇密鑰對(duì)方式。
    密鑰對(duì)選擇創(chuàng)建好的密鑰對(duì)。如何創(chuàng)建密鑰對(duì),具體操作,請(qǐng)參見(jiàn)創(chuàng)建SSH密鑰對(duì)
    高級(jí)選項(xiàng)(實(shí)例RAM角色&實(shí)例自定義數(shù)據(jù)cloud-init) > 實(shí)例自定義數(shù)據(jù)輸入步驟一:準(zhǔn)備實(shí)例自定義數(shù)據(jù)中準(zhǔn)備的實(shí)例自定義數(shù)據(jù)腳本。
  3. 啟用伸縮組。
    具體操作,請(qǐng)參見(jiàn)啟用伸縮組

步驟三:驗(yàn)證實(shí)例自定義數(shù)據(jù)的效果

由于創(chuàng)建伸縮組時(shí)指定組內(nèi)最小實(shí)例數(shù)為1,在啟用伸縮組后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建1臺(tái)ECS實(shí)例,以保證伸縮組滿足最小實(shí)例數(shù)的限制。

  1. 查看伸縮活動(dòng)。
    具體操作,請(qǐng)參見(jiàn)查看伸縮活動(dòng)詳情。您可以查看到系統(tǒng)已自動(dòng)創(chuàng)建1臺(tái)ECS實(shí)例。
  2. 登錄ECS實(shí)例。
    驗(yàn)證實(shí)例自定義數(shù)據(jù)效果時(shí)需要登錄ECS實(shí)例,對(duì)Linux實(shí)例建議您使用密鑰對(duì),具體操作,請(qǐng)參見(jiàn)創(chuàng)建SSH密鑰對(duì)通過(guò)密鑰認(rèn)證登錄Linux實(shí)例
    說(shuō)明 如果實(shí)例已設(shè)置登錄密碼或者綁定密鑰對(duì),您也可以選擇通過(guò)Workbench方式連接實(shí)例,具體操作,請(qǐng)參見(jiàn)通過(guò)密碼或密鑰認(rèn)證登錄Linux實(shí)例
  3. 查看服務(wù)狀態(tài)。
    服務(wù)狀態(tài)如下圖所示,即yum和NTP服務(wù)已開(kāi)啟,表示伸縮配置中的實(shí)例自定義數(shù)據(jù)配置已生效。服務(wù)狀態(tài)