创建ASG有两种方式——使用Launch Templates
和Launch Configurations
。它们在EC2页面的位置如下:
但是Launch configurations
目前并不是AWS推荐的方式(过时了),所以本章我们只会介绍Launch Template
:
Launch Template
里声明了实例的属性,包括AMI、实例类型、密钥对、安全组等等。
但相比于Launch Configuration
,Launch Template
:
Launch Template
支持ASG的所有新特性(比如在ASG里同时启动spot和on-demand机器),Launch Configuration
就欠缺这点。如果现在还用Launch Configuration
,AWS极其推荐迁移到Launch Template
本节我们将一步步动手,创建好一个Launch Template
在创建launch template
时,所有的参数都不是必填的。例如创建Launch Template
时缺省了实例类型,在创建ASG时可以再指定
在EC2页面,点击Create Launch Template
:
命名为MyFirstTemplate
,然后选择上Auto Scaling guidance
(这将有利于后面创建ASG,如果没钩选这个,则AMI是可选项,此时创建出来的Launch Template
创建不了ASG;钩选后,将强制把ASG所有的必选项变成必填):
模板上面可以打标签;也可以选择使用其他模板的属性(例如复用AMI、磁盘等设置),这里留空即可:
选择使用Amazon Linux AMI
(这里看到是required,如果没有在上面钩选Auto Scaling guidance
,则这里是optional):
选择默认的实例类型。这里先选择t2.micro
(在创建ASG时还可以覆盖,使用各种各样的机型):
选择安全组,这里先选择默认VPC下的默认安全组(注意要放开80端口公网访问,后面将进行测试):
设置磁盘属性,使用gp3
(默认是gp2):
添加Resource Tag
。注意这里的Tag和上面的Template Tag
不一样,这里的Tag打在创建出来的资源上,如实例、EBS。
很贴心的一点是可以选择Tag也打在磁盘上,这样创建出来的EC2及其磁盘都具有相同的Tag:
在高级设置部分,里面有很多创建EC2时常见的选项,例如IAM Role、关机行为、是否配置auto-recovery
等等。
回到最底部,填写userdata,让EC2创建时也启动一个Web服务:
#!/bin/bash
# Use this for your user data (script without newlines)
# Installs httpd (Linux 2 version)
yum update -y
yum install -y httpd.x86_64
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f) </h1>" > /var/www/html/index.html
echo "healthy" > /var/www/html/health.html
最后点击创建:
创建完成后,看到Launch Template
可以用于三种场景:
Spot Fleet