在本文中,我将使用亚马逊的内置功能,例如应用程序负载均衡器,可用性区域和一个自动尺度级组,为EC2实例创建一个高可用的EC2实例网站。< /p>
您可以在我的GitHub Repository中找到与EC2相关的所有项目。
让我们开始!
目标:
- 一个自定义VPC,3个公共子网3个可用区域 可用性
- 创建一个密钥对,一个安全组
- EC2实例的启动模板
- 创建一个至少2个EC2实例的自动缩放组 最多5。
- 创建一个目标组并注册两个EC2实例。
- 添加应用程序负载平衡器。确保启动模板 包括一个具有Web服务器的EC2实例
- 将负载平衡器附加到自动缩放组
- 终止1 EC2实例以显示自动缩放的工作原理
- 清理
- 我们到目前为止所做的
先决条件:
- AWS Account(不是根帐户)
- 具有管理员特权的IAM user
使用的资源:
知道如何创建EC2 instances,Sub Groups和Key pairs。
我已将AWS文档转交给创建Custom VPCs和setting up Auto-scaling coupled with Application Load Balancer。
实施此项目的步骤:
一个自定义VPC,3个公共子网3个可用区域,可用于高可用性
在AWS管理控制台上
VPC仪表板
导航到VPC
单击从顶部创建VPC
在VPC设置下 - VPC和更多
自动生成 - 检查和名称“项目”
IPv4 CIDR块 - 设置为10.0.0.0/16
可用性区域(AZS)-3
公共子网的数量-3
私人子网的数量-0
DNS选项
- 启用DNS主机名获取IPv4地址
- 启用DNS解决方案以获取主机名提供 自动
单击创建VPC
单击查看VPC
创建密钥对
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在网络和安全下
单击键对
单击创建键对
在创建密钥对下
名称 - 项目-KP
进行默认设置
单击创建键对
创建安全组
a 安全组充当您控制传入和传出流量的EC2实例的虚拟防火墙。
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在网络和安全下
单击安全组
单击创建安全组
在基本细节下
安全组名称-Project -Websg
描述-Project -Websg
VPC-选择Project -VPC
入站规则
添加规则
- 打开端口80(http)和22(ssh)至0.0.0.0.0/16
- 作为您控制的EC2实例的虚拟防火墙 传入和传出流量
进行默认设置
单击创建安全组
启动模板
创建一个包含配置信息的启动模板,该信息将在自动缩放组中以后使用,以启动EC2实例,并具有根据需求进行计算或外出的策略,以最小的限制2个实例,最多为5。
我提到了How to create a Launch Template的AWS文档
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在实例下,单击启动模板
单击创建启动模板
在启动模板名称和描述下
启动模板名称-Project -TMPL
在应用程序和操作系统图像(亚马逊机器图像)
选择Amazon Linux -Amazon Linux 2 AMI
实例类型-T2.Micro
钥匙对(登录)-Project -KP
在防火墙(安全团体)下
选择现有的安全组 - 检查
选择现有的安全组 - 项目-Websg
在高级网络配置下
自动分配公共IP-启用
进行默认设置
单击创建启动模板
创建自动缩放组
我转过了How to Create Auto-scaling Group的AWS文档
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在自动缩放下
单击自动缩放组
单击自动缩放组
在选择启动模板或配置
下
在名称下
自动缩放组名称-Project -ASG
在启动模板下
选择启动模板 - project-tmpl
单击下一步
在网络下
在VPC
下
选择-Project -VPC
在可用区和子网下
在3个不同的可用性区域中选择3个公共子网
- project-subnet-public1-us-east-1a 10.0.0.0/20
- project-subnet-public2-us-east-1b 10.0.16.0/20
- project-subnet-public3-us-east-1c 10.0.32.0/20
单击下一步
在其他设置下 - 可选
在监视下
在CloudWatch中启用组指标集合 - 检查
单击下一步
在配置组大小和缩放策略下
在小组尺寸下
- 期望的容量-2
- 最低容量-2
- 最大容量-5
在缩放策略下 - 可选
目标跟踪缩放策略 - 检查
进行默认设置
单击Next/Next/Next
评论
创建自动缩放组
自动缩放组详细信息
单击活动选项卡
活动历史记录-2最低EC2实例成功启动
在EC2仪表板上
单击侧栏上的实例
要查看2个最低EC2实例
他们的实例状态显示运行
在不同的可用性区域 - us-east-1b和us-east-1c
创建目标组
我转介了AWS文档的create Target Group
按照亚马逊的“您”为目标组注册目标。默认情况下,Load Balancer使用您为目标组指定的端口和协议向注册目标发送请求。”
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在负载平衡下
单击目标组
单击创建目标组
在基本配置下
选择目标类型 - 实例
目标组名称-Project -TG
VPC -Project -VPC
在高级健康检查设置下
健康阈值-3
不健康的阈值-2
超时-5
进行默认设置
单击下一步
在注册目标下
在可用实例(2)
检查2个可用的EC2实例,将在US-EAST-1B和US-EAST-1C中注册到目标组
单击以下挂起的添加`
单击创建目标组以完成将EC2实例注册到目标组
该实例显示了``未使用''直到我们将此目标组分配给应用程序负载均衡器
创建应用程序负载平衡器
我转过了AWS文档的create Application Load Balancer
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在负载平衡下
单击负载平衡器
单击创建负载平衡器
在选择负载平衡器类型下
对于负载平衡器类型
应用程序负载平衡器 - 单击创建
在应用程序负载平衡器的工作原理下
在基本配置下
负载平衡器名称-Project -Alb
方案 - 面向互联网
进行默认
在网络映射下
VPC-选择Project -VPC
检查
- us-east-1a
- us-east-1b
- us-east-1c
安全组 - 选择Project -Websg
在听众和路由下
在听众http下:80
默认操作 - 选择Project -TG
进行默认设置
单击创建负载平衡器
需要3-5分钟才能将应用负载平衡器的状态视为“活动”
验证查看2个EC2实例注册到目标组
- Project-TG
将负载平衡器附加到自动缩放组
来自AWS管理控制台
在EC2仪表板上
在侧栏上,在自动缩放下
单击自动缩放组
检查项目-ASG-编辑
在编辑项目下
在负载平衡下
对于负载平衡器
检查 - 应用程序,网络或网关负载平衡器目标组
选择目标组-Project -TG
单击更新
在目标组的活动历史下 - 项目-TG
这些实例已成功启动
我丢失了互联网连接。因此,再次创建了相同的基础架构。现在2个EC2实例在US-EAST-1A和US-EAST-1B中。
现在终止1个EC2实例以显示自动缩放的工作方式
单击us-east-1a中的EC2实例
动作
单击终止实例
EC2控制台在US-EAST-1A中显示EC2实例终止,US-EAST-1B正在运行
自动缩放组,活动历史记录显示美国东部1A中的EC2实例终止
EC2控制台显示新的第二EC2实例在其他AZ的US-EAST-1C中
自动缩放组启动新的第二EC2实例可以在ASG Active历史记录中看到
清理:
- 完成后删除AWS资源
删除自动升级组
应用负载平衡器
Tatget Group
VPCS
终止EC2
到目前为止,我们所做的事情:
使用Amazon的内置功能,例如应用程序负载平衡器,可用性区域和一个自动缩放组,使用3个公共子网中的自定义VPC创建了一个高度可用的EC2实例。
。