[AWS] 使用 AWS CLI 快速创建自动缩放!
目录
你好。
我是Mandai,负责Wild 开发团队。
在 AWS 上使用自动扩展时,您需要做很多事情,例如在开发期间和操作开始后创建启动设置和自动扩展组。
每次从 AWS 控制台执行此操作都需要时间,如果执行多次,最终可能会丢失某些内容。
AWS 有一个名为 AWS CLI 的命令行工具,因此一旦创建它,您就可以快速、安全、可靠地创建它。
这种内容实在是太多了,我都不知道是多少,不过也就这样了。这是这个。那么,我们赶紧出发吧!
自动缩放启动设置和自动缩放组
对于自动缩放,您首先需要创建一个成为模板的启动配置。
此时,您需要注册 AMI,但是一旦创建了启动设置,就无法更改它们。
换句话说,如果您忘记在 AMI 中包含必要的命令、更改用户数据或更改环境设置,则需要重新创建启动配置。
如果启动设置发生更改,则还必须从新的启动设置重新创建自动缩放组,因此我想立即执行此操作。
当从 Amazon Linux(由 Amazon 提供)中的 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 自动缩放 create-launch-configuration \ --launch-configuration-name hogehoge \ --image-id ami-xxxxxxxx \ --security-groups ${sg[@]} \ --实例类型 t2.micro
通常会注册多个安全组,因此如果将它们排列在数组中,只需扩展它们即可轻松管理它们。
由于我经常使用多可用区构建环境,因此我认为最好也列出可用区,如下所示。
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 将尝试从运行 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 \ --所需容量 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 "子网-aaaaaaaa,子网-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等链接来自动化此过程,但如果你做的事情过于复杂,你可能会看不到目的,所以要小心。
就是这样。