赞
踩
纵向扩展:提高实例本身的硬件配置,使其提高性能以处理更多的并发访问
横向扩展:采用更多的同类型同配置的实例来共同处理用户的访问,在前面再使用一个负载均衡器以保证用户访问的是同一个接口同时提供健康检查
特征:
类型:
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable --now httpd
avzone=`curl http://169.254.169.254/latest/meta-data/placement/availability-zone`
echo "<html><h1>welcome to visit my web server at <font color="red">$avzone</font></h1></html>" > /var/www/html/index.html
echo "i am alive" > /var/www/html/health.html
创建完成后,在浏览器处访问处于2b区域的实例,输入ip,此时就可以看到发布页面的内容;再ip后面再加/health.html就可以访问到该健康页面
在EC2页面的左侧导航栏处找到load balancers ,点击create load balancer ,进入后有三种不同类型的负载均衡器可供选择,此处选应用型负载均衡器,进入后自定义名称;在scheme处选择第一个 internel-facing,表示面向互联网的;ip 就选择4;下面的listeners处表示要监听的端口,此处默认已经有了 http-80;在下面的av-zone处,将三个区域的实例都选中;到第三步安全组配置时,创建一个新的安全组,自定义名称,此处只保留80端口即可;第四步创建目标组 在name处自定义名称,type处选择实例,在health checks处的path处将创建好的健康页面写入【/health.html】,在健康检查设置处,将healthy threshold改为2,表示当2次没有回应就认为down,将 unhealthy threshold 改为2,表示2次成功后就恢复到目标组里,timeout改为2,表示两次没有回应就是down,interval改为5,表示每次检查间隔时间;第五步,将三个实例都选中,点击 add to registered 进行注册;最后点击create
使用命令行的方式任意登录到其中一台实例上,sudo -s
,使用root身份,cd /var/www/html/
ls
,此时可以看到 index和health页面,将health页面修改,mv health.html unhealthy.html
,此时去访问其health页面是无法找到的,那么此时其页面找不到,就会将该实例的状态定义为unhealthy(可以再target group页面的targets中看到其状态),此时在输入dns访问实例,此时负载已经没有down掉的那一台了,只有其他两台做负载;将其文件恢复后,检测到就会将其再自动加入目标组中,进行轮询
为了保证安全,可以创建一个安全组,在左侧导航栏找到安全组没进入后点击创建,自定义名称,add rule 【http ,在source处将创建负载均衡器时所使用的的安全组设为源】即可;进入ec2界面,将所有实例,点击actions–> 安全–>change security group -->选择刚才创建的安全组。此时无法直接通过ip地址去访问,只能通过域名访问,达到保护安全的作用
在EC2的管理界面,左侧导航栏处的target groups处,进入其属性并编辑 ,点击进入,在弹出的页面中有一个stickness,选中enable,在显示出的框中输入会话保持的时间,可以输入30秒方便观察实验效果,保存即可
此时刷新浏览器,会默认在同一台实例上,直到会话保持的时间过去,再刷新,其访问的实例就会发生改变。
进入EC2的管理界面,使用前面已经创建好的组和负载均衡器,注意在目标组界面的最下面处,点击 edit attribute ,将 deregistration delay 修改为30,表示当目标组中有实例故障后,只需要等待30秒的时间,就会去创建一个新的实例加入进来。注意如果上面的实验中,没有将会话保持取消记得要取消
在左侧导航栏,选则启动模板 ,点击create。第一步选择 Amazon linux 2 AMI 的镜像,第二步选择实例类型如下。第三步输入自定义名称,IAM role指定为none,在user data处写入上面实验相同的脚本,其他默认即可;在第五步安全组处选择已存在的安全组,开放80和22端口的;最后完成创建即可
点击左侧导航Auto scaling,选中其子菜单 auto scaling,点击create进入,进入后选择刚才自己创建的configuration进入第一步,自定义名称,group size 选择1表示从一个实例开始,在subnet处将三个av-zone的子网都选择。点击展开 advanced details,选中load balancing后面的框,将其展开的目标组选择为之前创建好的目标组,在health check grace period 处将实例热身启动的时间设置为60秒(注意如果实例中需要启动的服务比较多,该时间可以给的长一些,以保证实例中的服务正常开启),其他默认;
进入左侧导航栏的 instance界面,在这里可以看到自动创建的实例;进入左侧导航栏的 load balances 复制其dns,然后去浏览器访问是可以的。从左侧导航栏进入 target group 的 targets中可以看到自动创建的实例已经加入到了目标组
在左侧导航栏的instances中将该实例terminate,此时再回到 Auto scaling group中观察,可以看到会自动的再创建一台实例
手动扩展
进入ASG的管理界面,在actions–>edit ,将Max改为3台,desired capacity 修改为2台(希望有的台数),然后保存
此时在下面的 activity history 处就可以看到变化,看到又添加了一台实例到目标组中。也就是算上前面的实验,现在目标组中一共有两台自动添加的实例,我们可以去浏览器访问域名,可以看到两台实例时均衡被调度的
再次进入ASG的管理界面,在actions–>edit ,将desired capacity 修改为1台,然后保存
此时在下面的 activity history 处就可以看到变化,会自动的结束一台实例。此时再去浏览器访问会看到只有一台实例被调度
创建 scaling policies
在ASG页面下面的scaling polices处,点击 add policy ,这里policy会有三种不同的规则。点开后默认的第一种规则处的 metric type 可以选择一些参数,ASG会自动的去跟踪这些参数;第二种是创建简单的policy规则,该方式是可以选择参数的阈值,当达到阈值后就会增加或收缩实例的数量同时也会产生告警信息;第三种是在第二种的基础上添加一些步骤,也就是在达到多少的阈值后会添加新的policy,变成以步骤的方式进行。
点击 add policy ,创建第一张默认的跟踪目标组方式的policy。自定义名称、metric type 处选择 average cpu u……,表示当cpu的使用达到阈值后、target value 为50,表示当cpu的使用达到百分之50时会创建的新的实例,当低于50时,会将多余的实例终止。点击保存
此时使用命令行的方式登录到当前的一台实例上,输入sudo -s
yes > /dev/null &
,此时该命令就会使得cpu产生负载,此时输入top
会查看到cpu的使用情况一定是大于50的
此时可以看到ASG界面正在创建新的实例,而且自动将期望实例个数从1调整为3。等三台实例都为运行状态后,去浏览器上刷新访问就会自动实现负载,因为它检测到需要在再添加两台实例才能达到cpu的使用率下降到50以下
此时进入命令行,输入pkill yes
,将产生负载的命令删除,此时再输入top
可以看到cpu的使用率下降至50以下
此时再去ASG界面,可以看到自动将两台实例停止。在去浏览器访问就可以看到只有一台实例被调度
注意:实验完成后,将ASG删除,删除后,实例会被自动删除。将负载均衡器删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。