使用实例自定义数据自动配置ECS实例

更新时间:2025-03-18 04:00:59

为了提供更加高效灵活的伸缩服务,弹性伸缩配置中新增了实例自定义数据。您可以利用实例自定义数据自动完成ECS实例配置,从而安全快速地实现应用级别的扩容和缩容。

背景信息

相比较于Terraform等开源IT基础架构管理工具,使用弹性伸缩原生的实例自定义数据更加快速、安全,您只需准备好实例自定义脚本,然后以Base64编码的方式传入伸缩配置即可,自动创建的ECS实例会在启动时自动执行实例自定义脚本,实现应用级别的扩容和缩容。

本文结合具体场景向您展示ECS实例自定义数据的使用方式,关于ECS实例自定义数据的更多信息,请参见自定义实例初始化配置。Windows实例和Linux实例均支持设置实例自定义数据功能,主要功能体现如下:

  • 自定义功能:作为实例自定义脚本在启动实例时执行,您可以自定义实例的启动行为。

  • 引用功能:作为普通数据向实例传入信息,您可以在实例中引用这些数据。

注意事项

  • 使用实例自定义数据自动配置ECS实例时,您需要注意以下几点:

    • 伸缩组的网络类型需要为专有网络(VPC)。

    • 实例自定义数据需要为Base64编码方式。

    • 实例自定义数据将以不加密的方式传入实例,请不要以明文方式传入机密的信息(例如密码、私钥数据等)。如果必须传入,建议先加密原始数据,以Base64方式编码加密后的数据并传入实例,然后在实例内部以同样的方式反解密。

  • 通过API创建伸缩配置时,您可以使用UserData参数传入实例自定义数据,更多信息,请参见CreateScalingConfiguration

  • 除实例自定义数据外,SSH密钥对、RAM角色名称以及标签也可以帮助您更加高效灵活地管理ECS实例,更多信息,请参见使用伸缩配置特性实现自动扩缩容

步骤一:准备实例自定义数据

您可以利用实例自定义数据实现在ECS实例启动时自动执行自定义Shell脚本,在定义Shell脚本时,需注意以下几点:

类型

说明

类型

说明

脚本格式

首行固定为#!,例如#!/bin/sh

脚本限制

Base64编码前,脚本内容不能超过32 KB。

脚本执行频率

仅在首次启动实例时执行一次。

  1. 自定义一个Shell脚本,实现在ECS实例启动时配置yumNTP服务。

    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密钥对

    高级设置

    实例自定义数据

    输入步骤一:准备实例自定义数据中准备的实例自定义数据脚本。

  3. 启用伸缩组。

    具体操作,请参见启用伸缩组

步骤三:验证实例自定义数据的效果

由于创建伸缩组时指定组内最小实例数1,在启用伸缩组后,系统会自动创建1ECS实例,以保证伸缩组满足最小实例数的限制。

  1. 查看伸缩活动。

    具体操作,请参见查看伸缩活动详情。您可以查看到系统已自动创建1ECS实例。

  2. 登录ECS实例。

    验证实例自定义数据效果时需要登录ECS实例,对Linux实例建议您使用密钥对,具体操作,请参见创建SSH密钥对通过密钥认证登录Linux实例

    说明

    如果实例已设置登录密码或者绑定密钥对,您也可以选择通过Workbench方式连接实例,具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

  3. 查看服务状态。

    服务状态如下图所示,即yumNTP服务已开启,表示伸缩配置中的实例自定义数据配置已生效。服务状态

  • 本页导读 (1)
  • 背景信息
  • 注意事项
  • 步骤一:准备实例自定义数据
  • 步骤二:创建并启用伸缩组
  • 步骤三:验证实例自定义数据的效果
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等