Making Your Environment Highly Avaiable
实验目标
目标分解说明
- 创建一个EC2镜像,并通过这个镜像创建一个新的实例
- 将VPC在同一个Region的多个AZ扩展使用
- 创建VPC子网和路由表
- 创建AWS的NAT Gateway
- 创建一个Load Banlance(负载均衡器)
- 创建一个扩展组
目标架构图如下
高可用目标架构图.png操作步骤
识别初始化环境
- AWS的实验环境是通过CloudFormation自动构建的,这里假定按照实验1的操作内容,已经在单个AZ下构建了VPC,Subnet,IGW网关、路由表,安全组(出入站规则的配置),整个部署架构处于单点状态;
- 一个VPC
- 一个Public Subnet和Private Subnet在同一个AZ中
- 一个Internet Gateway与Public Subnet关联
- 一个 Nat Gateway在Public Subnet中
- 一个EC2实例在Public Subnet中
-
相关初始化的架构图如下
image.png
登录EC2实例
- 基于不同的操作系统远程登录EC2实例,EC2默认是不提供root账号远程SSH登录的,只提供一个ec2-user账号基于秘钥访问。
- 我的环境:mac
- 登录准备:下载KEYPAIR.pem,同时在EC2控制台查看公网IP吗,替换下边代码中的 KEYPAIR.pem和EC2PublicIP的值;
- 登录方式:打开MAC的终端控制台,找到KEYPAIR.pem的目录,执行如下命令
chmod 400 KEYPAIR.pem
ssh -i KEYPAIR.pem ec2-user@EC2PublicIP
- 如果是windows环境登录方式
- 登录准备:下载KEYPAIR.pem或者KEYPAIR.ppk文件
- 登录方式:基于我们使用的SSH工具来设置登录,如使用putty或者SCRT,将秘钥设置到Session的对应位置
安装Web applicaiton
- 操作步骤
#更新AMI系统
sudo yum -y update
#安装httpd服务器
sudo yum -y install httpd php
#设置开机启动httpd服务
sudo chkconfig httpd on
#下载一个包含PHP应用的程序包
wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-100-ARCHIT/v5.4.0/lab-2-ha/scripts/phpapp.zip
#解压PHP程序到默认的apache目录中
sudo unzip phpapp.zip -d /var/www/html/
#启动httpd服务器
sudo service httpd start
基于现有的EC2实例,创建一个AMI镜像
- 就是基于现有的已经安装了PHP应用程序的EC2实例创建一个镜像
- 操作方式
- 选择正在运行的EC2实例的操作菜单
- 选择“映像”目录,选择创建的菜单
- 设置 AMI镜像的名称,就可以自动完成镜像创建了
配置第二个AZ(可用区)
- 目标:创建另一个Public Subnet、另一个Private Subnet、另一个NAT Gateway、一个Private Route Table
-
目标示意图
image.png - 操作方式
- 选择VPC菜单,查看Public Subnet1的AZ(Availability Zone),后边创建的Public Subnet 2一定不能选择相同的AZ
-
创建新的Public Subnet 2,参考相关信息如下
image.png - 修改Public Subnet 2的Route Table为Public Route Table,这样Public Subnet 2可以直接访问公网
-
创建一个Private Subnet 2
创建AZ的私有子网 - 创建一个NAT Gateway,设置他的Subnet是Public Subnet 2,同时生成一个EIP。然后这个NAT Gateway就后台创建生成,并返回一个nat-id
- 创建另外一个私有路由表“Private Route Table 2”,与Private Subnet 2关联。设置他的destination为0.0.0.0/0,target 就是刚才生成的nat-id
创建应用的Application Load Balancer(负载均衡器)
- 目标:用来做流量分发的。通过检测不同EC2实例的状态,将流量进行分发
-
目标架构如下图
负载均衡器 - 操作步骤
- 选择EC2菜单,在左侧导航栏选择负载均衡器菜单,点击创建
- 选择可用区:在负载均衡器中设定AZ,因为我们在两个AZ都有 Public Subnet,这里我们一次指定 Public Subnet 1和Public Subnet 2两个可用区。这样流量就会被转发到这两个AZ中了
- 设置安全组:就是设置整体的出入站规则
- 设置路由:就是创建一个Group,供负载均衡器进行流量转入,可以设置健康检查的间隔(如10S),健康阈值(如2)
创建一个AS Group(自动扩展组)
- 创建一个自动扩展组
- 在自动扩展组下创建启动配置“Create Launch configuration”
- 选择我们的镜像、选择实例配置、存储、安全组等信息
-
扩展组信息如图所示
自动扩展组
设置了最小组为2个EC2实例,在Private Subnet 1和Private Subnet 2中部署,选择了我们的跨AZ的VPC网络
- 设置与负载均衡器的关联,在高级设置的详情中进行关联,选择负载均衡器的那个组
测试应用
- 检查目标组中的EC2实例状态是否正常,点击图标可以刷新出EC2实例的状态
- 在AWS左边的导航栏中查看LB的状态,获取LB提供的域名,类似“LB1-xxxx.elb.amazonaws.com”
-
直接通过LB提供的域名访问,应用的最终访问请求路径如下图
image.png
测试高可用架构
- 选择EC2实例,这时候可以看到有两个EC2实例,选择其中一个,进行实例终止操作,从浏览器展示的详情页面,可以看到请求被转发到另外的一个实例上了。
- 因为我们配置了最小的实例数是2,那么会自动重新创建一个新的可用实例
- 这样我们的高可用架构就完成了。
网友评论