[AWS] 使用 AWS CLI 快速创建自动缩放!

你好。
我是Mandai,负责Wild 开发团队。

在使用 AWS 自动扩展时,您可能需要在开发过程中以及运维开始后创建启动设置、自动扩展组和其他任务。
从 AWS 控制台重复执行这些步骤既耗时又容易导致疏漏。

AWS 有一个名为 AWS CLI 的命令行工具,因此一旦创建完成,就可以快速、安全、可靠地创建它。

这类内容已经泛滥成灾,很难说之前有多少人做过,但事实就是如此。这就是它。那么,让我们开始吧!

 

自动缩放启动设置和自动缩放组

要实现自动扩缩容,您必须首先创建一个启动配置作为模板。
此时,您需要注册 AMI,但一旦创建了启动配置,就无法更改。
换句话说,如果您忘记在 AMI 中包含必需的命令,或者用户数据或环境设置发生更改,则需要重新创建启动配置。

如果启动设置发生更改,则还需要根据新的启动设置重新创建自动伸缩组,因此最好一次性完成所有操作。

当您从 Amazon Linux 提供的 AMI 启动实例时,以 aws 开头的命令会自动安装,但在其他 AMI 或本地环境中,您需要自行安装这些命令。

“安装和配置 AWS CLI - Amazon Kinesis Streams” ,请使用适合您操作系统的方法进行安装。

 

“aws autoscaling create-launch-configuration”命令用于创建自动扩展启动配置。

要创建自动扩展启动配置,请使用“aws autoscaling create-launch-configuration”命令。
如果您不确定如何使用该命令或有哪些可用选项,可以通过运行“aws autoscaling create-launch-configuration help”(英文)来查看选项列表。

有些选项是必填项,因此基本格式如下:

aws autoscaling create-launch-configuration \ --launch-configuration-name [启动配置的名称] \ --image-id [要使用的 AMI 的 AMI ID] \ --security-groups [要应用的安全组列表] \ --instance-type [要启动的 EC2 实例类型]

上述命令本身并没有什么特别需要注意的地方,但在设置安全组时,需要列出多个以空格分隔的“sg-xxxxxxx”。
如果您正在使用 bash 创建 shell 脚本,可以按如下方式操作。

sg=( "sg-xxxxxxx1" "sg-xxxxxxx2" "sg-xxxxxxx3" ) aws autoscaling create-launch-configuration \ --launch-configuration-name hogehoge \ --image-id ami-xxxxxxxx \ --security-groups ${sg[@]} \ --instance-type t2.micro

由于通常会注册多个安全组,如果将它们组织成一个数组,则可以通过简单的部署轻松管理它们。
由于环境通常构建在多可用区 (AZ) 环境中,因此最好以相同的方式列出可用区,如下所示。

az=( "ap-northeast-1c" "ap-northeast-1a" )

 

使用“--user-data”选项可以在启动配置中指定用户数据

启动启用自动扩缩容的 EC2 实例时,通常会使用用户数据进行初始配置。
用户数据会在创建启动配置时注册,因此如果用户数据发生任何更改,则需要重新创建启动配置。考虑到需要多次尝试才能确保其按预期运行,自动化此过程可能更为理想。

从 AWS CLI 在启动配置中注册用户数据时,除了上述基本格式外,还必须使用“--user-data”选项指定一个文件。

aws autoscaling create-launch-configuration \ --launch-configuration-name [启动配置的名称] \ --image-id [要使用的 AMI 的 AMI ID] \ --security-groups [要应用的安全组列表] \ --instance-type [要启动的 EC2 实例类型] \ --user-data "file:///path/to/user-data.sh"

用户数据可以指定为本地文件。
如果在“file://”后添加绝对路径,例如“/path/to/user-data.sh”,AWS CLI 将尝试从运行 AWS CLI 的计算机上的相应路径检索该文件。

如果您指定一个没有斜杠(两个斜杠)的路径,例如“file://user-data.sh”,它将尝试从当前目录中检索该文件。

从帮助文档中可以看到,AWS 控制台中可以选择使用 base64 进行注册,但通过 CLI,您可以直接指定文件路径。

 

使用“aws autoscaling create-auto-scaling-group”命令创建自动伸缩组

创建启动配置后,创建自动伸缩组。
如果按如下方式创建启动配置:

aws autoscaling create-launch-configuration \ --launch-configuration-name my-test-lc \ --image-id ami-123123 \ --security-groups sg-xyzxyz \ --instance-type t2.large

创建自动缩放组的命令如下:

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-test-asg \ --launch-configuration-name my-test-lc \ --min-size 2 \ --max-size 4 \ --desired-capacity 2 \ --target-group-arns "arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/hogehoge-group/1234567890abcdef" --availability-zones "ap-northeast-1c" "ap-northeast-1a" \ --vpc-zone-identifier "subnet-aaaaaaaa,subnet-bbbbbbbb"

上述命令,

  • 自动缩放组的名称是“my-test-asg”。
  • 自动缩放组中使用的启动设置名称为“my-test-lc”。
  • 最小数量为 2 个单位
  • 最大尺寸为 4 个单位
  • 所需实例数:2
  • 目标组 ARN 为“arn:aws:elasticloadbalancing:...”
  • 使用的可用区为“ap-northeast-1c”和“ap-northeast-1a”。
  • VPC 子网为“subnet-aaaaaaaa”和“subnet-bbbbbbbb”。


VPC 设置以逗号分隔,这让人有些困惑,但事实就是如此,所以你只能记住它。

另外,由于这次我们选择了两个可用区,因此最初的两台机器应该位于不同的可用区中。

 

尝试设置一下

使用 AWS 控制台,您需要点击选择各种项目,如果您忘记勾选某些选项,则可能无法正常工作,这可能会有点麻烦,但一旦设置好,您应该能够创建基本相同的内容,因此您可以随心所欲地重新创建 AMI 并验证用户数据。

说实话,我觉得如果你不用它,那就纯粹是在浪费时间。

可以通过与 SQS 连接来自动执行此类处理,但如果您做得太复杂,可能会偏离您的目的,所以要小心。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
3,293
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。