具有EC2的高度可用网站,3个公共子网中的自定义VPC
#aws #database #ec2 #vpc

在本文中,我将使用亚马逊的内置功能,例如应用程序负载均衡器,可用性区域和一个自动尺度级组,为EC2实例创建一个高可用的EC2实例网站。< /p>

您可以在我的GitHub Repository中找到与EC2相关的所有项目。

让我们开始!

目标:

  • 一个自定义VPC,3个公共子网3个可用区域 可用性
  • 创建一个密钥对,一个安全组
  • EC2实例的启动模板
  • 创建一个至少2个EC2实例的自动缩放组 最多5。
  • 创建一个目标组并注册两个EC2实例。
  • 添加应用程序负载平衡器。确保启动模板 包括一个具有Web服务器的EC2实例
  • 将负载平衡器附加到自动缩放组
  • 终止1 EC2实例以显示自动缩放的工作原理
  • 清理
  • 我们到目前为止所做的

先决条件:

使用的资源:

知道如何创建EC2 instancesSub GroupsKey pairs

我已将AWS文档转交给创建Custom VPCssetting 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

Image description

Image description

单击查看VPC

Image description

创建密钥对

来自AWS管理控制台
在EC2仪表板上
在侧栏上,在网络和安全下
单击键对
单击创建键对
在创建密钥对下
名称 - 项目-KP
进行默认设置
单击创建键对

Image description

创建安全组

a 安全组充当您控制传入和传出流量的EC2实例的虚拟防火墙。

来自AWS管理控制台
在EC2仪表板上
在侧栏上,在网络和安全下
单击安全组
单击创建安全组
在基本细节下
安全组名称-Project -Websg
描述-Project -Websg
VPC-选择Project -VPC
入站规则
添加规则

  • 打开端口80(http)和22(ssh)至0.0.0.0.0/16
  • 作为您控制的EC2实例的虚拟防火墙 传入和传出流量

进行默认设置
单击创建安全组

Image description

Image description

启动模板

创建一个包含配置信息的启动模板,该信息将在自动缩放组中以后使用,以启动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-启用
进行默认设置
单击创建启动模板

Image description

创建自动缩放组

我转过了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
评论
创建自动缩放组

自动缩放组详细信息

Image description

单击活动选项卡
活动历史记录-2最低EC2实例成功启动

Image description

在EC2仪表板上
单击侧栏上的实例
要查看2个最低EC2实例
他们的实例状态显示运行
在不同的可用性区域 - us-east-1b和us-east-1c

Image description

创建目标组

我转介了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实例注册到目标组

该实例显示了``未使用''直到我们将此目标组分配给应用程序负载均衡器

Image description

创建应用程序负载平衡器

我转过了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分钟才能将应用负载平衡器的状态视为“活动”

Image description

验证查看2个EC2实例注册到目标组

  • Project-TG

Image description

将负载平衡器附加到自动缩放组

来自AWS管理控制台
在EC2仪表板上
在侧栏上,在自动缩放下
单击自动缩放组
检查项目-ASG-编辑
在编辑项目下
在负载平衡下
对于负载平衡器

检查 - 应用程序,网络或网关负载平衡器目标组

选择目标组-Project -TG
单击更新

在目标组的活动历史下 - 项目-TG
这些实例已成功启动

Image description

我丢失了互联网连接。因此,再次创建了相同的基础架构。现在2个EC2实例在US-EAST-1A和US-EAST-1B中。

Image description

现在终止1个EC2实例以显示自动缩放的工作方式

单击us-east-1a中的EC2实例
动作
单击终止实例

EC2控制台在US-EAST-1A中显示EC2实例终止,US-EAST-1B正在运行

Image description

自动缩放组,活动历史记录显示美国东部1A中的EC2实例终止

Image description

EC2控制台显示新的第二EC2实例在其他AZ的US-EAST-1C中

Image description

Image description

自动缩放组启动新的第二EC2实例可以在ASG Active历史记录中看到

Image description

清理:

  • 完成后删除AWS资源

删除自动升级组
应用负载平衡器
Tatget Group
VPCS
终止EC2

到目前为止,我们所做的事情:

使用Amazon的内置功能,例如应用程序负载平衡器,可用性区域和一个自动缩放组,使用3个公共子网中的自定义VPC创建了一个高度可用的EC2实例。