如何使用 AWS Auto Scaling 按需动态增加和减少实例
一、背景需求
当您不知道自己该选择何种类型的 EC2 实例的时候,也不清楚业务什么时候高峰,那我们使用 Auto Scaling 可以非常便捷的解决我们的问题,他根据我们设定的负载压力,自动进行扩展和缩容,以实现最小费用的情况下保证业务的正常运行。
二、配置步骤
2.1、创建 AMI
首先把我们正在运行的 EC2 的主机做一个镜像,内部服务设置为自启动,以保证扩容的时候所有服务可用。

2.2、创建负载均衡目标组
Auto Scaling 配合 ELB 来使用,动态把负载分发到后端机器,我们需要一个目标组来存储我们的 Auto Scaling 集群机器。

2.3、创建 Classic Load Balancer


2.4、创建启动配置
为了实例可以稳定启动,可以选择按需实例,或者高于市场价的 Spot 实例,尽量高多一些,保证成功率。


2.5、创建 Auto Scaling 组



我这里因为选择了竞价实例,好几次都启动失败,所以我换了一个按需实例的启动配置。
2.6、测试
我们登陆到组中第一台机器,使用下面的命令对 CPU 进行增压,查看超过阈值之后是否会自动启动新的实例。
for i in `seq 1 $(cat /proc/cpuinfo |grep "processor" |wc -l)`; do dd if=/dev/zero of=/dev/null; done &
可以看到,CPU 的负载已经上去了:

我们查看一下事件,发现启动了一台新的实例:

然后我们停掉压力测试,再等待一会查看:

至此我们已经做完这次测试。
趣味玩法
我们可以安装 web 服务,让 ELB 负载到新实例,并给每个实例配置专属的内容,我们选定实例的元数据,在启动时候的时候,我们可以填写下面的启动参数:
#!/bin/bash
yum install nginx -y
systemctl start nginx
curl http://169.254.169.254/latest/meta-data/public-ipv4 > /var/www/html/index.html
http://169.254.169.254/latest/meta-data/ 是实例的元数据信息接口。
http://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
如何使用 AWS Auto Scaling 按需动态增加和减少实例的更多相关文章
- System Operations on AWS - Lab 6W - Using Auto Scaling (Windows)
创建你的一个web server,然后将这个实例制成你的AMI,通过启动配置生成一个Auto Scaling组(包括scale-in/scale-out策略),配置一台Load Balancer指向你 ...
- 详谈LABJS按需动态加载js文件
为了提高页面的打开和加载速度,我们经常把JS文件放在页面的尾部,但是有些JS必须放在页面前面,这样就会增加页面的加载时间:于是出现了按需动态加载的概念,这个概念就是当页面需要用到这个JS文件或者CSS ...
- 按需动态加载js
有些时间我们希望能按需动态加载js文件,而不是直接在HTML中写script标签. 以下为示例代码: var js = document.createElement('script'); js.asy ...
- hdfs以及hbase动态增加和删除节点
一个知乎上的问题:Hbase的Region server和hadoop的datanode是否可以部署在一台服务器上?如果是的话,二者是否是一对一的关系?部署在同一台服务器上,可以减少数据跨网络传输的流 ...
- Silverlight动态生成控件实例
刚学习Silverlight,做了一个动态创建控件的实例 实现结果:根据已有的控件类名称,得到控件的实例化对象 实现思路1:就是定义一个模板文件,将类名做为参数,在silverlight中使用Srea ...
- WPF datagrid 动态增加列
DataGrid动态增加列 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.m ...
- ligerui_ligerTree_005_动态增加“树”节点
动态添加ligerTree节点:效果图: 源码地址:http://download.csdn.net/detail/poiuy1991719/8571255 <%@ page language= ...
- Fabric进阶(三)—— 使用SDK动态增加组织
在fabric网络运行过程中动态追加新的组织是相当复杂的,网上的资料也十分匮乏,大多是基于first-network这样的简单示例,而且是使用启动cli容器的方法来增加组织,几乎没有针对实际应用的解决 ...
- Nginx 动态增加扩展
Nginx 动态增加扩展 1. 先查看目前nginx已加载模块 /home/nginx-1.18.0 # nginx -V nginx version: nginx/1.18.0 built by g ...
随机推荐
- modbus字符串的结束符介绍
Modbus协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它,不同厂商生产的控制设备可以连成工业 ...
- HDU-1028-Ignatius and the Princess III(母函数)
链接: https://vjudge.net/problem/HDU-1028 题意: "Well, it seems the first problem is too easy. I wi ...
- [Angular 8] Custom Route Preloading with ngx-quicklink and Angular
In a previous lesson we learned about implementing a custom preloading strategy. That gives you a lo ...
- 007——转载——C#将字符串转换为整型的三种方法的总结
(一)转载——C#将字符串转换为整型的三种方法的总结 在C#中,要将一个字符串或浮点数转换为整数,基本上有三种方法: (1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32 ...
- 学到了武沛齐讲的Day12-5
字节为8个位为单位 而计算机存储是位为单位储存.(有点意思) 开始老美用的是ascii码(1个字节), utf8: 3字节 gbk : 2字节 目前的用于实用的 Unicode 版本对 ...
- Mongodb 查询优化(慢查询Profiling)
开启慢查询Profiling Profiling级别说明 0:关闭,不收集任何数据. 1:收集慢查询数据,默认是100毫秒. 2:收集所有数据 1.通过修改配置文件开启Profiling 修改启动mo ...
- 坑爹的IE8
1.不能用trim(),要用$.trim() var aa = $("#id").val().trim() 这样素不行的,要变成这样Jquery的方式 var aa = $ ...
- 【概率论】5-2:伯努利和二项分布(The Bernoulli and Binomial Distributions)
title: [概率论]5-2:伯努利和二项分布(The Bernoulli and Binomial Distributions) categories: - Mathematic - Probab ...
- 【原创】go语言学习(十三)struct介绍2
目录: 方法的定义 函数和方法的区别 值类型和指针类型 面向对象和继承 结构体和json序列化 方法的定义 1.和其他语言不一样,Go的方法采⽤用另外一种方式实现. package main impo ...
- Selenium操作Chrome模拟手机浏览器
目录 使用指定设备 使用自定义设备 在使用Chrome浏览网页时,我们可以使用Chrome开发者工具模拟手机浏览器,在使用Selenium操作Chrome时同样也可以模拟手机浏览器.主要有以下两种用途 ...