【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 的机器上的相应路径检索文件。

如果您指定一个没有斜杠(两个斜杠)的路径,例如“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,351
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

万代洋一

我的主要工作是开发社交游戏的Web API,但幸运的是,我也有机会参与其他各种任务,包括市场营销。
我在Beyond中的图像版权采用CC0协议。